2013-10-07 11 views
5

Come per la guida di Apple:iPhone come accedere al centro di notifica a livello di codice

Se l'icona dell'applicazione viene prelevata su un dispositivo con iOS, l'applicazione chiama lo stesso metodo, ma fornisce alcuna informazione circa la notifica. Se l'icona dell'applicazione si fa clic su un computer che esegue

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html#//apple_ref/doc/uid/TP40008194

Per quanto ho conosciuto, non sembra essere in grado di rilevare la notifica quando l'icona dell'applicazione è sfruttato.

Così ho provato a recuperare il centro di notifica a livello di codice, ma sembra anche impossibile.

È impossibile recuperare il centro di notifica a livello di programmazione?

Quello che voglio fare è rilevare se le notifiche ricevute o meno anche quando l'applicazione è in background.

risposta

6

È 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); 
} 
0

In iOS 7 c'è un modo per farlo.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler 

e poi fare tutto ciò che è necessario fare in app per gestire la notifica e assicurarsi di registrare che è stato ricevuto dal telefono.

Quando arriva una notifica push, il sistema visualizza la notifica all'utente e avvia l'app in background (se necessario) in modo che possa chiamare questo metodo. Utilizzare questo metodo per scaricare tutti i dati relativi alla notifica push. Quando il tuo metodo è terminato, chiama il blocco nel parametro handler.

Trovato here.

1

Mi interessa sapere se iOS 8 cambierà nulla qui e ci darà l'accesso al Centro di notifica Widget dalla misura iOS 8 Apps?

Gavin

Problemi correlati