多人框架 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 框架重复连接和断开连接时发生