Google Play Saved Games 中 resolveConflict 的 snapshotId
snapshotId for resolveConflict in Google Play Saved Games
如何在 Gogle Play 保存的游戏中获取快照 ID(我使用的是 Android 的 Google Play 服务库的最新版本 27)?
com.google.android.gms.games.snapshot.Snapshots
中有一个方法:
public abstract PendingResult<Snapshots.OpenSnapshotResult> resolveConflict (GoogleApiClient apiClient, String conflictId, String snapshotId, SnapshotMetadataChange metadataChange, SnapshotContents snapshotContents)
我在 Snapshot/SnapshotMetadata/OpenSnapshotResult
接口中找不到像 getID()
或 getSnapshotID()
这样的方法。
文档:
https://developers.google.com/android/reference/com/google/android/gms/games/snapshot/Snapshots
没有直接的方法可以找到快照的snapshot_id,但您可以这样获取:
确定 Player_id(如果其当前经过身份验证的用户,则设置为 me)并发出 GET 请求以检索由创建的快照列表您申请的播放器ID对应的播放器
GET https://www.googleapis.com/games/v1/players/playerId/snapshots
这将 return 项目数组中的 快照资源 。
items 数组将包含以下 JSON 数据:
{
"kind": "games#snapshot",
"id": 字符串,
"driveId": 字符串,
"uniqueName": 字符串,
"type": 字符串,
"title": 字符串,
"description": 字符串,
"coverImage":{
"kind": "games#snapshotImage",
"width":整数,
"height":整数,
"mime_type": 字符串,
"url": 字符串
},
"lastModifiedMillis": 长,
"durationMillis":长
}
与此键关联的 "id" 值将是 snapshot_id你要找的。
获取用于解决冲突的快照 ID 实际上非常简单。只需在您的快照上调用 snapshot.getMetadata().getSnapshotId()
即可。
您的解决代码可能如下所示:
Snapshots.OpenSnapshotResult openSnapshotResult; //Conflicting open result
final SnapshotContents resContent = openSnapshotResult.getResolutionSnapshotContents();
//Make resolution of conflicting snapshot contents
resContent.writeBytes(...);
final Snapshot snapshot = openSnapshotResult.getSnapshot();
final String snapshotID = snapshot.getMetadata().getSnapshotId(); //Here comes your snapshot ID
Games.Snapshots.resolveConflict(PlayClient, openSnapshotResult.getConflictId(), snapshotID, SnapshotMetadataChange.EMPTY_CHANGE, resContent);
不管你拿的是基础快照的Id还是冲突快照的Id都没有关系。他们是一样的。
如何在 Gogle Play 保存的游戏中获取快照 ID(我使用的是 Android 的 Google Play 服务库的最新版本 27)?
com.google.android.gms.games.snapshot.Snapshots
中有一个方法:
public abstract PendingResult<Snapshots.OpenSnapshotResult> resolveConflict (GoogleApiClient apiClient, String conflictId, String snapshotId, SnapshotMetadataChange metadataChange, SnapshotContents snapshotContents)
我在 Snapshot/SnapshotMetadata/OpenSnapshotResult
接口中找不到像 getID()
或 getSnapshotID()
这样的方法。
文档: https://developers.google.com/android/reference/com/google/android/gms/games/snapshot/Snapshots
没有直接的方法可以找到快照的snapshot_id,但您可以这样获取:
确定 Player_id(如果其当前经过身份验证的用户,则设置为 me)并发出 GET 请求以检索由创建的快照列表您申请的播放器ID对应的播放器
GET https://www.googleapis.com/games/v1/players/playerId/snapshots
这将 return 项目数组中的 快照资源 。
items 数组将包含以下 JSON 数据:
{ "kind": "games#snapshot", "id": 字符串, "driveId": 字符串, "uniqueName": 字符串, "type": 字符串, "title": 字符串, "description": 字符串, "coverImage":{ "kind": "games#snapshotImage", "width":整数, "height":整数, "mime_type": 字符串, "url": 字符串 }, "lastModifiedMillis": 长, "durationMillis":长 }
与此键关联的 "id" 值将是 snapshot_id你要找的。
获取用于解决冲突的快照 ID 实际上非常简单。只需在您的快照上调用 snapshot.getMetadata().getSnapshotId()
即可。
您的解决代码可能如下所示:
Snapshots.OpenSnapshotResult openSnapshotResult; //Conflicting open result
final SnapshotContents resContent = openSnapshotResult.getResolutionSnapshotContents();
//Make resolution of conflicting snapshot contents
resContent.writeBytes(...);
final Snapshot snapshot = openSnapshotResult.getSnapshot();
final String snapshotID = snapshot.getMetadata().getSnapshotId(); //Here comes your snapshot ID
Games.Snapshots.resolveConflict(PlayClient, openSnapshotResult.getConflictId(), snapshotID, SnapshotMetadataChange.EMPTY_CHANGE, resContent);
不管你拿的是基础快照的Id还是冲突快照的Id都没有关系。他们是一样的。