2

iOS 6を対象としたゲームセンター対応アプリを実装しようとしています。環境に関する情報を提供するために、XCodeバージョンが4.5.2でxcodeがiphoneおよびipadシミュレータバージョン6.0を実行しているmacos10.7.5で作業しています。問題は、ipadまたはiphoneシミュレーターを介してサンドボックスモードでgamecenterに接続できないことですが、iphoneでのテスト中に同じコードが希望どおりに機能します。

Appleの開発者ライブラリにあるgamecenterプログラミングガイドに従い、appdelegateのapplicationDidFInishLaunchingから呼び出されるこのatmを取得しました。

- (void)authenticateLocalUser:(UIViewController *)currentViewController
{

    if (!gameCenterAvailable) return;
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];

    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){

        if (viewController != nil)
        {
            [currentViewController presentViewController:viewController animated:YES completion:nil];

        }
        else if (localPlayer.isAuthenticated)
        {
            NSLog(@"Player authenticated");
        }
        else
        {
            NSLog(@"Player not authenticated");
        }
        NSLog(@"Error: %@",error);
    };
}

以下を出力します。

Error: Error Domain=GKErrorDomain Code=2 "The requested operation has been cancelled."
UserInfo=0x8690510 {NSLocalizedDescription=The requested operation has been cancelled.}

GKSConnSettings: set server: {
        "gk-cdx" = "17.173.254.218:4398";
        "gk-commnat-cohort" = "17.173.254.220:16386";
        "gk-commnat-main0" = "17.173.254.219:16384";
        "gk-commnat-main1" = "17.173.254.219:16385";
    }

私のOSは10.8.2ではありませんが、hostsファイルの修正をすでに試しましたが、役に立ちませんでした。https://devforums.apple.com/thread/168811?tstart=0

考えられる原因は何ですか?

編集:まあ、GKSConnSettingsで始まる出力部分は問題を示さないことがわかりました。これは、インターネットで読んだことから理解したように、ゲームセンターに接続している間の通常の出力です。認証ブロック内に実際のエラーメッセージ(GKErrorDomain = 2 ...)を出力しました。

4

2 に答える 2

1

https://stackoverflow.com/a/8115807/837244からインスピレーションを得て、別のコードでゲームセンターアカウントにログインすることにしました。したがって、viewdidloadでは、通常、次のように呼び出します。

[[GCHelper sharedInstance] authenticateLocalUser:self];

今、私はそれをコメントアウトし、以下のURLスキームを介してゲームセンターにアクセスし、私のアカウントにログインし、その後ログアウトしました。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"gamecenter:"]];

そして最後に、URLコードをコメントアウトし、元のコードを使用して元に戻しました。これで正常に動作します。問題は、ゲームセンターアカウントがすでにシミュレーターに接続されていて、そのすべてのログイン要求を拒否したことだと思います。アップルがエラーメッセージでより明確になることを願っています、そのような単純な問題を修正するのに1ヶ月かかりました、これは他の人に役立つかもしれません。

于 2013-01-27T06:30:37.260 に答える
0

この質問は特定のXcodeおよびiOSシミュレーションバージョンを参照していることは知っていますが、シミュレーターがすでに1つのアカウントにログインしていて、シミュレーターで取得したデータを失ってもかまわない場合(チャンスは小さいですが、わかりません)、設定とデータをリセットするだけです。

[シミュレータ]->[コンテンツと設定のリセット...]に移動します。

...プロンプトが表示されたらアクションを確認します。

これは、iOS 9.xシミュレーターを実行しているXcode7.xには確かに当てはまります。他の誰かが、以前のバージョンに当てはまるかどうかを確認できる可能性があります(特に、かなり古い質問と回答を見つけたため)。

動物451

Necrothreadomancy:+1

于 2016-08-22T06:55:14.730 に答える