使用GKPeerPickerController连接两个设备

时间:2011-01-20 08:41:47

标签: iphone objective-c gksession


我有三个设备(mac,ipod,iphone),所有这些设备都连接到Wi-Fi。当我测试连接两个设备的应用程序时,都要求打开蓝牙,但无论如何,他们想要使用Wi-Fi。如何强迫他们使用蓝牙而不是Wi-Fi。

GKPeerPickerController*     picker;
picker = [[GKPeerPickerController alloc]init];
picker.delegate = self;
picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby; //Here, I suppose, program should use BlueTooth(but it uses the same network).
[picker show];

但如果一台设备没有连接到Wi-Fi,一切正常 为什么将connectionTypesMask设置为GKPeerPickerConnectionTypeNearby首先使用所有Internet连接,然后才使用蓝牙连接?如何强制只使用蓝牙?

2 个答案:

答案 0 :(得分:0)

我发现这样做的唯一方法:在MacBook中关闭机场并打开BT。

答案 1 :(得分:0)

GKPeerPickerController委托方法的代码来自Mark和LaMarche开始iOS 5开发:

-(GKSession*)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type
{
GKSession *theSession;
if (type == GKPeerPickerConnectionTypeNearby)
{
    theSession = [[GKSession alloc] initWithSessionID:kTicTacToeSessionID displayName:nil sessionMode:GKSessionModePeer];
}
return theSession;
}

它将确保您只连接BT会话。在他们的示例项目中,peerPicker的一些隐藏功能使设备要求您打开蓝牙。