Ios 多点失物招领

Ios 多点失物招领,ios,multipeer-connectivity,Ios,Multipeer Connectivity,我有一个应用程序,我正在使用Multipeer框架在一些iPad之间发送数据。我正在使用MCBrowserViewController和ConnectionViewController设置会话,所有这些都是根据苹果的示例进行的 这很有效,我可以通过两种方式发送数据 但是,如果其中一个设备的连接松动,我不知道当它被找到时,似乎无法重新连接 使用诸如广告商和浏览器之类的McNearBy服务似乎没有任何作用。LostPeer和FoundPeer从未被调用。在我的MCManager课程中,我有两个代理(

我有一个应用程序,我正在使用Multipeer框架在一些iPad之间发送数据。我正在使用MCBrowserViewController和ConnectionViewController设置会话,所有这些都是根据苹果的示例进行的

这很有效,我可以通过两种方式发送数据

但是,如果其中一个设备的连接松动,我不知道当它被找到时,似乎无法重新连接

使用诸如广告商和浏览器之类的McNearBy服务似乎没有任何作用。LostPeer和FoundPeer从未被调用。在我的MCManager课程中,我有两个代理(广告商和浏览器)。当然我应该能够自动重新连接,当他们回到范围内或应用程序再次运行

我在@bradenm建议后尝试过这个

    -(void)reconnect
{
    _myPeerID = [[MCPeerID alloc]initWithDisplayName:[UIDevice currentDevice].name];

    _nearbyAdvertiser = [[MCNearbyServiceAdvertiser alloc]
                         initWithPeer:_myPeerID
                         discoveryInfo:nil
                         serviceType:kServiceType];

    _nearbyAdvertiser.delegate = self;
    _nearbyBrowser.delegate = self;

    [self setAdvertising:YES];
    [self setBrowsing:YES];

}

但是我没有得到任何其他方法调用(foundPeer等)

我发现,在有意或无意地断开与MCSession的连接后重新使用MCFeried对象是非常有问题的,而且通常是不可能的(邀请总是失败)。对我的应用程序来说,最有效的方法是在断开连接后简单地重新创建一个新的McGerid(并使用新的McGerid重新创建一个新的MCNearbyServiceAdvertiser)。然后,您应该能够再次连接。

您可以发布一些代码来显示您当前正在执行的操作吗?您不需要一次又一次地重新创建MCPEIRID对象。您可以毫无问题地重用它。