0

我正在尝试在不使用 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 连接?

4

1 回答 1

0

可能是越狱设备出现的问题,

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

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

如果您的 iPhone 是越狱的,那么在通过这些传输介质连接时,蓝牙或 wifi 可能会出现一些问题,并且可能会阻止正确使用 gamekit。

并尝试使用

picker.connectionTypesMask = GKPeerPickerConnectionTypeOnline

检查委托方法中的条件

if (type == GKPeerPickerConnectionTypeOnline) {
}

更新 :

请参阅 Apple 的此示例代码。 https://developer.apple.com/library/ios/#samplecode/GKTapper/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010283

于 2012-06-05T12:23:31.233 回答