iOS Game CenterでLeaderboardのScore送信が反映しない


iPhone (iOS5 Beta7)にて、Game Center機能をつけたテストを行っていたのですが、どうしてもLeaderboard(リーダーボード)へのスコア送信が反映されなくて、まる1日たってしまいました。きっと、めちゃめちゃ簡単な事なんだろうな...と思いながらいろいろ試していったところ、原点に戻ったら簡単にスコア送信が反映できるようになりました。

スコア送信方法

GameKitプログラミングガイドと同じ方法です。

http://developer.apple.com/jp/devcenter/ios/library/documentation/GameKit_Guide.pdf

<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">- (void) reportScore: (int64_t) score forCategory: (NSString*) category
</span>{
    GKScore *scoreReporter = [[[GKScore alloc] initWithCategory:category] autorelease];
    scoreReporter.value = score;
    [scoreReporter reportScoreWithCompletionHandler:^(NSError *error) {
        if (error != nil)
        {
            // 報告エラーの処理
        }
    }];
}

ただし、実際はGKTrapperのサンプルコード(iOS Developer Library)より、 GameCenterManager.h と GameCenterManager.m を参考にしたものを使っています。 その他の、Leaderboardを表示する方法なども、GameKitプログラミングガイドと同じです。

障害1:Leaderboardが Now Loading… のままになる

この現象が出たときに、確認すべき事は以下でした。

  1. iTunes Connect にてアプリの登録が済んでいるのか
  2. iTunes Connectで登録したBundleIDをプロジェクトに設定しているか
  3. ルーターがGame Center(Sandbox)に対応しているか
    ルーターにより、Game Centerへアクセスできない事があるようです。しかも、通常のGame Centerへは接続できても、サンドボックス(Sandbox)には接続できないというケースがあり、ややこしい事になっています。この場合、WifiをOFFにして3G回線を使うか、アクセス可能なネットワークへVPNを張る事で回避しました。
  4. Game Centerへのログイン処理が済んでいるのか
    私の場合、これを忘れていました。 GameKitプログラミングガイドにちゃんと書いてあるのですが、すっとばして、Leaderboardの表示処理を見てたのがいけないのですけど...
    ログイン方法は、サンプルコード(GKTrapper)を参考にすると簡単です。

障害2:スコアを送信しても、Leaderboardに反映されない

これに、かなり苦戦しました。どうしてもLeaderboardには、「No Scores」と表示されたままになってしまいました。これについて、確認できる事は以下です。

  1. iTunes Connectで設定したLeaderboard IDを、 GKScoreのinit時に指定するカテゴリ(reportScoreのカテゴリ)に、正確にセットできているか
  2. ログインしているGame Centerのアカウントは、Sandboxで作成したユーザーか
    これが、今回の原因でした。 いったん、Game Centerアプリを起動してサインアウト後、もう一度開発しているアプリを起動してから、Game Center のログイン選択アラートが表示されたときに、「Crate …」を選んで、新たなアカウントを作る事によって、スコアが送信でき、またLeaderboardに反映できるようになりました。
    この際の混乱の原因として、 Sandboxでも、通常のGame Centerアカウントでログインできてしまうという点と、Achievement(アチーブメント)は、反映できるという点があります。

なお、ここで書けたのは、今日試してみて有効そうだった確認内容だけなので、他にも必要な点があると思います。が、ほとんど英語の情報ばかりなので、まだ原因が分からない方は、「ios gamecenter leaderboard no scores」とかで検索して調べてみてください。

ディスカッションに参加

1件のコメント

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。