2014-07-14 15 views
5

Quindi, il mio scenario ideale è che voglio che il mio MCNearbyServiceAdvertiser e MCNearbyServiceBrowser funzioni in background. Ma capisco che questi devono essere uccisi quando l'applicazione si dimette attiva e riprendere il lavoro quando torno in primo piano.La connettività di Multipeer si disconnette sullo sfondo

Ma ciò che mi infastidisce è che quando connetto due peer a una sessione e inizio a chattare tra di loro, improvvisamente si disconnette. Significato .. il mio oggetto MCSession si disconnette quando va in background. Mi è stato anche detto del bug di Apple con certificateHandler(YES); e ora lo chiamo esplicitamente.

Voglio impostare esattamente come lo fa FIRECHAT. Qualcuno può darmi qualche suggerimento sul perché continua a fallire, o su come voi ragazzi riuscite a mantenerlo attivo?

Grazie,

+0

Quali sono le modalità di sfondo utilizzate dall'app? – ChrisH

+0

voip, bluetooth – Legolas

+0

E si sta creando un'attività in background quando l'app entra in background? – ChrisH

risposta

3

Per per i vostri coetanei di rimanere in contatto è necessario avviare un'attività in background quando l'applicazione entra nel fondo, altrimenti iOS abbattere le connessioni di rete e sospendere l'applicazione.

- (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 
} 

Si noti che questo si applica solo alle connessioni esistenti che sono state effettuate mentre l'app era in primo piano. Devi comunque interrompere la navigazione e la pubblicità quando inserisci lo sfondo.

+1

Qualche modo di sfogliare e fare pubblicità mentre sei in background? – gasparuff

Problemi correlati