タイトルの通り、iPhoneアプリでleaderboard等、
ランキング機能を使っていたのですが、いくらやっても、
何故か自分のスコアしか反映されない。
いくら施行錯誤しても、だめでした。
sandboxユーザー でやったり、TestFlightユーザー でやったり、
ユーザーを何度も作り直したり、
debugやreleaseが問題なのかなと思ったたり、
一行に1ユーザーの情報だけしか表示されない、、
何が原因なんだー、、半日まっても駄目。。。
開発備忘録
出来合いのスコアボードを自分のアプリデザインに合わせた形で表示したかったので、
GameCenterのスコアを取得し好きな方法で使ってみた。
var leaderboardRequest: GKLeaderboard = GKLeaderboard()
leaderboardRequest.playerScope = .Global
leaderboardRequest.timeScope = .Today
leaderboardRequest.identifier = "itunes connectで指定したleaderboardID"
leaderboardRequest.range = NSMakeRange(1, 10)
// Request
leaderboardRequest.loadScoresWithCompletionHandler{ (scores, error) -> Void in
if error != nil
{
println("Error \(error))")
}
else if scores != nil
{
println("leaderboards \(scores)") // scoresという情報に配列で格納されている
}
}
scoresは、GKScoreという型で配列で入っているので、
TableViewのデータとして使う事も柔軟に対応できました!
デバッグログを確認すればわかりますが、
println("\(scores.player.alias)") // プレイヤー名
println("\(scores.value)") // スコア
上記のように、プレイヤーの名前や、スコアを取得できます。
参考にさせて頂いたサイト
http://iorisomo.hatenablog.com/entry/2014/04/09/193007
http://stackoverflow.com/questions/28519503/gkleaderboard-localplayerscore-returns-nil-on-ios-8-1-3
twitterのAPIを利用する時によく使うxmlでの取得対策用にメモ。
PHPでこんな感じでかいてます。
<?php try{ $xml = simplexml_load_file($url); if(!$xml){ throw new Exception("XMLを取得できせん"); } }catch(Exception $e){ echo $e->getMessage(); } ?>
アンドロイドアプリでgooglemapなどAPIを利用して、他への通信をする場合は、
あらかじめ、AndroidManifest.xmlに下記のように通信機能のパーミッションを追加する必要がある。
[xml]
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
[/xml]