GameKit (GKSession) : GKSession 决定使用 Wifi 或蓝牙时是不是有优先顺序(如果两者都可用)

Posted

技术标签:

【中文标题】GameKit (GKSession) : GKSession 决定使用 Wifi 或蓝牙时是不是有优先顺序(如果两者都可用)【英文标题】:GameKit (GKSession) : Is there a priority order when GKSession decides to use Wifi or Bluetooth (if both are available)GameKit (GKSession) : GKSession 决定使用 Wifi 或蓝牙时是否有优先顺序(如果两者都可用) 【发布时间】:2012-02-15 12:12:25 【问题描述】:

如果我有两个 ios 设备,它们都在同一个 WiFi 网络上并且都打开了蓝牙,并且我使用 GameKit(特别是 GKSession)手动设置它们之间的通信通道(不使用 GKPeerPickerController),我无法判断它是否是使用 WiFi 或蓝牙。

iOS 是否优先考虑其中一个?我希望它在蓝牙之前使用 Wifi,但我想确定一下。

如果 WiFi 可用而蓝牙不可用,则使用 Wifi,如果蓝牙可用且 Wifi 不可用,则使用蓝牙。我想知道如果蓝牙和 WiFi 都可用,他们会怎么说话,GameKit 会选择哪个?

我能看到的唯一方法是在我的 WiFi 上运行数据包嗅探器并在不同设备上运行多个测试。有点希望有人可以节省我的努力!

谢谢:-)

【问题讨论】:

【参考方案1】:

根据 Apple 的 documentation,如果您使用 GKPeerPickerController 创建您的 GKSession,您将能够选择蓝牙或 wifi 连接(请参阅 GKPeerPickerConnectionType)。

我希望它在蓝牙之前使用 Wifi,但我想确定一下。

seems 互联网连接需要一些用户代码(但不需要蓝牙),所以我它默认为蓝牙以避免强制要求。

【讨论】:

抱歉,我想澄清一下我没有使用 GKPeerPickerController。目前我有两个设备使用 GKSession 相互连接,如果我关闭它们的 wifi,它们仍然连接(我假设是通过蓝牙)。如果我关闭它们的蓝牙,它们仍然可以连接(我假设是通过 wifi)。我只是想知道当他们可以使用蓝牙和 wifi 时他们是如何连接的? GKPeerPickerController 不适合我需要做的事情。 第二个链接让我觉得它是蓝牙 - 但您可以使用 Wireshark 查看无线流量(来自另一台计算机)并确定是否正在使用 Wifi。

以上是关于GameKit (GKSession) : GKSession 决定使用 Wifi 或蓝牙时是不是有优先顺序(如果两者都可用)的主要内容,如果未能解决你的问题,请参考以下文章

GKSession displayNameForPeer 防止释放会话(iOS 4.0、4.1)

iPhone GameKit:客户端检测其他客户端

多点连接 - 以编程方式断开对等点

2.OC蓝牙功能

使用 gameKit 框架连接多个设备

GameKit蓝牙传输问题