我正在尝试在不使用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连接?
答案 0 :(得分:0)
可能是您使用越狱设备的问题,
GKSession和GKSessionDelegate实现适用于蓝牙和WiFi。
这两个类检查wifi和蓝牙,并选择合适的传输介质。
如果你的iPhone是Jailbroken,那么在连接这些传输介质时可能会出现蓝牙或wifi的一些问题,这可能会阻止正确使用游戏套件。
并尝试使用
picker.connectionTypesMask = GKPeerPickerConnectionTypeOnline
使用委托方法中的条件检查
if (type == GKPeerPickerConnectionTypeOnline) {
}
更新:
参考Apple的示例代码.. https://developer.apple.com/library/ios/#samplecode/GKTapper/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010283