【问题标题】:snapshotId for resolveConflict in Google Play Saved Games用于 Google Play 保存游戏中的 resolveConflict 的 snapshotId
【发布时间】:2015-12-25 17:21:45
【问题描述】:

如何在 Gogle Play Saved Games 中获取快照 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)

我在Snapshot/SnapshotMetadata/OpenSnapshotResult 接口中找不到像getID()getSnapshotID()这样的方法。

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

【问题讨论】:

    标签: java android google-play-services


    【解决方案1】:

    获取用于解决冲突的快照 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 并不重要。它们是一样的。

    【讨论】:

      【解决方案2】:

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

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

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

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

        { “种类”:“游戏#snapshot”, “id”:字符串, “driveId”:字符串, “唯一名称”:字符串, “类型”:字符串, “标题”:字符串, “描述”:字符串, “封面图片”: { “种类”:“游戏#snapshotImage”, “宽度”:整数, “高度”:整数, “mime_type”:字符串, “网址”:字符串 }, “lastModifiedMillis”:长, “durationMillis”:长 }

      • 与此键关联的 "id" 值将是您要查找的 snapshot_id

      【讨论】:

      • 感谢您的回复,我认为它可能有效,但对我的需求来说太复杂了。所以我决定暂时使用自动冲突解决(RESOLUTION_POLICY_xxx)。我希望 Google 在他们的库的未来版本中添加一个简单方便的 Java 函数,如 getSnapshotId。
      猜你喜欢
      • 2020-06-17
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 2016-08-09
      • 2015-07-10
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多