便利だけど、ログイン時の許可リクエスト量が多いのが難点。
- Google Play Game Services : Getting Started for Android Game Development の Step 2 に沿って Google Play Services の設定(後で Internal Error が起こらないようにこの辺りに注意)
- 作成したプロジェクトの Google Developers Console で Drive API、Google Play Game Management、Google Play Game Services をオンにする
- GoogleApiClient を作るときは addApi(Games.API).addScope(Games.SCOPE_GAMES) と addApi(Drive.API).addScope(Drive.SCOPE_APPFOLDER) が必要?(コード後述)
- 足りないと実行時に "appropriate api was not requested." というエラーでる
- Games.API を指定するとログイン時に Google+ のプロフィールアクセスのような、ただデータを保存したい、という用途には必要のない許可まで求めてしまうが嫌だけど、削れそうにないか…。
- Google play Developer Console のゲームサービス、「ゲームの詳細」で「保存済みゲーム」をオンにする(Saved Games の訳が保存済みゲーム…?)
- オンにしていないと実行時に "Cannot use snapshots without enabling the 'Saved Game' feature in the Play console" というエラーが出る
- Snapshot 新規作成時に snapshot.readFully() を呼ぶと長さ 0 の byte 配列が返る(null ではないので注意)
- SnapshotMetadataChange の setCoverImage はしなくても大丈夫(デフォルトのコントローラの画像が表示される)
- デバッグのためなどで、一回認証を解除して再度ログイン画面を出すには Google+ のアプリ設定 から接続を解除する
- 他に方法はある?
GoogleApiClient 作成のコード例
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(Bundle bundle) {
Log.i(LOGTAG, "onConnected");
}
@Override
public void onConnectionSuspended(int i) {
Log.w(LOGTAG, "onConnectionSuspended:" + i);
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.e(LOGTAG, "onConnectionFailed:" + connectionResult.toString());
if(connectionResult.hasResolution()) {
try {
connectionResult.startResolutionForResult(MainActivity.this, REQUEST_CODE_GOOGLE_API_CLIENT_RESOLUTION);
} catch (Exception e) {
Log.e(LOGTAG, e.toString());
}
} else{
Log.e(LOGTAG, "hasNoResolution()");
int errorCode = connectionResult.getErrorCode();
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(errorCode, MainActivity.this, REQUEST_CODE_GOOGLE_API_CLIENT_ERROR);
if( dialog != null){
dialog.show();
} else {
Log.e(LOGTAG, "no dialog");
}
}
}
})
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.addApi(Drive.API).addScope(Drive.SCOPE_APPFOLDER)
.build();
mGoogleApiClient.connect();
0 件のコメント:
コメントを投稿