2016-04-27 17 views
5

Sto utilizzando websocket con Swift 2 per mantenere alcuni dati tra l'app e il server. Questo websocket funziona bene in foreground e in background, ma quando termino (kill) l'app interrompe la connessione websocket. Quando tornerà sull'app inizierà di nuovo a funzionare.Mantieni una web socket live quando l'app è in stato terminato (kill)

Note:

  • sono date tutte le premesse, VOIP, e altre autorizzazioni.
  • Generalmente, websocket non funziona in background, ho trovato una soluzione per continuare a lavorare in background e quando il dispositivo è bloccato.
  • È anche stata eseguita una notifica push silenziosa che richiama il metodo per la connessione web socket , ma il metodo funziona solo quando si torna all'applicazione.

Quindi, qualsiasi idea e suggerimento è apprezzato su come mantenere una websocket live quando un'app è in stato terminato (kill)?

Grazie in anticipo!

+0

Non avrai mai un gestore per questo, utilizzando la modalità silenziosa, solo quando l'applicazione sarà nuovamente attiva verrà elaborata. Non riesco davvero a vedere un modo per farlo. – Brduca

+0

@Brduca - Non ricevo alcun gestore per questo e anche la notifica push silenziosa funziona solo quando torno all'applicazione. qualcuno può sapere altre opzioni? – Hasya

+0

Hasya, questo è quello che ti sto dicendo. Non è possibile. – Brduca

risposta

3

Non è possibile. Quando l'utente termina l'app, tutto va con sé, se così non fosse, gli utenti non avrebbero modo di impedire alle app di fare cose strane (oltre a riavviare l'intero dispositivo).

Inoltre, non dovresti provare cose esotiche per aggirare le restrizioni di sistema in quanto ciò (alla fine) porterà al rifiuto dell'app del tuo rilascio al negozio e/o agli utenti che sono insoddisfatti della durata della batteria quando l'app è in esecuzione.

+0

Grazie mille Wain, ho bisogno di sapere 1 cosa da te, Ad esempio l'app è in stato di uccisione e l'app riceve la notifica push come "Chiamata in arrivo", dopo 1 minuto di nuovo riceve un'altra notifica push come "Chiamata persa", ancora ho ha toccato qualsiasi notifica, quindi è possibile quando la notifica "Chiamata persa" arriva nella barra delle notifiche (barra), quindi è possibile cancellare/rimuovere la notifica push "Chiamata in arrivo"? (l'utente non ha ancora toccato nulla.) – Hasya

+0

No, non c'è modo di modificare quell'elenco, iOS lo gestisce per te (in relazione all'interazione dell'utente) – Wain

+0

Wain, Come succede con l'app Skype iOS? questo succede con Skype. Il tuo aiuto sarebbe fantastico per me. – Hasya

0

Si potrebbe provare a implementare il comportamento che si sta cercando con una notifica push con contenuto disponibile, che ti dà un po 'di tempo per scaricare il contenuto in background (ulteriori informazioni here), per fare questo il tuo carico utile dovrebbe essere strutturato come,

{ 
    "aps" : { 
     "content-available" : 1 
    }, 
    "data-id" : 1234 
} 

quindi implementare il metodo seguito per scaricare il contenuto, o nel tuo caso fare qualcosa con il vostro zoccolo web

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 

Questo metodo dovrebbe essere solo l'uso di aggiornare uno stato in la tua app o scaricare alcuni dati, Apple non consiglia di usarla per mantenere il tuo socket sempre in vita, e sono sicuro che alla fine rifiuterà la tua app se la usi per mantenere il tuo socket sempre attivo.

+0

Lo so e già implementato, la notifica push silenziosa non aiuta a mantenere in vita il web socket. ma questo funziona solo quando si torna all'applicazione dallo stato terminato. bene grazie mille Francisco. – Hasya