我正在为BlueTooth
实施基于Wifi
和iPhone
的聊天程序。出于连接目的,我使用GameKit
。但由于某些特殊要求应用程序,我无法使用默认的GKPeerPickerController
。所以我改为创建了一个GKSession
和GKSessionDelegate
组合来检测对等体。他们找到对方后,可以聊天。
现在,我使用mac-minis
,一个模拟器和一个simulator
,一个iPod
和一个iPhone
测试了三个Simulator
上的聊天功能。我可以在上述所有场景中聊天。但有些iPhone
和iPod
不会互相发现。
此外,我很好奇所有这些设备之间正在发生连接类型。因为理论上GameKit
同时支持BlueTooth
和WiFi
。现在的问题是GKPeerPickerController
让我们专门选择BlueTooth
和WiFi
,(遗憾的是WiFi
的实现没有在任何地方记录。)这很好,但是怎么样呢?当一个人实现他或她自己的GKSession
和GKSessionDelegate
组合时的自定义方案。当使用唯一可用的GKSession
方法创建init
对象时:
– initWithSessionID:displayName:sessionMode:
这个提供的配置选项只有sessionMode
,但它只有三个选项
GKSessionModeServer,
GKSessionModeClient,
GKSessionModePeer,
其中任何一项都不表示Bluetooth
和WiFi
之间的连接选择。
但我已在bluetooth
上停用iPod
并使用mac-mini
对其进行了测试,因此我猜这是使用WiFi
。同样在日志中我得到以下行:
DNSServiceRegister callback: Ref=4c3f3d0, Flags=2, ErrorType=0 name=00XGT0H0A..BTChat1 regtype=_0eilkgh5o2mq17._udp. domain=local.
DNSServiceRegister
和udp
部分让我认为通信正在TCP/IP
进行。
这是否意味着,当我从GKSession
和GKSessionDelegate
开始时,默认的通信方式仅为WiFi,或者是否支持WiFi
和bluetooth
同一时间(虽然我从来没有得到BlueTooth
连接发生的单一指示)。
但GameKit
应该主要是关于BlueTooth
对吗?有人能说清楚究竟发生了什么事吗?
您是否也看到过有人为GKPeerPickerController
实现WiFi接口的示例代码?
解决:
好的,我自己找到了。我在问题中提到的GKSession
和GKSessionDelegate
自定义实现适用于bluetooth
和WiFi
。实际上我正在使用的iPhone (JailBroked)
与BlueTooth
存在一些问题,可能导致Gamekit
无法正常工作,在重置手机并关闭Airplane
模式后,{ {1}}关闭了几次bluetooth
正在打电话。现在,该应用在bluetooth
和WiFi
模式下运行良好。
答案 0 :(得分:1)
你知道GKPeerPicker的行为是否类似?我的意思是如果选择NEAR模式允许你通过wifi /蓝牙连接?
我怀疑INTERNET模式是使用TCP / IP连接到远程服务器。 此致