【发布时间】:2014-11-14 22:45:29
【问题描述】:
我在MultiPeerConnectivity(MCF)上关注了这个tutorial并列出了大多数在线教程,他们采取了使用MCAdvertiserAssistant和MCBrowserViewController服务的捷径
我尝试实现相同的教程,但改用 MCNearbyServiceAdvertiser 和 MCNearbyServiceBrowser,因为我有兴趣在我的应用上自定义可发现性。
就列出附近的设备而言,一切都很好。但随后问题就出现在MCNearbyServiceAdvertiserDelegate 我称之为此方法的地方:
- (void) advertiser:(MCNearbyServiceAdvertiser *)advertiser
didReceiveInvitationFromPeer:(MCPeerID *)peerID
withContext:(NSData *)context
invitationHandler:(void (^)(BOOL, MCSession *))invitationHandler {
// Allow the peer to join this Vibereel
MCSession *peerSession = [[MCSession alloc] initWithPeer:_peerID];
peerSession.delegate = self;
invitationHandler(YES, peerSession);
NSLog(@"Accepted entry request for peer %@", [peerID displayName]);
}
这不会触发did change state方法:
-(void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state
虽然它与原始版本一样。
我知道我显然需要添加更多代码来演示问题.. 所以我创建了一个以原始代码开头的github repo。这是commit,它添加了定制的浏览器和定制的 UITableViewController 以显示附近的设备(工作正常),这是做广告的commit(不起作用)
【问题讨论】:
-
你能发布你发送邀请的代码吗?
-
我遇到了同样的问题,最终通过将会话保存在实例变量中来摆脱它。它很奇怪,但很有效。
标签: ios objective-c cocoa bonjour multipeer-connectivity