2015-12-21 89 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

删除证书处理程序的方法? –