如何使 CommitBlocking 提交? -- Google 玩游戏服务

How to make CommitBlocking commit ? -- Google Play Game Services

我正在用 cocos2d-x 玩 android 的小游戏。我目前正在努力为我的游戏实施云保存。剩下的唯一问题是它没有提交。

我用的GPGS API是C++。只需向下滚动到那里的 commitblocking。

//using sample codes from Google.
game_services->Snapshots().Open
(
    "some_save_file",
    gpg::SnapshotConflictPolicy::MANUAL,
    [this, &save](gpg::SnapshotManager::OpenResponse const& response)
    {
        LOGI("Saving snapshot");
        if(gpg::IsSuccess(response.status))
        {
            LOGI("Open success");
            gpg::SnapshotMetadata metadata = response.data;
            if (response.conflict_id != "")
            {
                //Conflict detected
                //Settle conflict
            }

            LOGI("Getting PNG data");
            //get cover image data
            //some code to get png data in to png_vector

            LOGI("Building snapshot builder");
            //setting up the builder
            gpg::SnapshotMetadataChange::Builder builder;
            gpg::SnapshotMetadataChange metadata_change =
                    builder
                    .SetDescription("Recall Save File")
                    .SetCoverImageFromPngData(png_vector)
                    .Create();

          LOGI("Commiting");
          // Save the snapshot.
          // This is the part that does not work !!!!!
          gpg::SnapshotManager::CommitResponse commitResponse =
              game_services->Snapshots().CommitBlocking(gpg::Timeout(3000), response.data, metadata_change, save);

          if (IsSuccess(commitResponse.status))
            CSH_LOGI("Saved game");
          else
            CSH_LOGI("Saved game failed error: %d", commitResponse.status);
    }
);

编译时 运行 在 phone 上:

    06-25 16:51:47.405: V/GamesNativeSDK(10717): Snapshot was not committed, discarding.
    06-25 16:51:47.410: V/GamesNativeSDK(10717): Snapshot discard complete.

我曾尝试使用 Commit(),这会使游戏崩溃,而 CommitBlocking() 没有超时,它也不会提交。

我花了将近一周的时间查看文档和示例来解决这个问题。那么,以前有人遇到过这个问题吗?如果是,请与我分享解决方法。

谢谢。

好的,有一些奇怪的错误。

1)一种方法 return 另存为 std::vector 仅在 CommitBlocking 中使用 return 一个大小为零的向量。

2)PNG数据太大,无法被Google云存档接受。

按照1)中所述的方法return修正数据并最小化和松散压缩2)中使用的Png确实解决了问题。