Game Center-Einladungen werden nicht angezeigt

Ich habe ein Spiel entwickelt, das Multiplayer-Matches ermöglicht. Ich hatte zuvor die Multiplayer-Einladungen getestet und sie hatten alle funktioniert. Das Senden einer Anfrage von einem Gerät zeigte ein Banner auf dem anderen und wenn die Einladung angenommen wurde, wurde das Spiel gestartet.

Kurz vor dem Einreichen der App vor zwei Nächten habe ich diese Funktion erneut getestet und festgestellt, dass sie nicht mehr funktioniert.

- (void)authenticateLocalUser:(UIViewController *)viewController :(id<GCHelperDelegate>)theDelegate
{ 
    delegate = theDelegate;
    self.presentingViewController = viewController;

    if (!gameCenterAvailable) {
        // Game Center is not available. 
        userAuthenticated = FALSE;
    } 
    else{
        GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

        /*
         The authenticateWithCompletionHandler method is like all completion handler methods and runs a block
         of code after completing its task. The difference with this method is that it does not release the 
         completion handler after calling it. Whenever your application returns to the foreground after 
         running in the background, Game Kit re-authenticates the user and calls the retained completion 
         handler. This means the authenticateWithCompletionHandler: method only needs to be called once each 
         time your application is launched. This is the reason the sample authenticates in the application 
         delegate's application:didFinishLaunchingWithOptions: method instead of in the view controller's 
         viewDidLoad method.

         Remember this call returns immediately, before the user is authenticated. This is because it uses 
         Grand Central Dispatch to call the block asynchronously once authentication completes.
         */

        //ios 6
        [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) {
            if (viewcontroller != nil){
                userAuthenticated = FALSE;
                [self.presentingViewController presentViewController: viewcontroller animated: YES completion:nil];
            }
            else if (localPlayer.isAuthenticated){
                // Enable Game Center Functionality
                userAuthenticated = TRUE;


                [self checkForInvite:self.presentingViewController :delegate];

                if (! self.currentPlayerID || ! [self.currentPlayerID isEqualToString:localPlayer.playerID]) {

                    // Current playerID has changed. Create/Load a game state around the new user.
                    self.currentPlayerID = localPlayer.playerID;

                    // get friends of local player
                    [localPlayer loadFriendsWithCompletionHandler:^(NSArray *friends, NSError *error) {
                        if (friends != nil)
                        {
                            [self loadPlayerData: friends];
                        }
                    }];
                }
            }
            else{
                userAuthenticated = FALSE;
            }
            [scoreHandler setGameCentreAvailable:userAuthenticated];
        })];
    }
}


- (void)checkForInvite :(UIViewController *)viewController :(id<GCHelperDelegate>)theDelegate
{
    delegate = theDelegate;
    self.presentingViewController = viewController;
    NSLog(@"Invite handler installed");

    [GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {

        // Insert application-specific code here to clean up any games in progress. 
        if (acceptedInvite){
            NSLog(@"Accepted");
            GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite] autorelease];
            mmvc.matchmakerDelegate = self;
            [viewController presentViewController: mmvc animated: YES completion:nil];

        } else if (playersToInvite) {
            NSLog(@"Match Request");
            GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
            request.minPlayers = 2; 
            request.maxPlayers = 2; 
            request.playersToInvite = playersToInvite;
            GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
            mmvc.matchmakerDelegate = self;
            [viewController presentViewController: mmvc animated: YES completion:nil];
        }
    };
}

Das Debug-Fenster in xcode zeigt Folgendes:

2013-03-27 18:06:20.112 MyApp[791:907] Authentication changed: player authenticated.
2013-03-27 18:06:21.219 MyApp[791:907] Invite handler installed
Mar 27 18:06:21 Neils-iPhone MyApp[791] <Notice>: 18:06:21.356712 com.apple.GameKitServices: -[GKDiscoveryManager startAdvertisingLocalPlayer:discoveryInfo:]: I am [<nil>] [7989F444CF2BDA83] discoveryInfo [{
        e = 2;
        h = A42FD7FD;
    }]

Ist das "Ich bin [] ..." in den obigen Zeilen von Bedeutung?

Ich habe sogar das Tutorial von Ray Wenderlichs Website heruntergeladen und ausgeführt, um ein Multiplayer-Spiel zu erstellen, und das ausprobiert. Das weist die gleichen Probleme auf, es sei denn, es wird auf beiden Geräten im Vordergrund ausgeführt. Meine App zeigt keine Einladungsanfragen an, auch wenn sie im Vordergrund ausgeführt wird.

Hat jemand anderes dieses Problem erlebt oder haben irgendwelche Ideen, was los ist? authenticateLocalUser wird von applicationDidFinishLaunching aufgerufen

Antworten auf die Frage(1)

Ihre Antwort auf die Frage