2013-06-27 14 views
14

Hej,iOS Notification "Local" Push

szukam sposób, aby "lokalne" push powiadomień. Nie wiem, jak mam to zrobić, więc szukam pomocy. Potrzebuję:

  • sposób wysłania powiadomienia dla użytkownika, który nie otworzył aplikacji w ciągu 24 godzin. (Albo że zmiana int przystań)

Naprawdę mam nadzieję, że ktoś z was miał czas, aby mi pomóc, dzięki!

+6

Zauważyłem * podczas pisania tagu dla ciebie * że ui-local-not ification był wymienionym znacznikiem. To sprawia, że ​​wątpię, czy próbowałeś znaleźć rozwiązanie problemu przed przyjazdem tutaj. – borrrden

Odpowiedz

44

Jest to dość proste:

1) Gdy aplikacja zostanie zamknięta, zaplanować lokalnej powiadomienie, że będzie pożar w ciągu 24 godzin

- (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), jeśli aplikacja jest otwarty (przed uruchomieniem powiadomienia lokalnego) anuluj lokalne powiadomienie

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

Dzięki, to bardzo pomogło! –

+0

Mam krótkie pytanie: - Jeśli chcę teraz sprawdzić, czy działa, w jaki sposób mogę utworzyć wersję, która wyśle ​​to powiadomienie w ciągu 30 lub 10 sekund? –

+0

Wystarczy zmienić '60 * 60 * 24' na' 30' (jest to liczba sekund od 'teraz') – tilo

1

UILocalNotification będzie Ci odpowiadać wymaganiom Apple doc

+4

Pls komentuje downvoting? może mogę poprawić odpowiedź – Andrea

2

Można użyć UILocalNotification do tego celu.

I zaimplementować UIApplicationapplicationWillTerminate i applicationDidEnterBackground delegaci jak:

- (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]; 
} 

Po wejściu do aplikacji trzeba anulować to powiadomienie. Więc zaimplementuj applicationDidBecomeActive jak;

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 
} 
Powiązane problemy