2014-03-29 79 views
1

我正在使用Multipeer連接框架在設備之間傳輸文件。我正在使用標準的MCAdvertiserAssistant和MCBrowserViewController來連接設備。在從設備A到設備B的第一次嘗試中,工作正常。從設備B到設備A的第一次傳輸相同的事情。Multipeer連接不能第二次連接

如果您再次嘗試任一方向,在MCBrowserViewController顯示其對話框以選擇對等方並選擇一個對等方後,將不會顯示接受其他設備上的請求的彈出窗口。沒有錯誤消息,沒有調用委託方法 - 只是沒有。有沒有人遇到過這個和任何想法?

回答

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; 
} 
+2

非常有趣的是,您必須重新生成peerId以便第二次連接。看起來像框架中的一個大錯誤。 –