我有一个应用程序,我正在使用Multipeer Framework在某些iPad之间发送数据。我按照Apple的例子使用MCBrowserViewController和ConnectionViewController设置会话。
这非常好用,我可以通过两种方式发送数据。
但是,如果其中一个设备断开了连接,我就不会再找到它了。
使用像广告商和浏览器这样的MCNearbyServices似乎没有做任何事情。 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等)
答案 0 :(得分:1)
我发现在故意或无意中与MCSession断开连接后重新使用MCPeerID对象是非常错误的并且通常是不可能的(邀请总是失败)。对我的应用程序有效的方法是在断开连接后重新创建一个新的MCPeerID(并使用新的MCPeerID重新创建一个新的MCNearbyServiceAdvertiser)。然后你应该能够再次连接。