【问题标题】:Multipeer Connectivity Framework not connecting anymore多点连接框架不再连接
【发布时间】:2015-12-21 10:19:51
【问题描述】:

这个有点奇怪,所以我会尽力解释。我正在开发 Baby's First iPad App (Swift),在阅读了几本好书、教程等之后,我已经取得了相当大的进步。

有两个应用程序需要通信。一个在我的 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 编程太不熟悉了,以至于我以不应该的方式传递了一个对象或其他什么?我什至不知道。

【问题讨论】:

  • 我看了更多,发现了一个与我想做的事情相似的应用程序,github.com/jpsim/DeckRocket,但是这个人将一个项目用于他们的 iOS 和 OSX 应用程序。我注意到我发现的每个教程都使用 MCF 与同一应用程序的其他实例进行通信。我在文档中找不到它,但也许它不能用于与两个不同的应用程序进行通信?我会试一试并报告!

标签: ios swift macos cocoa


【解决方案1】:

天哪,我想通了。在 ipad_app 中,我将 MCSessionDelegate 方法 session:didReceiveCertificate:fromPeer:certificateHandler 实现为存根。我首先重新编写了 MCF 的东西,所以我使用的是自定义广告商和浏览器,而不是助手和 UI,但这不起作用,所以我搜索了相关的东西并找到了这个

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

我从 ipad_app 中删除了存根,它起作用了!

【讨论】:

  • 删除证书处理方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
相关资源
最近更新 更多