多重连接框架不再连接

时间:2015-12-21 10:19:52

标签: ios swift macos cocoa

这个有点奇怪,所以我会尽力解释。我正在研究Baby的第一款iPad应用程序(Swift),在阅读了几本好书,教程等后,我已经有了很长的路要走。

有两个需要沟通的应用。一个在我的macbook上运行(我将其称为osx_app),另一个在ipad上运行。 osx_app有一个实现MCSessionDelegate的类,它包含广告商(MCAdvertiserAssistant)和会话对象作为属性。当用户点击“Start Hosting”菜单项时,会话委托子类启动广告商并等待ipad_app连接。

同时,ipad_app有一个实现MCSessionDelegate的类,并将会话对象保存为属性。主视图控制器实现MCBrowserViewControllerDelegate并使用MCSession实现者​​对象中保存的MCSessionDelegate创建浏览器。

理想的行为是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编程不太熟悉,我以一种我不应该或某种方式传递一个对象?我甚至不知道。

1 个答案:

答案 0 :(得分:3)

天啊,我明白了。在ipad_app中,我将MCSessionDelegate方法session:didReceiveCertificate:fromPeer:certificateHandler实现为存根。我首先重新编写了MCF的东西,以便我使用自定义广告客户和浏览器而不是助手和用户界面,但这不起作用,所以我搜索了相关内容并发现了这个

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

我从ipad_app中删除了存根,但它确实有效!