GameKit でローカル ユーザーを認証する次のコードがあります。診断もクラッシュもありませんが、ハンドラーは使用されず、ローカル ユーザーは認証されません。誰かが理由を言うことができますか?この認証方法は、Cocos2d の Wenderlich ブログに従っています。ANNOUNCE と CCLOG の行はデバッグ用に作成したもので、メソッドが呼び出されたがハンドラーが呼び出されていないことを示しています。冗長に見える BOOL もデバッグによるものです。iOS6 iPhoneでテストしています。このコードは AppDelegate にあります。
-(void) authenticateLocalPlayer {
ANNOUNCE
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error) {
[self setLastError:error];
if ( [CCDirector sharedDirector].isPaused ) [[CCDirector sharedDirector] resume];
CCLOG(@"inside authenticateHandler");
if (localPlayer.authenticated) {
_gameCenterFeaturesEnabled = YES;
X.localPlayerAuthenticated = YES;
} else if (viewController) {
[[CCDirector sharedDirector] pause];
[self presentViewController:viewController];
} else {
_gameCenterFeaturesEnabled = NO;
X.localPlayerAuthenticated = NO;
}
};
CCLOG(@"lastError: %@", self.lastError);
CCLOG(@"localPlayer.authenticated: %d", localPlayer.authenticated);
}