多人框架 iOS 9.2 中的断开连接问题

Posted

技术标签:

【中文标题】多人框架 iOS 9.2 中的断开连接问题【英文标题】:Disconnect issue in multipeer framework iOS 9.2 【发布时间】:2016-02-15 10:26:53 【问题描述】:

我正在使用多点连接框架在 ios 中开发点对点聊天应用程序,我已经在我的应用程序中设置了广告商和浏览器。 这是广告商和初始化代码:

 _myDisplayname = [[UIDevice currentDevice] name]; _mypeer =[[MCPeerID alloc]initWithDisplayName:_myDisplayname];

_mySession = [[MCSession alloc]initWithPeer:_mypeer securityIdentity:nil encryptionPreference:MCEncryptionRequired];
self.mySession.delegate = self;
_assistant = [[MCAdvertiserAssistant alloc]initWithServiceType:serviceType    discoveryInfo:nil session:_mySession]; [_assistant start]; _nearbyBrowser = [[MCNearbyServiceBrowser alloc]initWithPeer:_mypeer serviceType:serviceType];
self.advertiser = [[MCNearbyServiceAdvertiser alloc]initWithPeer:self.mypeer discoveryInfo:nil serviceType:@"blue-chat"];

-我已经在 viewDidLoad 中使用 MCAdvertiserAssistant 宣传了该服务,浏览代码如下:

 MCBrowserViewController *browser = [[MCBrowserViewController alloc]initWithBrowser:self.nearbyBrowser session:self.mySession];
browser.delegate =self;
[self presentViewController:browser animated:YES completion:nil];
我为广告商和浏览器使用了相同的会话对象,当在两台 iOS 设备(iPhone 4s 和 iPhone 6)上全新启动时,两台设备已连接并且聊天正常,但在聊天一段时间后,对等方断开连接,有时也在建立连接的一分钟内,对等方断开连接。任何帮助表示赞赏。谢谢!!

【问题讨论】:

是的,现在完全解决了!! 你是怎么解决这个问题的?请!我需要帮助 【参考方案1】:

如果MCSessionState 直接从*Connecting* 更改为*Not Connected* 状态,则在会话委托中将certificateHandler 设置为true

public func session(session: MCSession, didReceiveCertificate certificate: [AnyObject]?, fromPeer peerID: MCPeerID, certificateHandler: (Bool) -> Void)
 
  certificateHandler(true)
 

它对我有用。

此外,如果它在一段时间后断开连接,请检查会话、peerID、浏览器和广告客户变量的初始化

var myOwnPeerId : MCPeerID!

// For finding the devices
var serviceAdvertiser : MCNearbyServiceAdvertiser!

// For listening to devices
var serviceBrowser : MCNearbyServiceBrowser!

首先初始化 myOwnPeerId 并在 serviceBrower 和 serviceAdvertiser 变量初始化中使用这些实例

【讨论】:

以上是关于多人框架 iOS 9.2 中的断开连接问题的主要内容,如果未能解决你的问题,请参考以下文章

发送大文件/图像时,多人会话断开连接

当应用程序进入后台时,实时多人 Google Play 游戏服务对等方断开连接

CoreBluetooth [警告] 未知错误:311 在 iOS 中使用 CoreBluetooth 框架重复连接和断开连接时发生

如何正确拆除多人连接会话?

停止 *** 隧道不会断开 iOS 中的 *** 连接

ios 9 中的 Asyncsocket 错误 - 在连接或接受连接时尝试连接。先断开