Ich benutze die Mutlipeer Connectivity Framework zum ersten Mal, und ich möchte programmgesteuert (nicht mit den Assistant-Klassen) steuern.iOS Multipeer Connectivity Framework EinladungHandler scheint nicht zu akzeptieren?
Alles funktioniert genau wie beschrieben, wenn ich meinen Code auf zwei separate Geräte bis zu dem Punkt ausgeführt, wenn die ‚Werber‘ den Rückruf delegieren erhalten:
Der Delegierten Rückruf des Browser-Client aufgerufen wird, wenn es den Inserent entdeckt:
-(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];
}
Dann werden die Delegierten Rückruf-Werbe Client wird aufgerufen, wenn sie die Einladung erhält:
-(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];
}
Nachdem 'invitationHandler (YES, _session)' aufgerufen wurde, scheint die Verbindung zwischen dem 'Browsing'-Client und dem' Advertising'-Client nie hergestellt worden zu sein.
Ich erhalte keine Delegierten Rückrufe (einmal oder zweimal ich erhielt eine MCSessionStateNotConnected) auf den MCSession-Objekten auf jedem Client-Gerät. Ich hätte gedacht, dass ich den Rückruf des MCSession-Delegierten erhalten hätte:
-(void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state;
Fehle ich etwas? Ist jemand anderes auf dieses Problem gestoßen?
Haben Sie versucht, den Browser und den Werbetreibenden zu verlassen, anstatt sie sofort zu stoppen? – ChrisH
Ja. Hatte leider immer noch das gleiche Verhalten. –