1

我正在使用 Multipeer Connectivity Framework 在设备之间传输文件。我正在使用标准的 MCAdvertiserAssistant 和 MCBrowserViewController 来连接设备。在从设备 A 到设备 B 的第一次尝试中,一切正常。第一次从设备 B 传输到设备 A 时也是如此。

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

4

1 回答 1

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;
}
于 2014-05-02T12:07:49.550 回答