2014-09-30 19 views
5

Uso la conservazione dello stato e il restauro. Dopo aver simulato la pressione della memoria usando kill(getpid(), SIGKILL);, l'app viene uccisa e quindi riattivata, ricevo notifiche dallo CBCentralManagerDelegate e posso comunicare con le periferiche.iOS In quali condizioni il restauro del Core Bluetooth funziona?

Qualora restauri dopo:

  1. iOS ripartenza?
  2. l'utente uccide l'app dalla barra multitasking?

Secondo messaggi come questo: Long-Term Actions after app is killed, il punto 2 non potrebbe essere possibile.

  1. Se il ripristino non funziona per 1 o 2 punti, come potrei "riconnessione" alle mie periferiche in queste situazioni?
+0

Dopo il riavvio di iOS, nella console del dispositivo viene visualizzato quanto segue. Quindi, in qualche modo l'iPhone riceve le notifiche della batteria, ma l'app non si sveglia. Ho provato su iOS 7.1.1: Oct 14 12:56:13 iPhonexxxx BTLEServer [98] : (Nota) Livello della batteria per periferiche "MyPeripheral": 92% 14 ottobre 12:56:18 iPhonexxxx BTLEServer [98 ] : (Nota) Livello della batteria per periferiche "MyPeripheral": 92% 14 ott. 12:56:23 iPhonexxxx BTLEServer [98] : (Nota) Livello batteria per periferica "MyPeripheral": 92% – Maria

risposta

7

Lavori di restauro per i casi in cui l'applicazione viene ucciso dal sistema operativo:

  • chiamata kill(getpid(), SIGKILL)
  • OS uccide mentre in background

In tutti gli altri casi, l'applicazione non è restaurato. La ragione di ciò è probabilmente l'intenzione che l'utente volesse uccidere l'app, quindi non dovrebbe essere rilanciata. Questo potrebbe non essere vero per il riavvio, ma Apple lo ha trattato finora in questo modo.

Nessun report ha mostrato modifiche finora in iOS 8 per quanto riguarda il riavvio dopo il comportamento di riavvio.

Non è possibile riavviare dopo l'uccisione di una barra delle applicazioni ma per il riavvio esiste una soluzione alternativa. È possibile registrarsi per modifiche di posizione significative che consentiranno di ripristinare l'app dopo il riavvio. Questo ha funzionato molto bene per me.

+0

Grazie a @allprog. Cambiamenti di posizione significativi? Intendi usare i beacon? Le mie periferiche non sono utilizzate per scopi di localizzazione, ma potremmo considerarle. – Maria

+0

No, intendo le modifiche significative alla posizione di [CLLocationManager] (https://developer.apple.com/Library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497 -CH2-SW8). iBeacons possono anche funzionare ma non li ho provati. – allprog

+0

Ho appena provato la soluzione di cambio di posizione significativa ma non riesco a farlo funzionare. La mia app riceve il primo cambio di posizione significativo (lo lancio quando vado in background) ma quando il mio telefono riavvia la mia app non viene riavviata. Il telefono ha bisogno di un cambio di posizione significativo per rilanciarlo? Grazie –

Problemi correlati