我尝试实现相同的教程,但使用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做广告(不工作)
解决方法 使peerSession成为类的属性而不是方法的局部变量.问题是在代码中,peerSession在方法结束时释放.我在 blog上有一个工作示例. 总结以上是内存溢出为你收集整理的ios – 为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser全部内容,希望文章能够帮你解决ios – 为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)