Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android web客户端库的云存储?_Android_Google Play Games - Fatal编程技术网

Android web客户端库的云存储?

Android web客户端库的云存储?,android,google-play-games,Android,Google Play Games,我想在3个平台的游戏中使用云存储。例如,你可以在网上玩,然后继续在手机上玩 我正在查看API文档,我只能看到对获取快照的支持。我想创建一个新快照,然后保存它。它展示了如何为手机而不是网络做到这一点 当然,这项服务不会以这种方式限制你。它会破坏用户体验 谢谢, Shaun.在这里,如果不存在,您可以按名称创建savegame: Snapshots.OpenSnapshotResult open = Games.Snapshots.open( mGoogleApiCl

我想在3个平台的游戏中使用云存储。例如,你可以在网上玩,然后继续在手机上玩

我正在查看API文档,我只能看到对获取快照的支持。我想创建一个新快照,然后保存它。它展示了如何为手机而不是网络做到这一点

当然,这项服务不会以这种方式限制你。它会破坏用户体验

谢谢,
Shaun.

在这里,如果不存在,您可以按名称创建savegame:

    Snapshots.OpenSnapshotResult open = Games.Snapshots.open(
            mGoogleApiClient, name, create).await();

    if (!open.getStatus().isSuccess()) {
        throw new RuntimeException("or whatever");
    }

    Snapshot snapshot = open.getSnapshot();
    snapshot.getSnapshotContents().writeBytes(mySaveGame);
create
是一个布尔值,告诉您要在不存在时创建一个新的

name
是savegame的名称


mySaveGame
是要存储的二进制blob。

据我所知,您的示例中可能存在以下情况

  • 玩家在手机上玩,保存游戏,下次在手机上访问游戏
  • 玩家在手机上玩,保存游戏,下次在网络上访问游戏
  • 玩家在网络上玩,保存游戏,下次在手机上访问游戏
  • 在网络上玩的玩家,保存游戏,下次在网络上访问游戏
  • 我假设您的游戏具有复杂的逻辑,需要客户机-服务器实现。鉴于上面的讨论,我假设您希望在Google Play游戏服务中保存游戏(而不是您自己的web服务器)。 在本例中,对于上面的场景1和3,您将检索快照,如eduyano前面的回答所示

      Snapshots.OpenSnapshotResult open = Games.Snapshots.open(
            mGoogleApiClient, name, create).await();
    
    if (!open.getStatus().isSuccess()) {
        throw new RuntimeException("or whatever");
    }
    
    Snapshot snapshot = open.getSnapshot();
    snapshot.getSnapshotContents().writeBytes(mySaveGame);
    
    然而,对于上面的场景2和场景4,您将需要使用RESTAPI服务来实现“Play Games services for Web”

    因此,首先必须发出HTTP请求以获取播放器ID 得到

    随后,您需要知道针对该播放机保存的快照ID。因此,请发出另一个HTTP请求 得到

    对于检索到的快照ID,发出HTTP请求以检索相关快照。它需要授权。此时,将返回与保存的快照相对应的JSON对象

    我希望这有助于。。。我假设您知道在返回JSON对象后如何加载快照。请随时要求进一步澄清


    有关更多详细信息,请参见

    ,不幸的是,您知道没有API可以使用web API编写保存的游戏。如果你想支持网络和手机游戏的保存,你必须自己实现它。一个简单的方法是使用for Google Drive。这允许应用程序将数据存储在播放器驱动器帐户的隐藏目录中。此API也可在Android()甚至iOS()上使用

    由于不使用Play Game服务,您错过的主要是客户端和用户界面上用于选择快照的一些缓存逻辑。如果您消除了缓存逻辑,也就不需要复杂的冲突解决(假设您使用“最后一次写入成功”的方法)

    在高层次上,这些步骤将是:

  • 在Google API控制台上为您想要支持的平台创建一个新的应用程序

  • 在游戏中实现登录(这与通过Play game Services使用保存的游戏相同)

  • 使用正确平台的特定客户端Id访问应用程序的应用程序数据
  • 实现UI以选择现有快照或创建新快照

  • 是的,但是如何通过网络做到这一点呢?我正在使用OpenFL,所以一次就瞄准了所有目标。