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… のままになる
この現象が出たときに、確認すべき事は以下でした。
- iTunes Connect にてアプリの登録が済んでいるのか
- iTunes Connectで登録したBundleIDをプロジェクトに設定しているか
- ルーターがGame Center(Sandbox)に対応しているか
ルーターにより、Game Centerへアクセスできない事があるようです。しかも、通常のGame Centerへは接続できても、サンドボックス(Sandbox)には接続できないというケースがあり、ややこしい事になっています。この場合、WifiをOFFにして3G回線を使うか、アクセス可能なネットワークへVPNを張る事で回避しました。 - Game Centerへのログイン処理が済んでいるのか
私の場合、これを忘れていました。 GameKitプログラミングガイドにちゃんと書いてあるのですが、すっとばして、Leaderboardの表示処理を見てたのがいけないのですけど...
ログイン方法は、サンプルコード(GKTrapper)を参考にすると簡単です。
障害2:スコアを送信しても、Leaderboardに反映されない
これに、かなり苦戦しました。どうしてもLeaderboardには、「No Scores」と表示されたままになってしまいました。これについて、確認できる事は以下です。
- iTunes Connectで設定したLeaderboard IDを、 GKScoreのinit時に指定するカテゴリ(reportScoreのカテゴリ)に、正確にセットできているか
- ログインしているGame Centerのアカウントは、Sandboxで作成したユーザーか
これが、今回の原因でした。 いったん、Game Centerアプリを起動してサインアウト後、もう一度開発しているアプリを起動してから、Game Center のログイン選択アラートが表示されたときに、「Crate …」を選んで、新たなアカウントを作る事によって、スコアが送信でき、またLeaderboardに反映できるようになりました。
この際の混乱の原因として、 Sandboxでも、通常のGame Centerアカウントでログインできてしまうという点と、Achievement(アチーブメント)は、反映できるという点があります。
なお、ここで書けたのは、今日試してみて有効そうだった確認内容だけなので、他にも必要な点があると思います。が、ほとんど英語の情報ばかりなので、まだ原因が分からない方は、「ios gamecenter leaderboard no scores」とかで検索して調べてみてください。
[...] その他についてはこちらのブログ記事が非常に参考になるのでご紹介します。 iOS Game CenterでLeaderboardのScore送信が反映しない « istb16 blog http://istb16.wordpress.com/2011/09/13/ios-game-center_leaderboard_scoresend/ [...]