Я впервые использую инфраструктуру соединения mutlipeer, и я хочу, чтобы программный (не с помощниками классов) контроль.Интерфейс подключения IOS Multipeer приглашенияHandler, похоже, не принимает?
Все работает точно так, как описано, когда я запускаю мой код на два отдельных устройства вплоть до того момента, когда «рекламодатель» принимает делегат обратного вызова:
делегат обратного вызова Травоядные клиента вызывается, когда он обнаруживает, рекламодателю:
-(void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(NSDictionary *)info{
[[[UIAlertView alloc] initWithTitle:@"Peer Found" message:peerID.displayName delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil] show];
_session = [[MCSession alloc] initWithPeer:_myPeerID];
_session.delegate = self;
//connect to the discovered peer.
[_browser invitePeer:peerID toSession:_session withContext:nil timeout:30.0];
[_browser stopBrowsingForPeers];
}
Затем делегат обратного вызова рекламного клиента вызывается, когда он получает приглашение:
-(void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID withContext:(NSData *)context invitationHandler:(void (^)(BOOL, MCSession *))invitationHandler{
//when my code runs, everything looks correct here.
//eg. peerID is definitely my 'browser' client's display name etc.
_session = [[MCSession alloc] initWithPeer:_myPeerID];
_session.delegate = self;
//using a simple version for testing... accept all invites.
invitationHandler(YES, _session);
//stop advertising now.
[_advertiser stopAdvertisingPeer];
}
После вызова приглашения «Приглашение (YES, _session)» кажется, что соединение между клиентом просмотра и клиентом «рекламы» никогда не устанавливается.
Я не получаю никаких обратных вызовов делегатов (один или два раза я получил MCSessionStateNotConnected) на объектах MCSession на любом клиентском устройстве. Я бы подумал, что получил бы ответный вызов делегата MCSession:
-(void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state;
Я что-то упустил? Кто-нибудь еще сталкивается с этой проблемой?
Вы пробовали оставить браузера и рекламодателя, вместо того чтобы немедленно их остановить? – ChrisH
Да. К сожалению, по-прежнему было такое же поведение. –