26

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 を再度設定することで)、ゲーム センターへのログインを強制します。

4

2 に答える 2

0

これは iOS 6.0 では可能だとは思いません。リリース前に削除された初期の SDK ビルドでは、これを行うための API 呼び出しがありました。

WWDC 2012 ビデオ: セッション 516 - ゲームを Game Center と統合する [8:30]authenticateメソッドを呼び出すコードが実際に表示されます。

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticationHandler = //handle the callback...
[localPlayer authenticate];

このメソッドはプライベート API になりましたが、以下を呼び出して動作を確認できます。

[[GKLocalPlayer localPlayer] performSelector:@selector(_authenticate)];

それはあなたが望むことを正確に行いますが、現在は非公開であるため使用できません.


UIApplicationWillEnterForegroundNotification通知を投稿して、認証プロセスをトリガーすることもできます。

[[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationWillEnterForegroundNotification object:[UIApplication sharedApplication]];

ライブコードでこれを行うことはお勧めできません。

于 2013-05-29T07:32:42.993 に答える