Nella nostra app, vogliamo scaricare una piccola quantità di dati in risposta a una notifica push. Finora, le notifiche push funzionano senza intoppi, avviando l'app in background e provocando la chiamata a RecectiveRemoteNotification.Il codice asincrono non viene eseguito finché l'applicazione non viene messa in primo piano nell'applicazione: didReceiveRemoteNotification: fetchCompletionHandler:
Il problema è che, dopo il ritorno di questo metodo, l'app non ottiene più tempo CPU fino a quando non viene nuovamente in primo piano, quindi non c'è alcuna possibilità di recuperare quei dati in modo asincrono in background.
Riducendo questo al caso più semplice, non riesco ancora a eseguire il codice asincrono.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
[application setApplicationIconBadgeNumber:1];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[application setApplicationIconBadgeNumber:9];
completionHandler(UIBackgroundFetchResultNewData);
});
}
In risposta a una spinta, l'applicazione lancia in background e il conteggio distintivo è impostato su 1, ma il numero distintivo non è impostato a 9 fino a quando l'applicazione viene avviata dalla schermata iniziale.
Non dovrebbe iOS continuare a eseguire l'app fino a quando non viene chiamato il gestore di completamento, fino a 30 secondi?
Info.plist ha specificato la modalità di background per la notifica remota, il payload push contiene 'content-available': '1' e non si esce dall'app passando il dito sullo switcher dell'app.
Per aggiungere, stiamo usando Analizza per inviare questa notifica push utilizzando il seguente JavaScript:
Parse.Push.send({
where: installationQuery,
data: {
"content-available": 1,
}
}, { success: function() {},
error: function(error) {}
});
Hai provato questo: http://stackoverflow.com/questions/16295953/dispatch-after-is-limited-to-10-seconds? – anhtu