在Game Center中连接的设备之间发送数据时出错



我正在swift 5中开发一款本地多人实时游戏。为了实现实时游戏,我在两个具有GKMatch.sendData(data:, to:, withDataSendingMethod:)功能的设备之间来回发送数据。无论我使用.reliable还是.unreliable,它的工作都相当不一致,但是当它无法发送数据时,它给我的错误是一致的。如下所示:

2020-07-27 21:07:22.433631-0400 Teacher Brawl[19336:5244039] [ViceroyTrace] [ERROR] AGPSessionRecvFrom:1954 0x103f11600 sack: SEARCH FAILURE SERIAL NUMBER (0000000B) FROM (5682ABEE)...

Where Teacher Brawl是项目的名称。

我想知道是否有人能深入了解我为什么会出现这个错误,因为我不完全理解它对swift来说是相对较新的,对GameKit来说也是较新的。我用来发送数据的代码如下所示,只要屏幕上有点击,就会调用它,在这个游戏的上下文中,这是相当小的。如果你需要任何进一步的细节,请告诉我,我很乐意提供。我们非常感谢所有的帮助,因为数据发送的不一致性阻止了我为这款游戏取得的任何进展。:(

func sendButtons(button: String) {
let sendableString: Data? = button.data(using: .utf8)
do {
try localMatch.send(sendableString!, to: localMatch.players, dataMode: .unreliable)
}
catch {
print("")
}


}

作为参考,变量localMatch是我在两个玩家都加入游戏时返回的GKMatch的变量。

此错误消息很常见,不应干扰游戏发送数据。我的应用程序收到此错误,但仍能正常发送数据。

如果要向所有玩家发送数据,则应使用内置函数func sendData(toAllPlayers data: Data, with mode: GKMatch.SendDataMode) throws。如果数据不经常发送,您也应该可靠地发送数据。出于调试原因,您可能希望在发送数据时打印并打印错误。这是您可以尝试的完整代码。

func sendButtons(button: String) {
let sendableString: Data? = button.data(using: .utf8)
do {
try localMatch.sendData(toAllPlayers: sendableString!, with: .reliable)
print("Data sent")
}
catch {
print("Data not sent")
print(error)
}


}

如果数据没有被发送;发送的数据";打印并检查错误

最新更新