Соединение двух устройств с помощью 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.

Другие вопросы по тегам