我有同樣的問題,並解決它與每次開始廣告或瀏覽同齡人時啓動所有必要的組件。這不是最乾淨的解決方案,但在我的情況下它可以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;
}
非常有趣的是,您必須重新生成peerId以便第二次連接。看起來像框架中的一個大錯誤。 –