2012-02-07 9 views
6

Ho sviluppato e l'app che è attualmente impostata come "Location based" in modo che possa essere eseguita in background in modo indefenico. Non è un trucco che mi serve per fare cose quando l'utente si muove. Dopo una ricerca ho appreso che questa app eseguirà il codice solo in caso di cambio di posizione, nessun timer sarà in grado di eseguire alcun codice dopo 10 minuti.Framework XMPP - App basata sulla posizione collegata in background

La mia app, mentre in background, rimane collegata a XMPP per 50 minuti circa, quindi si disconnette. Vorrei che l'app non si disconnettesse mai, ho guardato il framework ma non trovo il posto dove sistemare questo comportamento. Sai se è possibile rimanere connessi "indefinitamente"? In tal caso, quali impostazioni devo modificare in xmppframework.

grazie

[EDIT] Dopo 50 minuti l'utente è ancora collegato alla XMPP ma è scollegato delle XMPPRooms fu conected. In un'altra sessione è stato collegato per 3 ore, il tempo in cui l'iPhone è collegato non sembra essere coerente.

+0

Se è scollegato solo da XMPPRooms, potrebbe avere qualcosa a che fare con le sessioni mantenute su back-end che durano per 50 minuti. – tipycalFlow

+0

Ho impostato il mio server su: _Non disconnettere i client inattivi._ Che impostazione intendi? – subharb

+0

Intendevo le sessioni per le stanze, se sono diverse dalle sessioni utente. Hai menzionato nella tua modifica che la sessione utente viene mantenuta, ma gli XMPPRooms sono disconnessi – tipycalFlow

risposta

0

Per assicurarsi che l'applicazione possa inviare e ricevere messaggi keep-alive, deve essere un'app voip e utilizzare un socket voip. Da Apple's Documentation:

  1. aggiungere la chiave UIBackgroundModes al file Info.plist della tua app. Impostare il valore di questa chiave su una matrice che include il valore voip.
  2. Configurare uno dei socket dell'app per l'utilizzo VoIP.
  3. Prima di spostarsi sullo sfondo, chiamare il setKeepAliveTimeout: handler: metodo per installare un gestore da eseguire periodicamente. La tua app può utilizzare questo gestore per mantenere la sua connessione di servizio.

Per quanto riguarda la presa:

NSInputStream e NSOutputStream: per i flussi di cacao, utilizzare il setProperty: Forkey: metodo per aggiungere la proprietà NSStreamNetworkServiceType al flusso. Il valore di questa proprietà deve essere impostato su NSStreamNetworkServiceTypeVoIP.

Problemi correlati