Multipeer连接不能第二次连接

问题描述:

我正在使用Multipeer连接框架在设备之间传输文件。我正在使用标准的MCAdvertiserAssistant和MCBrowserViewController来连接设备。在从设备A到设备B的第一次尝试中,工作正常。从设备B到设备A的第一次传输相同的事情。Multipeer连接不能第二次连接

如果您再次尝试任一方向,在MCBrowserViewController显示其对话框以选择对等方并选择一个对等方后,将不会显示接受其他设备上的请求的弹出窗口。没有错误消息,没有调用委托方法 - 只是没有。有没有人遇到过这个和任何想法?

我有同样的问题,并解决它与每次开始广告或浏览同龄人时启动所有必要的组件。这不是最干净的解决方案,但在我的情况下它可以100%工作。

下面的代码是我如何实现它的,所以这没有Apple提供的内置ViewController。

请注意,[session disconnect]是一种异步方法,有时需要几秒钟才能完成。

- (void)startBrowsing 
{ 
    // Initiate new advertiser 
    isAdvertising = YES; 

    _peerID = [[MCPeerID alloc] initWithDisplayName:@"Wallet"]; 
    _session = [[MCSession alloc] initWithPeer:_peerID]; 
    _session.delegate = self; 

    _advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:_peerID discoveryInfo:nil serviceType:@"made2pay"]; 
    _advertiser.delegate = self; 

    // Start advertiser 
    [_advertiser startAdvertisingPeer]; 
} 

- (void)stopBrowsing 
{ 
    [_advertiser stopAdvertisingPeer]; 
    [_session disconnect]; 
    _session = nil; 
    _peerID  = nil; 
    _advertiser = nil; 

    isAdvertising = NO; 
} 
+2

非常有趣的是,您必须重新生成peerId以便第二次连接。看起来像框架中的一个大错误。 –