我遇到了同样的问题,并通过每次开始广告或浏览同行时启动所有必要的组件来解决它。这不是最干净的解决方案,但在我的情况下它可以 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;
}