gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 05:34:51 26 4
gpt4 key购买 nike

我关注了这个tutorialMultiPeerConnectivity (MCF) 和在线列出大多数教程,他们采取了使用 MCAdvertiserAssistant 服务的捷径和 MCBrowserViewController

我尝试实现相同的教程,但使用 MCNearbyServiceAdvertiserMCNearbyServiceBrowser相反,因为我有兴趣自定义我的应用程序的可发现性。

就列出附近的设备而言一切正常..但随后问题就出现在我调用此方法的 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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25949161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com