2011-07-28 12 views

Odpowiedz

8

Nie, otrzymasz powiadomienie w appdelegate.

- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification { 
    //Place your code to handle the notification here. 
} 
+0

dzięki. Teraz zachowałem metodę UIAlertView w aplikacji didReceiveLocalNotification, dzięki czemu mogę jej używać zamiast powiadomienia, gdy aplikacja jest już uruchomiona. Ale kiedy aplikacja działa w tle, a powiadomienie jest uruchamiane i gdy aplikacja przychodzi na pierwszy plan, ta metoda jest wywoływana i pojawia się alertViewView. Czy możesz mi powiedzieć, jak mogę tego uniknąć? –

+0

OK, mamy applicationWillEnterForeground: metoda dla tego. Przepraszam głupie pytanie! Wielkie dzięki. –

+0

Nie głupie pytanie - właśnie dałeś mi odpowiedź, której szukałem :-) –

0

jeśli aplikacja jest obecnie w planie następująca funkcja zostanie wywołana w Delegata:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)Notifikation 

można zdecydować, aby pokazać alertview, ale standard nie pojawi się sama

+1

To się nazywa, niezależnie od tego, czy aplikacja już działa, czy nie. –

+0

Tylko jeśli użytkownik kliknie przycisk "Otwórz" ... – Bastian

3

Zrobiłem lib, aby uczynić animację prawie tak samo jak lokalne powiadomienia.

Sprawdź to: https://github.com/OpenFibers/OTNotification

Demo: enter image description here

enter image description here

I można dodawać nowe wiadomości do tego lib, gdy otrzymał wiadomość w

- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification 
{ 
    OTNotificationManager *notificationManager = [OTNotificationManager defaultManager]; 
    OTNotificationMessage *notificationMessage = [[OTNotificationMessage alloc] init]; 
    notificationMessage.title = [self notificationTitle]; 
    notificationMessage.message = @"A notification. Touch me to hide me."; 
    [notificationManager postNotificationMessage:notificationMessage]; 
} 
2

The przyjęte anser ma rację, ale to za mało t o otrzymywać wszystkie powiadomienia i pokazywać coś użytkownikowi od

- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification { 

Musisz sprawdzić, czy jest to bieżące powiadomienie, czy nie. Czasami są uruchamiane inne powiadomienia (na przykład po ich anulowaniu). Tak, trzeba sprawdzić, że jest to, czego z wyjątkiem:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { 
    if (fabs([[NSDate date] timeIntervalSinceDate:[notification fireDate]]) <= 0.5f) 
    { 
     [[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Notification alert", @"") 
            message:notification.alertBody 
            delegate:self 
          cancelButtonTitle:@"Ok" otherButtonTitles:nil] show];  
    } 
} 
0

Swift 2.2:

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { 
    var state = application.applicationState 
    if state == .Active { 
     // handle the notification, e.g. show an alert 
    } 
} 

Swift 3.0:

func application(_ application: UIApplication, didReceive notification: UILocalNotification) { 
    var state: UIApplicationState = application.applicationState 
    if state == .active { 
     // handle the notification, e.g. show an alert 
    } 
} 
Powiązane problemy