1

iOS で GameKit を使用したターンベースのゲームがあります。通常、Game Center での認証は機能します。私のゲームは機能し、一定期間、動きを前後に送ることができます。ただし、一定ではありませんが比較的頻繁に、Game Center でアクション (たとえば、新しいマッチを見つける) を実行しようとすると、次のエラーで失敗します。

エラー Domain=GKErrorDomain Code=6 「ローカル プレーヤーが認証されていないため、要求された操作を完了できませんでした。」UserInfo={NSLocalizedDescription=ローカル プレーヤーが認証されていないため、要求された操作を完了できませんでした。}

それでも、 GKLocalPlayer.localPlayer().authenticated = true は、エラーが発生する直前と直後の両方です。このエラーが発生した後、認証 viewController が表示されず、認証に依存する GameKit メソッドが機能しなくなります (元に戻りません)。次に、アプリをバックグラウンドに送信してからフォアグラウンドに戻すと、アクションを再試行してもエラーは返されません (新しいログインとパスワードの入力は必要ありません)。

この同様の観察によると:

GKLocalPlayer 認証が機能しないが、isAuthenticated が YES を返す (Game Center サンドボックス)

1.デバイスの日付が正しくない場合、Game Center は認証を完了できません。そのため、先に進み、現在の日付を確認してください。

  1. あなたはこれをしたかもしれません。I trust you - iOS シミュレーター >> コンテンツと設定をリセット"

シミュレーターではなくデバイスでこの問題が発生しており、#2を除外しています。誰かが#1で私を助けてくれますか?ここで私は世間知らずかもしれませんが、私の iPhone と iPad は正しい時刻と日付を持っています。チェックして設定する必要がある何かまたは他の場所はありますか?

では、これが問題でない場合、他に何が問題になる可能性がありますか? 私はiOS9を実行しています。

4

1 に答える 1

1

私もこれを見たことがありますが、Apple には未解決のバグがあります。私の場合、複数の物理デバイスでテストしていますが、これらのデバイスの 1 つだけがこれに遭遇します。その特定のデバイスで、私は個人アカウントを使用して iTunes にログインしていますが、テスト アカウントを使用してゲーム センターにログインしています。

私が見る限り、デバイスがiTunesiCloudおよびgame Centerに同じログインを使用している場合、問題はありません。しかし、必要なテストのためにアカウントを組み合わせようとすると、ランダムにエラー 6 が発生します。

ユーザーがゲームセンターに再ログインする以外に、これから回復する方法はないようです。もちろん、ログイン ビュー コントローラーを再度表示する方法はありません。そのため、ユーザーがゲームを終了して強制終了し、再起動する (ゲーム センターの認証プロセスを再開する) しか方法がありません。ここでエラーをトラップし、Game Center がログアウトしたことを示すメッセージをユーザーに表示し、それに対して何をする必要があるかを説明します。

しかし、私が言ったように、デバイスで資格情報を混同するのをやめたとき、問題はなくなりました.

ところで、少し関連するトピックで、私は .authenticated プロパティを完全に信頼できないものと見なすようになりました。実際に Game Center に接続していない状況では TRUE になります。これについてもバグを開きました。Apple は、これが「キャッシュされた」データを使用することで意図したとおりに機能していると言って、それを閉じました。したがって、認証されていない場合は認証済みと報告され、以前にローカルに保存された古い試合とリーダーボードのデータにのみアクセスできます。

于 2015-10-17T15:48:53.140 に答える