La conectividad multipeer se desconecta en el background

Entonces, mi escenario ideal es que quiero que mi MCNearbyServiceAdvertiser y MCNearbyServiceBrowser funcionen en segundo plano. Pero entiendo que estos deben ser eliminados cuando la aplicación renuncia activa, y reanudar el trabajo cuando vuelvo a primer plano.

Pero lo que me molesta es que, cuando CONNECTA a dos compañeros a una session y comienzo a conversar entre ellos, de repente se desconecta. Significado … mi object MCSession se desconecta cuando pasa a segundo plano. También me dijeron del error de Apple con certificateHandler(YES); , y explícitamente lo llamo ahora.

Quiero establecer esto exactamente cómo FIRECHAT hace FIRECHAT . ¿Alguien puede darme algunos consejos sobre por qué sigue fallando, o cómo se las arreglan para mantener esto activo?

Gracias,

Para que tus compañeros permanezcan conectados, debes comenzar una tarea en segundo plano cuando la aplicación entre en segundo plano, de lo contrario iOS eliminará las conexiones de networking y suspenderá la aplicación.

 - (void)applicationDidEnterBackground:(UIApplication *)application { //Start a background task to keep the app running in the background self.bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ //If your background task takes too long, this block of code will execute [self cleanUp]; self.bgTask = UIBackgroundTaskInvalid; }]; //Do the work you need to do dispatch_async(dispatch_get_main_queue(), ^{ //Finish up the transfer of data between peers [self cleanUp]; //End the background task so that iOS doesn't kill the app [application endBackgroundTask:_bgTask]; }); } - (void)applicationWillEnterForeground:(UIApplication *)application { [application endBackgroundTask:_bgTask]; } - (void)cleanUp { //Clean up the Multipeer session } 

Tenga en count que esto solo se aplica a las conexiones existentes que se han realizado mientras la aplicación estaba en primer plano. Todavía debe detener la navigation y la publicidad al ingresar en segundo plano.