2014-07-07 5 views
0

У меня есть приложение Я работаю над тем, где я использую Multipeer Framework для отправки данных между некоторыми iPads. Я настраиваю сеанс с помощью MCBrowserViewController и ConnectionViewController, все в соответствии с примерами Apple.Multipeer потеряно и найдено

Это работает очень хорошо, и я могу отправить свои данные в обоих направлениях.

Однако, если одно из устройств освобождает соединение, которое я нахожу, похоже, что он снова может снова подключиться, когда он будет найден.

Использование MCNearbyServices, таких как Рекламодатель и Браузер, похоже, ничего не делает. LostPeer и FoundPeer никогда не вызываются. У меня есть оба делегата (Рекламодатель и Браузер) в моем классе MCManager. Конечно, я должен был бы автоматически подключиться, когда они вернутся в диапазон или приложение снова запустится?

Я попытался это после того, как @bradenm предложение ...

-(void)reconnect 
{ 
    _myPeerID = [[MCPeerID alloc]initWithDisplayName:[UIDevice currentDevice].name]; 

    _nearbyAdvertiser = [[MCNearbyServiceAdvertiser alloc] 
         initWithPeer:_myPeerID 
         discoveryInfo:nil 
         serviceType:kServiceType]; 

    _nearbyAdvertiser.delegate = self; 
    _nearbyBrowser.delegate = self; 

    [self setAdvertising:YES]; 
    [self setBrowsing:YES]; 

} 

Но я не получаю какой-либо из других методов, называемых (foundPeer и так далее)

+0

Можете ли вы опубликовать код, чтобы показать, что вы сейчас делаете? – ChrisH

ответ

1

Я обнаружил, что повторное использование объектов MCPeerID после преднамеренного или непреднамеренного отключения от MCSession очень затруднительно и часто невозможно (приглашения всегда терпят неудачу). Что хорошо для моего приложения, так это просто повторно создать новый MCPeerID после отключения (и заново создать новый MCNearbyServiceAdvertiser с новым MCPeerID). Затем вы сможете подключиться снова.

+0

Вам не нужно снова и снова воссоздавать объект MCPeerID. Вы можете повторно использовать его без каких-либо проблем. –

Смежные вопросы