Проблема с отключением в мультипиринговой среде iOS 9.2

Я работаю над приложением однорангового чата в 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"];

-Я рекламировал услугу с помощью MCAdvertiserAssistant в viewDidLoad, и код просмотра выглядит следующим образом:

 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) два устройства подключаются, и чат работает, но через некоторое время в чате одноранговый узел отключается, также иногда в течение минуты после установления соединения одноранговые узлы отключаются. Любая помощь приветствуется. Спасибо!!

person Manoj Karki    schedule 15.02.2016    source источник
comment
да, теперь это полностью решено !!   -  person Manoj Karki    schedule 28.03.2016
comment
Как вы решили это? Пожалуйста! Мне нужна помощь   -  person Pablo Martinez    schedule 28.03.2016


Ответы (1)


В делегате сеанса установите для certificateHandler значение true, если состояние MCSessionState изменяется напрямую с *Connecting* на *Not Connected*.

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

Это сработало для меня.

Кроме того, если он отключается через некоторое время, проверьте инициализацию сеанса, идентификатора узла, браузера и переменных рекламодателя.

var myOwnPeerId : MCPeerID!

// For finding the devices
var serviceAdvertiser : MCNearbyServiceAdvertiser!

// For listening to devices
var serviceBrowser : MCNearbyServiceBrowser!

Сначала инициализируйте myOwnPeerId и используйте этот экземпляр в инициализации переменных serviceBrower и serviceAdvertiser.

person Saravanakumar G    schedule 24.03.2016