GameKit:在没有GKPeerPickerController的情况下使用GKSession时的连接类型是什么

时间:2010-01-18 16:34:09

标签: iphone bluetooth wifi gamekit

我正在为BlueTooth实施基于WifiiPhone的聊天程序。出于连接目的,我使用GameKit。但由于某些特殊要求应用程序,我无法使用默认的GKPeerPickerController。所以我改为创建了一个GKSessionGKSessionDelegate组合来检测对等体。他们找到对方后,可以聊天。

现在,我使用mac-minis,一个模拟器和一个simulator,一个iPod和一个iPhone测试了三个Simulator上的聊天功能。我可以在上述所有场景中聊天。但有些iPhoneiPod不会互相发现。

此外,我很好奇所有这些设备之间正在发生连接类型。因为理论上GameKit同时支持BlueToothWiFi。现在的问题是GKPeerPickerController让我们专门选择BlueToothWiFi,(遗憾的是WiFi的实现没有在任何地方记录。)这很好,但是怎么样呢?当一个人实现他或她自己的GKSessionGKSessionDelegate组合时的自定义方案。当使用唯一可用的GKSession方法创建init对象时:

– initWithSessionID:displayName:sessionMode:

这个提供的配置选项只有sessionMode,但它只有三个选项

   GKSessionModeServer,
   GKSessionModeClient,
   GKSessionModePeer,

其中任何一项都不表示BluetoothWiFi之间的连接选择。

但我已在bluetooth上停用iPod并使用mac-mini对其进行了测试,因此我猜这是使用WiFi。同样在日志中我得到以下行:

DNSServiceRegister callback: Ref=4c3f3d0, Flags=2, ErrorType=0 name=00XGT0H0A..BTChat1 regtype=_0eilkgh5o2mq17._udp. domain=local.

DNSServiceRegisterudp部分让我认为通信正在TCP/IP进行。

这是否意味着,当我从GKSessionGKSessionDelegate开始时,默认的通信方式仅为WiFi,或者是否支持WiFibluetooth同一时间(虽然我从来没有得到BlueTooth连接发生的单一指示)。

GameKit应该主要是关于BlueTooth对吗?有人能说清楚究竟发生了什么事吗?

您是否也看到过有人为GKPeerPickerController实现WiFi接口的示例代码?


解决:

好的,我自己找到了。我在问题中提到的GKSessionGKSessionDelegate自定义实现适用于bluetoothWiFi。实际上我正在使用的iPhone (JailBroked)BlueTooth存在一些问题,可能导致Gamekit无法正常工作,在重置手机并关闭Airplane模式后,{ {1}}关闭了几次bluetooth正在打电话。现在,该应用在bluetoothWiFi模式下运行良好。

1 个答案:

答案 0 :(得分:1)

你知道GKPeerPicker的行为是否类似?我的意思是如果选择NEAR模式允许你通过wifi /蓝牙连接?

我怀疑INTERNET模式是使用TCP / IP连接到远程服务器。 此致