【问题标题】:Google Play Game Services Real Time Multiplayer Room Error STATUS_OPERATION_IN_FLIGHTGoogle Play 游戏服务实时多人房间错误 STATUS_OPERATION_IN_FLIGHT
【发布时间】:2014-03-04 07:51:25
【问题描述】:

我有一个应用程序,它使用 Google Play 游戏服务实时多人游戏来自动匹配玩家。创建房间通常会成功,并且多人游戏会正常工作,除非在尝试创建房间时互联网连接中断。

如果在创建房间时网络中断,我会在 RoomUpdateListener onRoomCreated(...) 中返回 STATUS_REAL_TIME_CONNECTION_FAILED 错误。

我的应用程序在尝试创建另一个房间时卡在了 STATUS_OPERATION_IN_FLIGHT 状态。我需要清除应用程序数据才能从中恢复。

房间的原始创建失败似乎使其处于不良状态,不允许创建另一个房间。除了调用 Games.RealTimeMultiplayer.leave(...) 之外,我没有看到任何取消房间创建的方法,这需要一个我没有的房间 ID,因为房间创建从未成功。


这是我设置 RoomConfig 的方式:

final Bundle autoMatchBundle = RoomConfig.createAutoMatchCriteria(1, 1, 0);

final RoomConfig.Builder roomConfigBuilder = RoomConfig.builder(roomUpdateListener);
roomConfigBuilder.setMessageReceivedListener(realTimeMessageReceivedListener);
roomConfigBuilder.setRoomStatusUpdateListener(roomStatusUpdateListener);
roomConfigBuilder.setAutoMatchCriteria(autoMatchBundle);

roomConfig = roomConfigBuilder.build();

这是我创建房间的方式:

Games.RealTimeMultiplayer.create(googleApiClient, roomConfig);

解决方案:进入此状态时,我重新连接了 googleApiClient。

我在 RoomUpdateListener onRoomConnected 实现中执行以下操作:

@Override
public void onRoomCreated(final int statusCode, final Room room) {
  if (statusCode != GamesClient.STATUS_OK) {
    if (statusCode == GamesClient.STATUS_OPERATION_IN_FLIGHT) {
      googleApiClient.reconnect();
    }

    // OMITTED ERROR CASE CODE

    return;
  }

  // OMITTED SUCCESS CASE CODE

}

我仍然不确定为什么它会卡在这个状态。

【问题讨论】:

  • 出于好奇,onRoomCreated 被调用了吗?
  • 另外,文档说 当前游戏连接到房间的生命周期与这个 GoogleApiClient 的生命周期有关。 所以也许你必须重启你的GoogleApiClient
  • 谢谢@Clay!您的评论使我找到了解决方案。把它写成答案,我会接受的。

标签: java android google-play-services google-play-games


【解决方案1】:

文档说当前游戏连接到房间的生命周期绑定到这个 GoogleApiClient 的生命周期。所以也许你必须重启你的GoogleApiClient

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2014-09-17
    • 2014-09-17
    • 1970-01-01
    相关资源
    最近更新 更多