用于Google Play已保存游戏中的resolveConflict的snapshotId

时间:2015-09-28 12:51:22

标签: java android google-play-services

如何在Gogle Play保存的游戏中获取快照ID(我使用的是适用于Android的Google Play Services Library的最新版本27)?

com.google.android.gms.games.snapshot.Snapshots中有一种方法:

public abstract PendingResult<Snapshots.OpenSnapshotResult> resolveConflict (GoogleApiClient apiClient, String conflictId, String snapshotId, SnapshotMetadataChange metadataChange, SnapshotContents snapshotContents)

我在getID()接口中找不到getSnapshotID()Snapshot/SnapshotMetadata/OpenSnapshotResult等方法。

文档: https://developers.google.com/android/reference/com/google/android/gms/games/snapshot/Snapshots

2 个答案:

答案 0 :(得分:2)

获取冲突解决的快照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或冲突的快照,这无所谓。他们是一样的。

答案 1 :(得分:-1)

没有直接的方法可以找到快照的 snapshot_id ,但您可以这样做:

  • 确定Player_id(如果当前经过身份验证的用户,则设置为 me )并发出GET请求,以检索应用程序为与玩家ID对应的播放器创建的快照列表。

    GET https://www.googleapis.com/games/v1/players/playerId/snapshots
    
  • 这将返回items数组中的 快照资源

  • items数组将包含以下JSON数据:

    {   “善意”:“游戏#swapshot”,   “id”:字符串,   “driveId”:string,   “uniqueName”:字符串,   “type”:字符串,   “title”:字符串,   “description”:字符串,   “封面图片”: {     “善意”:“游戏#snapshotImage”,     “width”:整数,     “height”:整数,     “mime_type”:字符串,     “url”:字符串   },   “lastModifiedMillis”:很久了,   “durationMillis”:很长 }

  • 与此密钥相关联的“id”值将是您要查找的 snapshot_id

相关问题