これが私の状況です:
1) ユーザーが初めて私のアプリケーションを開きます。私はすぐに authenticateLocalUser を呼び出して、Game Center にログインしようとしました。[ログイン]、[アカウントの作成]、および [キャンセル] ボタンを含むポップアップが正常に表示されます。
2) ユーザーは今すぐログインしたくないので、[キャンセル] をクリックします。(彼らが「キャンセル」をクリックしたのはこれで 3 回目ではなく、「ゲーム センターが無効になっています。有効にするには、ゲーム センター アプリからログインしてください」というメッセージが表示されません。) ユーザーは、通常どおりアプリを使用し続けることができます。
3) ユーザーは後で Game Center を使用したいので、私が提供したボタンをクリックして Game Center にログインします。私は再びauthenticateLocalUserを呼び出します。今回は、ポップアップは表示されません。実際には、次のコンソール ログ メッセージが表示される以外は何も起こりません。
2012-04-26 08:38:42.861 Clink[332:707] authenticateWithCompletionHandler: enter
2012-04-26 08:38:42.863 Clink[332:707] authenticateWithCompletionHandler: exit
4) 私は、authenticateLocalUser を再度呼び出すボタンをすぐに押すことと、そうする前にかなりの時間待機することの両方をテストしました。authenticateLocalUser を再度呼び出しても、何も表示されず、関数から次のエラーが発生します。
Error Domain=GKErrorDomain Code=7 "The requested operation could not be completed because local player is already authenticating."
そのため、ステップ 3 で authenticateLocalUser を呼び出したときに、Game Center に認証を求めていますが、ハングアップしており、要求に応答していません。次に、手順 4 で再試行すると、既に認証を試みているため、要求を処理できないことが示されます。しかし、ステップ 3 のリクエストからの応答を最大 10 分待ったのに、Game Center から応答がありません。
これは私の authenticateLocalUser 関数の内容です。私が思い出す限り、Apple のサンプル コードからダウンロードしたバージョンから変更していません。
- (void) authenticateLocalUser
{
if([GKLocalPlayer localPlayer].authenticated == NO)
{
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error)
{
[self callDelegateOnMainThread: @selector(processGameCenterAuth:) withArg: NULL error: error];
}];
}
}
他の誰かが以前にこの問題に遭遇したことがありますか、または何が起こっているのかについて何か考えがありますか? 私はしばらくこれを見てきましたが、何が起こっているのかよくわかりません。
前もって感謝します!!