Почему GKSession всегда пытается использовать Bluetooth при работе на устройстве, а не на симуляторе?
Я пытаюсь реализовать подключение GameKit без использования GKPeerPickerController. Что мне нужно, это установить соединение WiFi, а не Bluetooth.
Вот как я это делаю
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];
Моя проблема в том, что устройства всегда пытаются подключиться через Bluetooth. По крайней мере, я так думаю, потому что следующее всегда появляется в консоли
BTM: подключение к BTServer
Даже если я выключаю Bluetooth, он всегда пытается разобраться с Bluetooth, а не с Wi-Fi. Более того - если Bluetooth включен - устройства никогда не видят друг друга, если я не использую GKPeerPickerController. Кроме того, симулятор никогда не пытается найти Bluetooth и всегда может установить соединение Wi-Fi и легко найти любое устройство. Как сделать так, чтобы GKSession выбирал WiFi-соединение?
1 ответ
Может быть, ваша проблема возникла с Jailbroken Device,
Реализации GKSession и GKSessionDelegate работают как для Bluetooth, так и для WiFi.
эти два класса проверяют Wi-Fi и Bluetooth и выбирают подходящую среду передачи.
Если ваш iPhone взломан, то могут возникнуть некоторые проблемы с BlueTooth или Wi-Fi при подключении через эту среду передачи, и, возможно, это мешает правильно работать с игровым комплектом.
А также попробуйте использовать
picker.connectionTypesMask = GKPeerPickerConnectionTypeOnline
проверить с условием в методах делегата
if (type == GKPeerPickerConnectionTypeOnline) {
}
Обновить:
См. Этот пример кода Apple. Https://developer.apple.com/library/ios/#samplecode/GKTapper/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010283