2013-08-07 7 views
5

La mia app Iphone ha 2 modalità, modalità online e modalità offline. se l'utente sta utilizzando l'app in modalità online, la richiesta viene inviata immediatamente al server. se l'utente sta utilizzando l'app in modalità offline, memorizzerò la richiesta localmente, in modo che possa caricarla quando internet è disponibile. Sto usando la classe di raggiungibilità per verificare la disponibilità di Internet. Raggiungibilità funziona perfettamente con l'app. Non riesco a raggiungere il seguente scenario. Avevo memorizzato la richiesta in quanto l'utente sta lavorando in modalità offline, mentre l'utente spingerà l'applicazione in background facendo clic sul pulsante Home in iPhone. dopo un po 'di tempo l'utente attiverà la connessione wifi o cellulare nel suo dispositivo. quando l'utente abilita la connessione Internet, la mia app in background dovrebbe essere notificata e dovrebbe iniziare a inviare la richiesta al server. Come posso ottenere questa funzionalità? Molte app ios potrebbero avere lo stesso requisito. come lo stanno facendo? qualche idea?Come l'app in background può controllare la connessione Internet, IOS?

Ho provato il seguente passo per raggiungere questo obiettivo, ma non ha avuto successo. Cosa sto facendo di sbagliato qui, aiutami.

1) Ho aggiunto osservatore per kReachabilityChangedNotification all'interno del metodo delegato applicationDidEnterBackground. ma la mia app non riesce ad ascoltare la notazione Kreachabiliychaged, in questo metodo.

2) Se aggiungo osservatore per kReachabilityChangedNotification all'interno di applicationdidbecomeActive, la mia app è in grado di ascoltare Kreachabiliychagednotification.

Perché IOS non consente di ascoltare Kreachabiliychagednotification quando l'app è in background?

+0

ciao hai qualche risposta per questa domanda? – souvickcse

+0

hi sei riuscito a risolvere questo problema? – ShayanK

risposta

1

Sono venuto a gestire lo stesso scenario quando ero su un progetto, ma sono venuto a sapere che Per impostazione predefinita in app sfondo Stato rimane per un breve periodo di tempo solo, la maggior parte delle applicazioni si spostano stato sospeso poco dopo. Ciò significa che l'app è in background ma non sta eseguendo il codice. Quindi le notifiche personalizzate implementate non funzionano. Deve requery NetworkReachability a ora di ripristino in App methodes delegato:

applicationWillEnterForeground: 
applicationDidBecomeActive 

questa era la migliore che ho fatto per gestire questo problema, spero che aiuta

+0

Grazie Hemant .. Ma hai idea di come potrebbe fare l'altra app ios? – RockandRoll

+0

penso che @Andrea abbia ragione su questo ... –

4

La risposta è che non è possibile a meno che l'applicazione avrà un di quelli uso specifico (citando Mela doc):

supporto per alcuni tipi di esecuzione di fondo deve essere dichiarata in anticipo l'applicazione che li utilizza. Un'app dichiara il supporto per un servizio utilizzando il suo file Info.plist. Aggiungere la chiave per UIBackgroundModes il file Info.plist e impostare il suo valore su una matrice contenente una o più delle seguenti stringhe:

* audio L'applicazione riproduce i contenuti udibile per l'utente, mentre in sfondo. (Questo contenuto include lo streaming di contenuti audio o video utilizzando AirPlay.)
* posizione: l'app informa gli utenti della loro posizione , anche mentre è in esecuzione in background.
* voip-L'app consente all'utente di effettuare chiamate telefoniche utilizzando una connessione Internet .
* newsstand-content-L'app è un'app per Edicola che scarica ed elabora il contenuto di riviste o giornali nello sfondo .
* accessorio esterno-L'app funziona con un accessorio hardware che deve essere consegnato con aggiornamenti regolari tramite il framework degli accessori esterni .
* bluetooth-central-L'app funziona con un accessorio Bluetooth che deve fornire aggiornamenti su una normale pianificazione attraverso il framework Bluetooth Core.
* bluetooth-peripheral-L'app supporta la comunicazione Bluetooth nella modalità periferica tramite la struttura Core Bluetooth.

È possibile controllare solo per la raggiungibilità di nuovo rientrare in primo piano.

+0

+1 per la spiegazione dettagliata ... –