Secondo la documentazione di Apple, posso registrarmi per la notifica silenziosa aggiungendo il valore-chiave "content-available" = 1
nel dizionario del carico utile aps
. Voglio che la mia app si attivi in background quando arriva una notifica silenziosa. Ho impostato App downloads content in response to push notifications
valore al Required background modes
nel mio info.plistLe notifiche push silenziose di Apple avviano la mia app in background?
Questo è il mio dizionario payload
{"aps":
{
"alert":"Notification alert","badge":1,"sound":"default","content-available":1
}
}
sto ottenendo i callback in -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
mentre la mia applicazione è in background. Ma la mia domanda è: possiamo richiamare questo o altri metodi quando la nostra applicazione è in stato di morte?
Non voglio che l'utente app visualizzi la notifica ma voglio che la mia app esegua determinate attività svegliandola in background tramite notifiche silenziose.
Qualsiasi suggerimento sarebbe apprezzato.
Hai ragione ma il problema è se la mia applicazione è in stato di morte e arriva una notifica silenziosa di quanto la mia app non si sta avviando in background. –
ne sei sicuro? Questo può essere difficile da eseguire il debug. Potresti trovarlo più semplice (se il tuo debug-Xcode non è al 100%) per scrivere un log su un file quando la tua app viene avviata in modo che tu possa vedere l'applicazione si sta attivando anche se non sei collegato ad esso con il Xcode debugger. La tecnologia funziona sicuramente, ma [ci sono alcune stranezze occasionali] (http://stackoverflow.com/questions/19239737/silent-push-notification-in-ios-7-does-not-work). – TwoStraws
Se l'app è stata terminata manualmente dall'utente, questo è spesso preso come suggerimento dal sistema operativo che l'utente * davvero * non vuole che funzioni. Certamente diversi altri processi "in background" in iOS (ad esempio trasferimento di file in background con NSURLSession) in particolare * non * avviano la tua app come farebbero normalmente se fossero stati uccisi dallo switcher dell'app.Non conosco questo caso particolare, ma non mi sorprenderebbe scoprire che un'app terminata manualmente non si riattivava sulle notifiche push finché non veniva riavviata manualmente dall'utente. –