0

我正在编写多人游戏,并认为我会创建两个 GKSession 实例。一个会话设置为 GKSessionModeServer,另一个会话设置为 GKSessionModeClient。当我在客户端节点上调用 peersWithConnectionState: 并且每个会话都有不同的节点 ID 时,服务器会正​​确报告。但是当我尝试连接到服务器时,我收到消息 session:connectionWithPeerFailed:withError: 错误描述为“挂起传出邀请时失败。”。

当 Wi-Fi 可用时,可以使用两个 GKSession。我担心蓝牙有一些限制不允许这样做,但我不确定。我可以重写代码以在服务器上使用单个 GKSession,但如果我知道其他人让它与两个实例一起工作,我宁愿不编写特殊情况。

如果我同时关闭 Wi-Fi 和蓝牙,我会收到错误消息“网络不可用”。如果任何一个打开,我都不会得到。这让我相信当附近有另一部 iPhone 时它​​也不会工作。

4

1 回答 1

2

我重写了代码,所以我只在托管设备上创建了一个 GKSession,并直接在服务器和本地客户端之间发送数据,而不使用 GKSession。我终于可以用两台设备进行测试,它们可以正确地相互连接。所以教训是主机上只有一个 GKSession,它将与蓝牙和 Wi-Fi 一起工作。

于 2011-10-14T13:29:42.087 回答