ios – 为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser

ios – 为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser,第1张

概述我在 MultiPeerConnectivity(MCF)上跟踪了这个 tutorial并在线列出了大部分教程,他们采用了 MCAdvertiserAssistant和 MCBrowserViewController的服务快捷方式 我尝试实现相同的教程,但使用MCNearbyServiceAdvertiser和MCNearbyServiceBrowser,因为我有兴趣在我的应用程序上自定义可发现性 我在 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做广告(不工作)

解决方法 使peerSession成为类的属性而不是方法的局部变量.问题是在代码中,peerSession在方法结束时释放.我在 blog上有一个工作示例. 总结

以上是内存溢出为你收集整理的ios – 为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser全部内容,希望文章能够帮你解决ios – 为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1003582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存