ios7 - 多人连接断开

标签 ios7 multipeer-connectivity

我在使用 iOs7 中的 Multipeer Connectivity Framework 保持连接时遇到问题。目前,我的应用程序正在使用 MCNearbyServiceAdvertiser 和 MCNearbyServiceBrowser 以编程方式处理浏览和广告。我有一个警报 View ,询问用户他是浏览器还是广告商。在从该 View 返回时,我相应地实例化 MCNearbyServiceAdvertiser 或浏览器。

#pragma - Alert Delegate
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
        _browser = [[MCNearbyServiceBrowser alloc]initWithPeer:_peerID serviceType:@"Context-xl"];
        [_browser setDelegate:self];
        [self.detailViewController setRemote:YES];
        [_browser startBrowsingForPeers];
    } else
    {
        _advertiser = [[MCNearbyServiceAdvertiser alloc]initWithPeer:_peerID discoveryInfo:nil serviceType:@"Context-xl"];
        [_advertiser setDelegate:self];
        [self.detailViewController setRemote:NO];
        [_advertiser startAdvertisingPeer];
    }
    [self.detailViewController configureView];
}

我的 session 委托(delegate)方法 peer:...DidChangeState... 被调用了两次,一次用于连接,一次用于断开连接。 session 开始后,我根本不会停止广告商或浏览器。我应该停止浏览/广告吗?

最佳答案

编辑使用 Apple 的支持票,他们确认使用过多数据或过于频繁调用 sendData 会导致断开连接。

编辑我的假设是 Apple 有一个线程或队列正在轮询以检查对等方是否已连接。如果此线程/队列停止(即,断点被击中或应用程序锁定 CPU 或在主线程上执行一些需要一段时间的操作),这似乎会导致断开连接。

在没有加密的情况下创建我的 session 似乎有助于提高性能和断开连接,尽管它们仍然会发生。

MCPeerID* peerId = [[MCPeerID alloc] initWithDisplayName:self.displayName];
self.peer = [[MultiPeerPeer alloc] initWithDisplayName:peerId.displayName andPeer:peerId];
self.session = [[MCSession alloc] initWithPeer:peerId securityIdentity:nil encryptionPreference:MCEncryptionNone];

此外,我发现调用 sendData 过于频繁(每秒超过 30-60 次)会导致框架进入不良状态并导致卡住和断开连接。

关于ios7 - 多人连接断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19101838/

相关文章:

ios - AudioQueue回调仅在iOS 7上获得空缓冲区

html - CSS 圆圈在 ios 上看起来是椭圆形的

swift - macOS 10.13 (High Sierra) 上的 MCNearbyServiceAdvertiser 无法正常工作

iOS 基于位置的点对点通信方法

macos - 有没有办法根据型号获取 Mac 的图标?

ios7 - 将 inputAccessoryView - UIToolBar 上 UITextField 上的文本镜像到 navigationController.toolbar 上 UITextField 上的文本

objective-c - MKPolygon面积计算

iphone - iOS 7 隐藏状态栏

ios - 如何检测 Multipeer Connectivity 邀请的拒绝?

ios7 - 多点连接随机断开