我正在使用Multipeer Connectivity Framework在设备之间传输文件。我正在使用标准的MCAdvertiserAssistant和MCBrowserViewController来连接设备。在从设备A到设备B的第一次尝试中,一切正常。第一次从设备B转移到设备A时也是如此。
如果再次尝试任一方向,在MCBrowserViewController显示其对话框以选择对等方并选择一个方向后,将不会出现在其他设备上接受请求的弹出窗口。没有错误消息,没有调用委托方法 - 什么都没有。有没有人遇到这个和任何想法?
答案 0 :(得分:2)
我遇到了同样的问题,并在每次开始广告或浏览同伴时启动所有必要的组件来解决它。它不是最干净的解决方案,但在我的情况下,它可以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;
}