使用多對等連接框架和Nearby Services(瀏覽器和廣告客戶)實現應用程序之間的自動連接以交換少量數據。MCNearbyServiceAdvertiser委託方法從未調用過
我構建了一個處理所有連接細節的會話管理器。它的委託是一個視圖控制器,以便在收到數據時處理UI的更新。
會話管理器生成:
- A服務廣告客戶,代理爲會話管理器
- A服務瀏覽器,該代表還爲會話管理器
啓動兩個應用程序設備(一個在Xcode下獲取日誌,另一個獨立),我通過服務瀏覽器委託相應的方法收到Found Peer消息。
正如另一條消息所述,我比較了MCPeerID(本地和來自接收的Peer)的displayName屬性,以決定兩者中的哪一個將發送邀請,從而避免了交叉邀請。
用作其它消息here說,我還添加了「可選」 MCSession委託方法- (void)session:didReceiveCertificate:fromPeer:certificateHandler:
然而,委託方法MCNearbyServiceAdvertiser的(void)advertiser:didReceiveInvitationFromPeer:withContext:invitationHandler:
永遠不會被調用。在invitePeer:toSession:withContext:timeout:
方法中超時設置後,只有MCSession委託方法(void)session:peer:didChangeState:
收到NotConnected消息。
在各種選項建議:
- 會話與安全零和MCEncryptionNone初始化;
- discoveryInfo是零;
- 在邀請中發送的上下文僅僅是一個存檔爲NSData的簡短字符串。
要解決:
- 我已檢查所有項目都存在(會議和代表,廣告商及其委託)。
- 只要應用程序處於活動狀態,Service Browser和Advertiser從不停止。
我不知道要在哪裏查看!
機器是否在同一WiFi網絡上運行Xcode和設備? – ChrisH
您是否正在使用瀏覽器中的對等方初始化MCSession:foundPeer:withDiscoveryInfo:消息而不是瀏覽器中的本地對等方?我犯了這個錯誤... –
我也對這個問題感興趣。我的代理方法多對等沒有被調用。 – AnsonL