我正在实现一个基于BlueTooth和Wifi的iPhone聊天程序。为了连接目的,我使用GameKit。但是由于一些特殊的需求应用程序,我不能使用默认的GKPeerPickerController。因此,我创建了一个GKSession和GKSessionDelegate组合来检测对等点。他们找到对方后,就可以聊天了。
现在,我已经在三个mac-minis上使用simulator、一个模拟器和一个iPod、一个iPhone和一个Simulator测试了聊天功能。我可以在上述所有场景中聊天。但是一些iPhone和iPod是不会互相察觉的。
另外,我对所有这些设备之间正在发生的连接类型感到好奇。因为理论上GameKit同时支持BlueTooth和WiFi。现在的问题是,GKPeerPickerController让我们在BlueTooth和WiFi之间做出具体选择(不幸的是,WiFi的实现在任何地方都没有文档记录)。这很好,但是当您实现自己的GKSession和GKSessionDelegate Combo时,定制场景又如何呢?当您使用唯一可用的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的,对吧?有人能说明到底发生了什么事吗?
您有没有见过有人为WiFi实现GKPeerPickerController接口的示例代码?
解决:
好吧我自己找到的。正如我在问题中提到的那样,GKSession和GKSessionDelegate自定义实现对bluetooth和WiFi都有效。实际上,我使用的iPhone (JailBroked)与BlueTooth有一些问题,这可能妨碍了Gamekit正常工作,在艰难地重新设置手机并关闭Airplane模式之后,bluetooth关闭了几次,bluetooth在手机上工作了几次。现在,该应用程序在WiFi和BlueTooth模式下都运行良好。
发布于 2010-08-02 15:06:01
你知道GKPeerPicker是否有类似的行为吗?我的意思是,如果选择接近模式允许您通过wifi/蓝牙连接?
我怀疑INTERNET模式是使用TCP/IP连接到远程服务器。问候
https://stackoverflow.com/questions/2087556
复制相似问题