I am able to start a 2-player match between the IOS simluator and my connected iPhone. The IOS simulator starts hunting for a two player game using the GameKit Matchmaker View Controller and the iPhone requests a two-player match by entering my game application as well. Of course, the IOS simulator and my iPhone are using separate Game Center accounts to make this possible.
I now want to test sending a true "Invite" request from the IOS simulator to the iPhone. When requesting a match in the IOS simulator, I can see my iPhone "user" is listed under the "Recently Played" section of the GameKit Matchmaker View Controller display window, after clicking the "Invite Player" button of course. When I select my iPhone "user" and then select "Play Now", my iPhone never receives an Invite request because the IOS simulator generates the following error:
GKMatchmaker: invitePlayersWithRequest: - Error Inviting Players Error Domain=GKErrorDomain Code=3 "The requested operation could not be completed due to an error communicating with the server."
UserInfo=GKServerStatusCode=5008, NSLocalizedDescription=The requested operation could not be completed due to an error communicating with the server., NSUnderlyingError=0x600002761c20 Error Domain=GKServerErrorDomain Code=5008 "status = 5008, missing required key: self-push-token" UserInfo={GKServerStatusCode=5008, NSLocalizedFailureReason=status = 5008, missing required key: self-push-token
Can the IOS simulator be used to Invite iPhone users? If so, what does the error mean and how can I fix it?
Does my iPhone have to be inside my game application to make this work ... I hope not.
In answer to your question:
"How does someone test player "Invites" before releasing the application into the App Store?"
You load one iPhone with the app using Xcode and you disconect it. You then load another iPhone with the app using Xcode and you either leave it connected (and debugging) or you disconnect it. The two iPhones can send (and receive) notifications to (from) each other
Alternatively you use TestFlight.