Google の Game Service を実装した時に参考にしたサイトをまとめました。
また、実装までに参考にしたサイト、サンプルの紹介もします。
今回は、
・Google Developer Console にて Game を設定。
・初期設定
・サインイン
・スコアの送信
・Leaderboards
・その他
を実装しました。
■ サンプルソースのチェック
・まずは、仕様の確認も兼ねてサンプルソースの確認をお勧めします。
・利用したい機能を抜粋して利用しました。
・せっかくなので、 GameHelper を改造して利用しました。
・サンプルソースは Game Service に特化したソースなのと、
量は多くないので一読すると実装方法、仕様がスムーズに理解出来ます。
また、GameHelper を改造して自分の環境にあったソースにすることをお勧めしますので、
一読 → 改造をお勧めします。
英語のドキュメント
https://developers.google.com/games/services/android/quickstart
Google Play Gameのサンプルを動かす
http://qiita.com/items/93b928581534040b167a
■ Google Developer Console にて Game を設定。
・iOS にてゲームセンターを利用したことがあったのでドキュメントを参照しなくても
なんとなく設定できました。
・Achievements に関しては、5個以上登録しないとリリースできませんので、
今回は利用しないのですが、適当に5個作成しました、ちなみに実装、またリリース後に
Achievements を利用していませんが、特に問題は無さそうです。ただ、設定で非表示に
しないと恐らくユーザに見られてしまうので、非表示で設定しました。
・リリース後に設定を変更できない項目もありますので注意して下さい。できない項目には
鍵のマークがあります。
・Google Apis Access の認証をしてください。
ここで、Certificate fingerprint (SHA1): の設定に関しては、.keystore と
合わせて下さい。
・また、はじめて Google Apis を利用する場合は、下記にアクセスして初利用の承認をしてください。
https://code.google.com/apis/console
承認をしないと連携の処理でうまくいきませんでした。
英語のドキュメント
https://developers.google.com/games/services/console/enabling
■ 初期設定
・ほぼサンプルを利用しました。
英語のドキュメント
https://developers.google.com/games/services/android/init
■ サインイン
・自動サインインを利用したかったので、下記のように onCreate にて
自動でサインインを呼ぶように実装しました。
・開発時(未公開の場合)はログインできませんのでテストユーザを登録してください。
後で説明します。
@Override
protected void onCreate(Bundle b) {
super.onCreate(b);
mHelper = new GameHelper(this);
mHelper.setup(this, mRequestedClients);
mHelper.beginUserInitiatedSignIn();
}
■ スコアの送信
mGamesClient.submitScore(LEADERBOARD_ID, 1337);
英語のドキュメント
https://developers.google.com/games/services/android/leaderboards
■ Leaderboards
startActivityForResult(mGamesClient.getLeaderboardIntent(LEADERBOARD_ID), REQUEST_LEADERBOARD);
英語のドキュメント
https://developers.google.com/games/services/android/leaderboards
■ その他
・テストユーザの登録をしないとリリース前だとうまくログインできません。
英語のドキュメント
https://developers.google.com/games/services/console/testpub#enabling_accounts_for_testing
・下記のエラーが発生した場合、
Unable to sign in – application does not have a registered client ID
http://stackoverflow.com/questions/16580885/google-play-game-services-unable-to-sign-in?utm_source=feedburner&utm_medium=email&utm_campaign=Feed%3A+stackoverflow%2FOxiZ+(%5Bandroid+questions%5D)
つまり、Google Apis の Certificate fingerprint (SHA1): と .keystore が一致してない可能性が高い。
・Google+ のガイドライン
画像の規定、画像のサプルなど
英語のドキュメント
https://developers.google.com/+/branding-guidelines?hl=ja#sign-in-button
・AndroidManifest.xml にて下記をお忘れなく。
<meta-data android:name=”com.google.android.gms.games.APP_ID”
android:value=”@string/app_id” />
・res/values/ids.xml を設定してください。
apk の作成時に values-ja にids.xml がないとの Lint のエラーが発生しました。
多分、Lint で ja は利用しないとの設定をすると思うのですが、
今回は、急いでいたので、ja にもコピーして対応しました。