2015-12-21 96 views
1

這個有點奇怪,所以我會盡我所能解釋。我正在研究寶寶的第一個iPad應用程序(Swift),閱讀了幾本好書,教程等後,我已經閱讀了很多東西。Multipeer連接框架不再連接

有兩個需要溝通的應用程序。一個在我的macbook上運行(我將其稱爲osx_app),另一個運行在ipad上。 osx_app有一個實現MCSessionDelegate的類,它包含廣告客戶(MCAdvertiserAssistant)和會話對象作爲屬性。當用戶點擊「開始託管」菜單項時,會話委託子類啓動廣告客戶並等待ipad_app連接。

同時,ipad_app有一個類實現MCSessionDelegate並將會話對象保存爲屬性。主視圖控制器執行MCBrowserViewControllerDelegate,並使用MCSessionDelegate實施對象中保存的MCSession創建瀏覽器。

希望的行爲是ipad_app在瀏覽器中看到osx_app並進行連接。 osx_app顯示對話框並接受。建立連接,打印日誌條目,並打開打開的文件對話框,將pdf發送至ipad_app。

這裏是奇怪的部分進來,我得到了那麼多。我得到了連接運行和文件發送,一切都很順利,但我沒有實現ipad_app,這是一個簡化的測試應用程序,我正在使用它來學習MC框架。我在iphone模擬器上測試了幾次,並在iphone 5s上測試過,結果非常完美。

然後,當我將代碼移植到現有的ipad_app代碼時,它不起作用。在每個連接狀態下,我會做一個簡單的打印語句來查看正在發生的事情,並且據我所知,ipad_app嘗試連接並且osx_app旋轉其輪子一分鐘,然後斷開連接。兩個控制檯都記錄「設備連接」和「設備未連接」事件。

有時ipad_app會說它已連接到osx_app,但osx_app的日誌仍然只是說「連接」。最奇怪的是,現在我已經削減了MWE代碼,完美工作的代碼不再有效!我沒有對osx_app做任何事情!這只是一種僥倖,它在前幾次運作?

Anywho,我已經搜索了上下關於這個問題和答案,只發現了幾個人報告類似的問題,但他們要麼沒有解決它或他們的解決方案沒有工作。我嘗試過使用真實設備,切換模擬器,互不包括WiFi和藍牙,以查看其中一個或另一個是否工作得更好,禁用加密以及禁用防火牆。

我覺得我可能對OSX和iOS編程非常陌生,我以某種我不應該這樣做的方式傳遞對象?我甚至不知道。

+0

我在尋找更多的東西,並找到了一個類似於我想要做的事情的應用程序,https://github.com/jpsim/DeckRocket,但是這個人爲他們的iOS和OSX應用程序使用了一個項目。我注意到,我發現每個教程都使用MCF與同一應用的其他實例進行通信。我無法在文檔中找到它,但也許它不能用於與兩個不同的應用程序進行通信?我會給它一個鏡頭並報告回來! –

回答

3

哦,我的上帝,我明白了。在ipad_app中,我將MCSessionDelegate方法session:didReceiveCertificate:fromPeer:certificateHandler實現爲存根。我第一次重新寫了MCF的東西,所以,我用自定義廣告客戶和瀏覽器,而不是助理和UI,但沒有工作,所以我搜索了有關的東西,發現這個

Multipeer Connectivity: getting an invitation accepted (using built-in browser VC)

我從ipad_app中刪除了存根,它工作正常!

+0

刪除證書處理程序的方法? –