便利だけど、ログイン時の許可リクエスト量が多いのが難点。
- 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 件のコメント:
コメントを投稿