2013-06-27 15 views
14

Hey,iOS "Local" Push Notification

ich nach einem Weg suchen, um "lokal" Push-Benachrichtigungen. Ich kann mir nicht vorstellen, wie ich das machen soll, also suche ich Hilfe. Ich brauche:

  • eine Möglichkeit, eine Benachrichtigung für einen Benutzer zu senden, die die Anwendung nicht innerhalb von 24 Stunden geöffnet haben. (Oder dass ein int havent ändern)

Ich hoffe wirklich, dass einer von euch Zeit mir zu helfen, danke!

+6

Ich habe bemerkt, * während der Eingabe eines Tags für Sie * dass ui-local-not ification war ein gelisteter Tag. Das lässt mich bezweifeln, dass du überhaupt versucht hast, eine Lösung für das Problem zu finden, bevor du hierher kommst. – borrrden

Antwort

44

Das ist ziemlich einfach:

1) Wenn die App geschlossen ist, eine lokale Meldung planen, die innerhalb von 24 Stunden

- (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), wenn die App geöffnet wird Feuer (bevor die lokale Benachrichtigung ausgelöst wird), die lokale Benachrichtigung abbrechen

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

Danke, das hat mir sehr geholfen! –

+0

Ich habe eine kurze Frage: - Wenn ich jetzt überprüfen wollen, ob es funktioniert, wie mache ich eine Version, die diese Benachrichtigung innerhalb von 30 oder 10 Sekunden sendet? ändern –

+0

einfach den '60 * 60 * 24' auf' 30' (dies ist die Anzahl der Sekunden von 'Jetzt-) – tilo

1

UILocalNotification werden Sie Anforderungen entsprechen Apple doc

+4

Pls Kommentar nach unten? vielleicht kann ich die Antwort verbessern – Andrea

2

Sie die UILocalNotification für diesen Zweck verwenden können.

und implementieren Ihre UIApplicationapplicationWillTerminate und applicationDidEnterBackground Delegierten wie:

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

Wenn Sie Ihre Anwendung eingeben müssen Sie diese Benachrichtigung stornieren. Also implementieren Sie applicationDidBecomeActive wie;

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