0

问题:onRoomCreated 有 5% 的时间返回 STATUS_NETWORK_ERROR_NO_DATA,原因我们无法弄清楚。

该游戏在大约 16 个月的开发中运行良好(清单或 Google Play 控制台中没有缺少“权限”的问题),但从 Google Play 服务 29 开始(“据称”......它可能不相关),这是不可预测的行为开始了,它阻止了任何进一步的创建房间的尝试(同样错误的 statusCode 再次出现,即使在重新启动游戏之后)。

让它再次工作的唯一方法是在 10-15 分钟后重新启动游戏或重新启动设备(通常有效,但并非总是如此)。

这个问题在 3 个不同的设备上是一样的(这里没有模拟器)。

我们发现这个问题(在 SO 和其他地方)可能与在尝试创建新房间之前不离开房间(RealTimeMultiplayer.leave(...))有关。因此,在尝试创建新房间之前,我们至少要等待“onLeftRoom”结束(加上 3 秒,以防万一)。无济于事。

显然,我们遵循推荐的指导方针:在 onCreate 中实例化 GoogleApiClient,在 onStart 中实例化 .connect,在 onStop 中实例化 .disconnect(即使 .connect 正在进行中)......

另请注意,因为它应该是“NETWORK_ERROR”,所以我们在每次尝试创建房间之前验证 Internet 连接(使用 ping)。

请,如果您有关于此问题的任何信息,或者如果您知道如何让 Google Play 在此 statusCode 之后创建一个房间而不重新启动设备,请告诉我们,因为在那之前我们的发布日期如果永远推迟。非常感谢。

4

1 回答 1

1

[更新 2]:应用程序被重写以停止自动创建房间(因此请求频率较低),并且......没有......仍然是相同的错误/问题/你命名它......一遍又一遍......然后 Google Play 更新了应用程序“Google Play 游戏”(可能还有“服务”),它有点工作:2 周内只有一个 STATUS_NETWORK_ERROR_NO_DATA ......现在我要睡 2 个月,因为我[编辑]。

[更新]:根据这篇文章,STATUS_NETWORK_ERROR_NO_DATA 用于限制请求的频率。因为我们确实自动创建和关闭房间,所以这可能是明确的答案。当它被验证或没有被验证时,我会再次更新。我留下这个答案的其余部分,因为虽然它没有直接关系,但不关闭房间也会导致错误。[更新结束]

这是对这种不可预测的行为的答案(不是来自 SO,但你们中的一些人可能仍然感兴趣):在“onStart”和“onStop”中,必须进行对 Google Play 服务的所有调用/请求(无论是否使用 mGoogleApiClient)在“super.onStart();”之前 和“super.onStop();”。

否则“super.onStop();”之后的内容 将在结束之前被中断(设备的速度和负载会增加一些随机性),这意味着任何对“.leave”打开房间的调用都将失败,然后阻止创建新房间(因此出现 STATUS_NETWORK_ERROR_NO_DATA 错误)。

另请注意,变量 mGoogleApiClient 不应声明为静态,并记得调用“mGoogleApiClient.disconnect();” 在“onStop”中(示例“ButtonClicker”在其他地方推荐时不会这样做)。

于 2016-02-09T15:04:17.207 回答