È impossibile recuperare il centro di notifica a livello di programmazione?
No, non è possibile con alcuna API pubblica.
L'app è agnostica sullo stato corrente del Centro notifiche, in quanto sono due entità disaccoppiate.
In ogni caso, come notato da AdamG, in iOS 7 è possibile implementare
application:didReceiveRemoteNotification:fetchCompletionHandler:
che, secondo il documentation, è chiamato a prescindere dallo stato della vostra applicazione (quindi, anche quando non è in esecuzione o in background).
Per poterlo utilizzare, è necessario supportare la modalità sfondo remote-notification
. Ecco come:
In Xcode 5 e versioni successive, si dichiarano le modalità in background supportate dall'app dalla scheda Capabilities delle impostazioni del progetto. L'attivazione dell'opzione Modalità di background aggiunge la chiave UIBackgroundModes al file Info.plist dell'app. Selezionando una o più caselle di controllo si aggiungono i corrispondenti valori in modalità sfondo a quella chiave.
Ora, anche se non è ancora possibile accedere a livello di programmazione al Centro notifiche, è possibile tenere traccia delle notifiche man mano che vengono.
Un'implementazione deriso sarebbe andato come segue:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
// Hey we got a notification!
// Now we have 30 seconds to do whatever we like...
// ...and then we have to call the completion handler
completionHandler(UIBackgroundFetchResultNoData);
}
fonte
2013-10-07 02:15:30