Соединение двух устройств с помощью GKPeerPickerController
У меня есть три устройства (Mac, Ipod, Iphone), все они подключены к Wi-Fi. Когда я тестирую приложение, которое соединяет два устройства, оба просят включить Bluetooth, но в любом случае они хотят использовать Wi-Fi. Как заставить их использовать Bluetooth вместо 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 использует в первую очередь подключение к Интернету, а только затем - подключение Bluetooth? Как заставить использовать только Bluetooth?
2 ответа
Единственный способ сделать это: отключить аэропорт в MacBook и включить BT.
Этот код для метода делегата GKPeerPickerController принадлежит Марку и Ламарху, начинающим разработку 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 заставляют устройство запрашивать включение BlueTooth.