2010-12-13 31 views
1

J'essaie de détecter si l'authentification du lecteur local fonctionne ou non et il semble que je reçois toujours un résultat positif.Game Center localPlayer toujours authentifié

Voici le code que je utilise:

//-------------------------------------------------------------- 
- (void)authenticateLocalPlayer 
{ 
    NSLog(@"Authenticating local player %@ (%d)", ([GKLocalPlayer localPlayer].authenticated? @"YES":@"NO"), [GKLocalPlayer localPlayer].authenticated); 
    if ([GKLocalPlayer localPlayer].authenticated == NO) { 
     [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) { 
      [self callDelegateOnMainThread:@selector(authenticationChanged:) 
            withArg:nil 
            error:error]; 
     }]; 
    } 
} 

//-------------------------------------------------------------- 
- (void)authenticationChanged:(NSError *)error { 
    if (error != nil) { 
     NSLog(@"Error authenticating local player: %@", [error localizedDescription]); 
    } 
    NSLog(@"Authentication changed %@ (%d)", ([GKLocalPlayer localPlayer].authenticated? @"YES":@"NO"), [GKLocalPlayer localPlayer].authenticated); 
} 

Je l'ai testé ce code tout en étant déconnecté du réseau et est ici la sortie de trace:

2010-12-13 13:20:59.799 LittleScreams[954:307] Authenticating local player NO (0) 
2010-12-13 13:21:01.616 LittleScreams[954:307] Error authenticating local player: The Internet connection appears to be offline. 
2010-12-13 13:21:01.621 LittleScreams[954:307] Authentication changed YES (1) 

Il voit clairement que la connexion est déconnecté mais authentifie toujours le joueur! Avez-vous une idée de ce qui passe? Je reçois le même résultat sur l'appareil et dans le simulateur.

TIA

+0

J'ai un problème similaire. Je teste la fonctionnalité de mon Game Center et je voulais voir ce qui se passe en mode avion. Si j'étais connecté au Game Center avant d'entrer dans le mode avion, l'application n'autorisera pas un joueur (bien sûr), mais si je fais un [localPlayer isAuthenticated], j'obtiens un OUI avec l'ID du joueur connecté à Game Center. Avez-vous trouvé une solution à votre problème? – Structurer

Répondre

0

Je pense que vous ne devriez pas appeler authenticationChanged manuellement, jetez un oeil au Guide du jeu Kit de programmation et suivez les étapes, qui ont travaillé pour moi.

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/GameKit_Guide/Users/Users.html

+0

Je ne l'appelle pas en réalité, authentificationChanged est appelée par le gestionnaire d'achèvement. Ce code est basé sur l'exemple GKTapper d'Apple: http://developer.apple.com/library/ios/#samplecode/GKTapper/Introduction/Intro.html – prisonerjohn