Unity Apple Plugin GameKit Error 37 when sending build to app review

I'm using the Apple Unity Plugins to use Game Center to authenticate Playfab accounts for my game and when I test this on testflight, everything works fine for me and the people I've tested with, however, when I send the build to review, they are getting GameKitException 37 which states "This game is not listed in a marketplace that supports Game Center" and upon further research I found this page https://developer.apple.com/documentation/gamekit/gkerror/code/appunlisted which I'm assuming is the same thing.

This seems to suggest that I need my app to be listed on the App Store which is strange because this has created a what comes first, the chicken or the egg problem. I need to pass review to get the game listed in the App Store and they can't test the game because accounts cannot be authenticated with Game Center which apparently needs to be listed on the App Store.

So far, I can't find the reason why this doesn't happen on testflight and only happens when I send it to review. I opened a ticket to Apple Developer Support and haven't recieved a response. I asked app review about it and they replied

"Hello,

Thank you for your response. Since all apps must pass App Review before they can be approved, it should not be necessary to have a "store page".

We look forward to reviewing your app once all issues have been addressed and the new build has been received and queued for review.

Best regards,

App Review"

Which doesn't really help me. I am quite pressed for time and I really need assistance in resolving this issue which I cannot replicate. Has anyone encountered this issue or know how to solve it?

I'm having the exact same problem here. I'm trying to get my game approved for BETA testing but the app was already rejected many times because of this. I believe the reviewers have a weird network setup because for all my test devices the authentication just works fine. After implementing Cloud Diagnostics logging yesterday, this is what I received in my logs:

09:39:34.309 [ERROR]: AuthenticateAsync -> 'Apple.GameKit.GameKitException: Code=3 Domain=GKErrorDomain Description=The requested operation could not be completed due to an error communicating with the server.
  at MyGame.Services.Backend.Impl.PlayFabAuthenticationService.LoginWithGameCenterAsync () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] i

and after they retry to sign in:

09:39:48.325 [ERROR]: AuthenticateAsync -> 'Apple.GameKit.GameKitException: Code=37 Domain=GKErrorDomain Description=This game is not listed in a marketplace that supports Game Center.
  at MyGame.Services.Backend.Impl.PlayFabAuthenticationService.LoginWithGameCenterAsync () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <0000000000000000000000

It's really frustrating that nobody from the App Review team is able to give me some more details than just a screenshot of MY error. I hope this gets resolved somehow.

So after many different changes I bought an asset from the unity asset store. It’s the essentials kit from voxelbusters. They have written their own plugin to wrap the calls to GameKit. Unfortunately, it still doesn’t work on the reviewer devices.

The error messages are at least more detailed:

08:58:04.417 [ERROR]: GameServices_OnAuthStatusChange -> 'System.Exception: Authentication was not successful: Authenticated. Error: Error Domain: Code: 0 Description: Error Domain=GKErrorDomain Code=3 "The requested operation could not be completed due to an error communicating with the server." UserInfo={GKServerStatusCode=5172, NSLocalizedDescription=The requested operation could not be completed due to an error communicating with the server., NSUnderlyingError=0x300fd28e0 {Error Domain=GKServerErrorDomain Code=5172 "status = 5172, Game Center services not supported for apps not listed in App Store" UserInfo={GKServerStatusCode=5172, NSLocalizedFailureReason=status = 5172, Game Center services not supported for apps not listed in App Store}}}'

08:59:50.535 [ERROR]: GameServices_OnServerCredentialsLoaded -> 'System.Exception: Loading server credentials was not successful. Error: Error Domain: Code: 0 Description: Error Domain=GKErrorDomain Code=6 "The requested operation could not be completed because local player has not been authenticated." UserInfo={NSLocalizedDescription=The requested operation could not be completed because local player has not been authenticated.}'

This is the proof that it’s an issue on the Apple servers. I assume that the reviewers are testing against a production environment, but the builds installed via TestFlight are connecting to some kind of pre-prod environment. Even though Apple states that the deprecation of the sandbox with iOS 9 merged those separate instances, this sounds like the most logical explanation (to me).

I also created a code-level support ticket a week ago, but haven’t received any response or status update yet.

Have you had any successes?

So I now got another response from the support (which is even more disappointing):


This error means your app is not listed in the marketplace you are trying to access. This is not something you can remedy at code level in your app, but on AppstoreConnect or the marketplace you are using your app with.

Rico

Software Engineer, Apple Inc.


I'm speechless.

Unity Apple Plugin GameKit Error 37 when sending build to app review
 
 
Q