iOS 6 で authenticateHandler を使用する場合、ユーザーがログイン ビューをキャンセルすると、ゲーム センターはログイン ビューを表示しません。キャンセルを 3 回試行するとゲーム センターがアプリを自動的にロックアウトすることは認識していますが、これは 2 回の試行について話しているだけです。ログインをキャンセルした場合、authenticateHandler が再度設定されている場合でも、Game Center がログインを提示する前に、アプリを離れて戻ってくる必要があります。iOS 6 でこのケースを処理する方法についてのアイデアはありますか?
古い authenticateWithCompletionHandler メソッドを使用すると問題なく動作します。
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0
GKLocalPlayer.localPlayer.authenticateHandler = authenticateLocalPlayerCompleteExtended;
#else
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:authenticateLocalPlayerComplete];
#endif
これが私のアプリにとって重要な理由は、マルチプレイヤーには Game Center が必要だからです。アプリは起動時にゲーム センターへの認証を試みますが、ユーザーがキャンセルした場合、起動時に再確認することはありません。マルチプレイヤーを選択したときにログインしていない場合は、Game Center のログイン ボタンを表示します。ログイン ボタンは、authenticateWithCompletionHandler を呼び出して (そして、GKLocalPlayer.localPlayer.authenticateHandler を再度設定することで)、ゲーム センターへのログインを強制します。