2015-04-02 4 views
11

Possiamo avere una notifica locale silenziosa nell'app IOS. Qual è l'elaborazione di alcuni dati in background senza che l'utente possa interagire con esso.Notifica locale silenziosa IOS

Quello che voglio fare è creare una notifica locale silenziosa che spara ogni mattina alle 8:00 e dopo che l'utente lo riceve voglio fare un po 'di elaborazione dei dati e ricrearne uno nuovo che l'utente può vedere con i nuovi dati. elaborato dopo aver visto la prima notifica locale silenziosa.

Sto cercando di evitare l'uso della notifica push il più possibile.

+1

Quando si attiva una notifica locale, non si ottiene alcun controllo dell'app. È solo qualcosa che viene mostrato visivamente all'utente. –

+1

In aggiunta a quanto sopra, solo le notifiche remote (push) ti permetteranno di fare ciò che vuoi fare. – Ollie

+0

Le notifiche locali e push funzionano allo stesso modo in questo senso. non fanno nulla se non li apri. – Kex

risposta

4

È possibile ricevere notifiche silenziose in background su iOS, ma è necessario un server per inviare effettivamente le notifiche.

Per fare questo si attiva la modalità Remote notifications background in scheda Funzionalità del bersaglio:

Screenshot of Background Modes settings

Poi si registra per le notifiche push in application:didFinishLaunchingWithOptions: con

UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeNone categories:nil]; 
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; 

In attesa che l'utente permettendo la vostra applicazione per inviare notifiche push, riceverai il token del dispositivo:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken; 

Se qualcosa va storto, il gestore di fallimento sarà chiamato:

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError: 

Si invia il deviceToken al server e segnalalo per inviare una notifica push in silenzio a quella deviceToken in fase locale del dispositivo di 08:00.

Questo dispositivo avrà il seguente metodo di applicazione delegato chiamato:

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

e si sarà in grado di fare il vostro trattamento dei dati.

Facile!

Non dimenticare di chiamare il gestore di completamento quando hai finito!

+0

Quando dici un server. È un programma non IOS che invia la notifica a un dispositivo come un'attività pianificata o di qualche tipo? Oppure posso fare tutto con la mia app IOS, –

+1

È un programma non iOS, ad es. in esecuzione come cron job su EC2 o qualcosa di simile. –

+1

Quindi si sta utilizzando la notifica remota. Ma sto cercando di allontanarmi dalla notifica remota e la mia domanda riguarda le notifiche locali. –