2011-07-28 30 views

Trả lời

8

Không, bạn sẽ nhận được thông báo trong appdelegate.

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

Thanks a lot. Bây giờ, tôi đã giữ một UIAlertView trong ứng dụng phương thức didReceiveLocalNotification để tôi có thể sử dụng nó thay cho thông báo khi ứng dụng đang chạy. Nhưng khi ứng dụng ở chế độ nền và thông báo được kích hoạt và khi ứng dụng đến nền trước, phương thức này được gọi và cảnh báo đó xuất hiện. Bạn có thể cho tôi biết làm thế nào tôi có thể tránh điều này. –

+0

Được rồi, chúng tôi có applicationWillEnterForeground: phương pháp cho điều đó. Xin lỗi câu hỏi ngu ngốc! Cảm ơn rất nhiều. –

+0

Không phải là một câu hỏi ngu ngốc - bạn chỉ cần cho tôi câu trả lời tôi đang tìm kiếm :-) –

0

nếu ứng dụng của bạn hiện đang trong foreground chức năng sau đây sẽ được gọi trong ủy quyền của bạn:

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

sau đó bạn có thể quyết định để hiển thị một alertview, nhưng một trong những tiêu chuẩn sẽ không hiển thị bởi chính nó

+1

Điều này được gọi là bất kể ứng dụng đã chạy hay chưa. –

+0

Chỉ khi người dùng nhấp vào nút "mở" ... – Bastian

3

Tôi đã tạo một thư viện để tạo hoạt ảnh gần giống như thông báo của địa phương.

Kiểm tra này: https://github.com/OpenFibers/OTNotification

Demo: enter image description here

enter image description here

Và bạn có thể gửi một tin nhắn mới đến lib này khi bạn nhận được một tin nhắn trong

- (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

Các chấp nhận anser là đúng, nhưng nó không đủ t o nhận tất cả thông báo và hiển thị nội dung nào đó cho người dùng từ

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

Bạn phải kiểm tra, có phải là thông báo hiện tại hay không. Thỉnh thoảng, có một số thông báo khác (ví dụ: khi bạn hủy chúng). Vì vậy, bạn phải kiểm tra, đó là những gì bạn ngoại trừ:

- (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 
    } 
} 
Các vấn đề liên quan