如何进行CommitBlocking提交? - Google Play游戏服务

时间:2016-06-25 09:18:50

标签: c++11 cocos2d-x google-play-games

我正在使用cocos2d-x为Android做一个小游戏。我目前正努力为我的游戏实施Cloud Save。剩下的唯一问题是它没有提交。

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

//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);
    }
);

在手机上编译并运行时:

    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 个答案:

答案 0 :(得分:0)

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

1)将save保存为在CommitBlocking中使用的std :: vector save的方法只返回一个零大小的向量。

2)Png数据太大,无法被Google Cloud Save接受。

获得1)中所述的方法以返回正确的数据并最小化和松散压缩2)中使用的Png确实解决了问题。