Iphone 为什么GKSession在设备上运行时总是尝试使用蓝牙而不';模拟机上的t?

Iphone 为什么GKSession在设备上运行时总是尝试使用蓝牙而不';模拟机上的t?,iphone,wifi,p2p,gamekit,gksession,Iphone,Wifi,P2p,Gamekit,Gksession,我正在尝试在不使用GKPeerPickerController的情况下实现GameKit连接。我需要的是建立WiFi连接,而不是蓝牙 我就是这样做的 self.gameSession = [[GKSession alloc] initWithSessionID:@"test" displayName:nil sessionMode:GKSessionModePeer]; self.gameSession.available = YES; self.gameSession.delegate = s

我正在尝试在不使用GKPeerPickerController的情况下实现GameKit连接。我需要的是建立WiFi连接,而不是蓝牙

我就是这样做的

self.gameSession = [[GKSession alloc] initWithSessionID:@"test" displayName:nil sessionMode:GKSessionModePeer];
self.gameSession.available = YES;
self.gameSession.delegate = self;
self.gameSession.disconnectTimeout = 0;
[self.gameSession setDataReceiveHandler:self withContext:nil];
我的问题是,设备总是试图通过蓝牙连接。至少我这么认为,因为控制台中总是出现以下内容

BTM:连接到BTServer

即使我关闭蓝牙,它也总是试图处理蓝牙,而不是wifi。此外,如果蓝牙处于开启状态,如果我不使用GKPeerPickerController,设备之间就永远看不到对方。
此外,模拟器从不尝试寻找蓝牙,始终能够建立wifi连接并轻松找到任何设备。如何让GKSession选择WiFi连接?

可能是越狱设备引起的问题

GKSession和GKSessionDelegate的实现适用于蓝牙和WiFi

这两个类检查wifi和蓝牙,并选择合适的传输介质

如果您的iPhone被越狱,那么在通过这些传输介质连接时,蓝牙或wifi可能会出现一些问题,这可能会妨碍gamekit正常工作

并尝试使用

picker.connectionTypesMask = GKPeerPickerConnectionTypeOnline
检查委托方法中的条件

if (type == GKPeerPickerConnectionTypeOnline) {
}
更新:

请参阅此Apple的示例代码。。

非常感谢您的回答。我不使用越狱设备。我的目标是在不使用GKPeerPickerController的情况下建立连接。我已经尝试过GKPeerPickerController,特别是您提供的代码片段,但不幸的是它不起作用。你有没有试过在没有GKPeerPickerController的情况下使用GKSession?没有,伙计,我没有在没有GKPeerPickerController的情况下使用过。。为什么你不喜欢GKPeerPickerController?因为我需要建立WiFi连接,所以我改变了我的问题-你曾经用GameKit成功地通过WiFi连接两台设备吗?是的,在GKSession和GKSessionElegate的帮助下,我创建了一个两人玩的游戏,游戏中心,蓝牙,WiFi。。