2013-06-27 33 views
14

Hey,iOS Notifica "locale" Push

Sto cercando un modo per rendere "locale" le notifiche push. Non riesco a capire come dovrei farlo, quindi sto cercando un aiuto. Quello che mi serve è:

  • un modo per inviare una notifica per un utente che non ha aperto l'applicazione entro 24 ore. (O che una variazione int havent)

spero davvero che uno di voi ha ottenuto il tempo di aiutarmi, grazie!

+6

Ho notato * durante la digitazione di un tag per te * che ui-local-not ificazione era un tag elencato. Questo mi fa dubitare che tu abbia provato a trovare una soluzione per il problema prima di venire qui. – borrrden

risposta

44

Questo è piuttosto semplice:

1) Quando l'applicazione viene chiusa, pianificare una notifica locale che il fuoco in 24 ore

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    UILocalNotification *notification = [[UILocalNotification alloc] init]; 
    notification.fireDate = [[NSDate date] dateByAddingTimeInterval:60*60*24]; 
    notification.alertBody = @"24 hours passed since last visit :("; 
    [[UIApplication sharedApplication] scheduleLocalNotification:notification]; 
} 

2) se si apre l'applicazione (prima dell'invio della notifica locale), annulla la notifica locale

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 
} 
+0

Grazie, questo ha aiutato molto! –

+0

Ho una breve domanda: - Se ora voglio verificare se funziona, come faccio a creare una versione che invia questa notifica entro 30 o 10 secondi? –

+0

Basta cambiare il '60 * 60 * 24' a' 30' (questo è il numero di secondi da 'now') – tilo

1

UILocalNotification fa per voi requisiti Apple doc

+4

Pls comment downvoting? forse posso migliorare la risposta – Andrea

2

È possibile utilizzare il UILocalNotification per questo scopo.

e l'implementazione della UIApplicationapplicationWillTerminate e applicationDidEnterBackground delegati come:

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    [self scheduleNotification]; 
} 

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [self scheduleNotification]; 
} 

- (void)scheduleNotification 
{ 
    UILocalNotification *locNot = [[UILocalNotification alloc] init]; 
    locNot.fireDate    = [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24]; 
    [[UIApplication sharedApplication] scheduleLocalNotification: locNot]; 
} 

Quando si entra per la vostra applicazione è necessario annullare questa notifica. Quindi implementare applicationDidBecomeActive come;

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 
} 
Problemi correlati