2

Game Center をサポートするゲームのようなアプリケーションを作成しています。また、プレーヤーが GC に対して正しく認証されているが、スコアを報告したいときにネットワーク (wifi とセルラー) が利用できない場合、リーダーボードにスコアを報告する際に問題があります。

私のアプリは iOS 5.0 以降用であり、ドキュメントによると、ネットワークが利用可能になったときにスコアを再送信する必要があります。私が試したことを説明しましょう:

  • アプリを開いて GC アカウントを認証し、Wi-Fi をオフにしてスコアを報告し、Wi-Fi を開いて 30 分待ちました。その後、リーダーボードを確認しましたが、リーダーボードに更新されたスコアはありません。(多分私はせっかちです.Appleがスコアを再提出することを決定する未定義の時間/間隔のためですか?)

  • アプリを開いてGCアカウントを認証し、アプリを終了し、Wi-Fiをオフにして、アプリを再度開くと、GCアカウントが自動的に認証され、スコアを報告してからWi-Fiを開きましたが、リーダーボードのスコアはまだ更新されていません. (多分私はせっかちです.Appleがスコアを再提出することを決定する未定義の時間/間隔のためですか?)

この再送信に 30 分以上かかる場合は、あまり役に立たないと思いますか? これを克服する方法はありますか?スコアを保存して後で送信すると、GC もスコアを後で再送信するため、これも悪いことでしょうか? (それほど悪くはありませんが、それでも不要です)

この再提出時間に関する文書はありますか? 何も見つかりませんでした...つまり、いつ再送信されますか? アプリが再送信されるまで、アプリと Wi-Fi を開いたままにしておく必要がありますか?

回答ありがとうございます...

4

1 に答える 1

-1

セルラー接続もある場合は、wifi がオンかオフかは関係ありません。GC コードは、利用可能なネットワーク アクセスを使用します。'reportScoreWithCompletionHandler:^(NSError *error)' を呼び出したときにどちらも使用できない場合は、次にネットワークが使用可能になったときにスコアが報告されます。

あなたのコードが機能したかどうかは言いませんでした。よくあるエラーは、コードのリーダーボード ID が iTunesConnect のリーダーボード ID と正確に一致しないことです。それらが一致しない場合、スコアが正常に報告されることはありませんが、問題が何であるかはわかりません。

また、スコアは 64 ビット値である必要があることに注意してください。32 ビット値を報告している可能性があります。

また、ローカル プレーヤーが認証される前にスコアを送信していないことを確認してください。

エラーコードを確認していますか?「reportScoreWithCompletionHandler:^(NSError *error)」から返される「エラー」が NULL でない場合、コードに問題があります。その値は (NULL でない場合) 役に立たないかもしれませんが、少なくとも何かがうまくいかなかったことがわかります。

私の経験では、サンドボックス モードでは、リーダーボードは通常かなり速く (1 分未満) 更新されますが、すぐには更新されません。しかし、サーバーに問題が発生し、更新に数時間かかるか、まったく機能しない日もあります。実稼働 GC サーバーはサンドボックス サーバーよりも信頼性が高く、更新が高速であることを読みました。

価値があるかもしれないのは、スコアを報告するために私が使用しているコードです。それはうまくいくようです:

-(void) submitScore:(int64_t)score category:(NSString *)leaderboardIdentifier {
    if (!!! [GKLocalPlayer localPlayer].authenticated ) {
        CCLOG(@"GKLocalPlayer is not authenticated");
        return;
    }

    GKScore *gkScore = [[[GKScore alloc] initWithCategory:leaderboardIdentifier] autorelease];
    gkScore.value = score;
    [gkScore reportScoreWithCompletionHandler:^(NSError *error) {
        [self setLastError:error];
    }];
}
于 2013-01-18T16:10:29.307 に答える