GameCenter authenticate:GKErrorDomain Code=2 "The requested operation has been cancelled."
2228 ワード
GameCenterのログインauthencitateをテストします.ログイン方法は以下の通りです.
GameCenterを使用してシミュレータ上で正常に動作し、ホスト上で初めてログインしたときにNSErrorエラーメッセージが表示されました.
通常のログインでは、Apple IDがデフォルトでログインしている場合は、XXを歓迎するインタフェースがポップアップされます
最初のログインでは、GameCenterがAppleIDにログインするプロンプトボックスがポップアップされます
localPlayer.authenticated値falseはログインに失敗したことを示していますが、私のAppleIDはすでにログインしており、通常は失敗すべきではありません.
最後にstackoverflow上の兄弟たちの方法で問題を解決したのは、ログイン関数とシミュレータ上の関数がバインドされているためかもしれない.の原因はあまり重要ではなく、重要な解決策です.
ViewLoadで次の関数を呼び出します.
APPIDを登録して
log outログアウト上のコードをプログラムから削除
もう一度本物でプログラムをデバッグすればいいです.
解決策リファレンス:stackoverflow
GameCenterへのログインには注意が必要です.
1.ios6.0以降は手動でauthenticateHandlerを設定する必要があります.a u t h e nticateWithCompletionHandler:すでに6.0で廃棄されています.
2.authenticationHandler最初のパラメータviewController AppleIDが登録されていない場合は手動で「GameCenterにログイン」画面を表示する必要があります.また、ロジックの一時停止に注意する必要があります.
authenticationHandlerを設定し、プレイヤーの検証を要求すると.
appがforeground(フロント)に入ると.
ログイン時には、例えばプレイヤーがゲームに入る前にログインしていない場合、ログインインタフェースがポップアップされ、このインタフェースの任意のインタラクションでauthenticationHandlerが呼び出されます.
-(void) authenticateLocalPlayer {
GKLocalPlayer* localPlayer =
[GKLocalPlayer localPlayer];
localPlayer.authenticateHandler =
^(UIViewController *viewController,
NSError *error) {
[self setLastError:error];
if (CCDirector::sharedDirector()->isPaused()) {
CCDirector::sharedDirector()->resume();
}
// Player already authenticated
if (localPlayer.authenticated) {
_gameCenterFeaturesEnabled = YES;
} else if(viewController) {
CCDirector::sharedDirector()->pause();
[self presentViewController:viewController];
} else {
_gameCenterFeaturesEnabled = NO;
}
};
}
GameCenterを使用してシミュレータ上で正常に動作し、ホスト上で初めてログインしたときにNSErrorエラーメッセージが表示されました.
GKErrorDomain Code=2 "The requested operation has been cancelled."
通常のログインでは、Apple IDがデフォルトでログインしている場合は、XXを歓迎するインタフェースがポップアップされます
最初のログインでは、GameCenterがAppleIDにログインするプロンプトボックスがポップアップされます
localPlayer.authenticated値falseはログインに失敗したことを示していますが、私のAppleIDはすでにログインしており、通常は失敗すべきではありません.
最後にstackoverflow上の兄弟たちの方法で問題を解決したのは、ログイン関数とシミュレータ上の関数がバインドされているためかもしれない.の原因はあまり重要ではなく、重要な解決策です.
ViewLoadで次の関数を呼び出します.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"gamecenter:"]];
APPIDを登録して
log outログアウト上のコードをプログラムから削除
もう一度本物でプログラムをデバッグすればいいです.
解決策リファレンス:stackoverflow
GameCenterへのログインには注意が必要です.
1.ios6.0以降は手動でauthenticateHandlerを設定する必要があります.a u t h e nticateWithCompletionHandler:すでに6.0で廃棄されています.
2.authenticationHandler最初のパラメータviewController AppleIDが登録されていない場合は手動で「GameCenterにログイン」画面を表示する必要があります.また、ロジックの一時停止に注意する必要があります.
localPlayer.authenticateHandler =
^(UIViewController *viewController,
NSError *error)
3.このログインblock関数は、3つの場合に呼び出されます.authenticationHandlerを設定し、プレイヤーの検証を要求すると.
appがforeground(フロント)に入ると.
ログイン時には、例えばプレイヤーがゲームに入る前にログインしていない場合、ログインインタフェースがポップアップされ、このインタフェースの任意のインタラクションでauthenticationHandlerが呼び出されます.