【发布时间】:2014-05-25 17:21:15
【问题描述】:
考虑到社区遇到的所有错误,我想知道这个 Multipeer Connectivity 框架是否已准备好在现实世界中使用。我认为我的设置是正确的,但是我尝试过的所有其他示例项目都遇到了类似的问题。
我遇到的问题可能与Bonjour固有的某些问题有关,我无法弄清楚,但基本上问题如下:
- 我有一个活跃的
MCSession和许多同行。 - 现在,如果设备处于会话中,然后强制退出,则“对等方”会无限期地保持连接。
- 我无法强制该用户退出,即使该对等方调用了
browser:lostPeer:方法,并且甚至不再在浏览器中显示为 “附近”。 - 不会为该对等方调用
session:peer:didChangeState:方法。 - 当强制退出的对等方返回应用程序时,它们会再次被
browser:foundPeer:withDiscoveryInfo:“找到”,但仍存在于session.connectedPeersNSArray 中。显然,他们仍然没有收到有关会话的任何数据或更新,也没有实际连接。 - 似乎唯一可以将该原始对等点注册为
MCSessionStateNotConnected到会话的方法是将该对等点重新连接到原始会话。然后重复调用session:peer:didChangeState:,其中 peerID 的新实例是MCSessionStateConnected,并且在 peerID 的旧实例调用MCSessionStateNotConnected之后不久。
示例聊天应用程序很好地证明了这个问题:https://developer.apple.com/library/ios/samplecode/MultipeerGroupChat/Introduction/Intro.html
由于似乎没有任何方法可以从会话中手动强制删除对等点,我应该怎么做?我应该尝试以某种方式重建会话吗?
这个框架看起来有点乱,但我试图保留判断力!
【问题讨论】:
-
我有一个可以工作的应用程序,但需要将它扩展到超过 8 个对等点,现在它坏了:(。到目前为止我发现了一个问题,在进入后台时不要无意中对 MC 对象有强引用(我知道,它的应用范围不仅限于 MC.. 但提醒会有所帮助!)
-
我也有同样的问题。有时 MCSession 的 session:peer:didChangeState: 不会被 MCSessionStateNotConnected 调用以用于断开连接的对等点。当多个对等点连接时,一些对等点会收到通知,其他对等点不会。有时每个人都会得到正确的通知。我已经能够找到它的根本原因。即使对等方正在调用其断开方法,也会发生这种情况。
标签: ios session multipeer-connectivity