這個有點奇怪,所以我會盡我所能解釋。我正在研究寶寶的第一個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編程非常陌生,我以某種我不應該這樣做的方式傳遞對象?我甚至不知道。
我在尋找更多的東西,並找到了一個類似於我想要做的事情的應用程序,https://github.com/jpsim/DeckRocket,但是這個人爲他們的iOS和OSX應用程序使用了一個項目。我注意到,我發現每個教程都使用MCF與同一應用的其他實例進行通信。我無法在文檔中找到它,但也許它不能用於與兩個不同的應用程序進行通信?我會給它一個鏡頭並報告回來! –