2010-07-30 27 views
18

Tôi đang tạo một ứng dụng đặt thông báo cục bộ.Cách xóa thông báo cục bộ trong iPhone

Rất may tôi đã có thể đặt thông báo cục bộ nhưng tôi không biết cách xóa thông báo do ứng dụng của tôi đặt.

XCode cung cấp chức năng xóa với removeAllNotifications nhưng bạn không thể xóa các thông báo cụ thể do ứng dụng đặt ra.

Cảm ơn rất nhiều.

+2

Kiểm tra điều này: http://stackoverflow.com/questions/6340664/delete-a-particular-local-notification – user3835691

Trả lời

12
[[UIApplication sharedApplication] cancelLocalNotification:notification] 
70

Bạn hỏi câu hỏi này hai lần, vì vậy tôi trả lời trên cả hai câu hỏi với hy vọng nó đạt bạn:

Hủy bỏ tất cả thông báo địa phương với mã này:

[[UIApplication sharedApplication] cancelAllLocalNotifications]; 

Hủy bỏ một thông báo địa phương với dòng mã này:

[[UIApplication sharedApplication] cancelLocalNotification:theNotification]; 

trong đó theNotification là đối tượng UILocalNotification, do đó, để hủy thông báo cụ thể bạn cần giữ lại là UILocalNotification.


Bạn có thể tìm thêm nội dung trong apple's documentation.

+0

Xin chào Thomas, bạn sẽ lưu hoặc nhận đối tượng thông báo đó ở đâu? –

+0

Nếu bạn không muốn hủy tất cả thông báo, bạn sẽ phải giữ NSNotification mà bạn có thể muốn hủy trong bộ nhớ ở đâu đó. Có thể là thuộc tính của một lớp thích hợp chứa một mảng NSNotifications. – winsmith

+0

thomas, tôi đã tìm thấy câu trả lời bằng cách tuần tự hóa đối tượng UILocalNotification –

1

Bạn có thể hủy thông báo bằng hàm sau: [[UIApplication sharedApplication]cancelNotification:object Of your UILocalNotification]

+0

Điều này không đưa ra 1 với vòng tròn xung quanh nó trên biểu tượng ứng dụng. Có cách nào để thực hiện điều này không? – coolcool1994

2

helloou, nhìn, trong nhanh chóng bạn có thể tạo một thông báo địa phương:

var notif = UILocalNotification() 
     notif.timeZone = NSTimeZone.defaultTimeZone() 

     let morningOfChristmasComponents = NSDateComponents() 
     morningOfChristmasComponents.year = 2016 
     morningOfChristmasComponents.month = 03 
     morningOfChristmasComponents.day = 30 
     morningOfChristmasComponents.hour = 15 
     morningOfChristmasComponents.minute = 59 
     morningOfChristmasComponents.second = 0 

     let morningOfChristmas = NSCalendar.currentCalendar().dateFromComponents(morningOfChristmasComponents)! 

     let formatter = NSDateFormatter() 
     formatter.dateStyle = NSDateFormatterStyle.LongStyle 
     formatter.timeStyle = .MediumStyle 

     let dateString = formatter.stringFromDate(morningOfChristmas) 

     notif.fireDate = morningOfChristmas 
     notif.alertBody = "alarma wolf" 
     notif.userInfo = ["identificador": "wolf"] 
     UIApplication.sharedApplication().scheduleLocalNotification(notif) 
     print("alarma fijada para \(dateString)") 

loo các UserInfo là một indeitifer cho bạn thông báo địa phương, bây giờ, nếu bạn muốn xóa một thông báo cụ thể tại địa phương, hãy thử:

var uidtodelete = "wolf" 
     var app:UIApplication = UIApplication.sharedApplication() 
     for oneEvent in app.scheduledLocalNotifications! { 
      var notification = oneEvent as UILocalNotification 
      let userInfoCurrent = notification.userInfo! as! [String:AnyObject] 
      let uid = userInfoCurrent["identificador"]! as! String 
      if uid == uidtodelete { 
       //Cancelling local notification 
       app.cancelLocalNotification(notification) 
       break; 
      } 
     } 

xem phương pháp, ở trên, userInfoCurrent là định danh của địa phương bạn thông báo, và uitodelete là một chuỗi có chứa chìa khóa cụ thể của thông báo locla mà bạn muốn xóa ...

aaaa ... nếu bạn muốn xóa tất cả thông báo địa phương mà bạn có thể sử dụng

UIApplication.sharedApplication () .cancelAllLocalNotifications()

oki

tôi hy vọng bạn phục vụ cho bản thân hoặc người khác những thông tin này ..

tốt tạm biệt, andforgive xấu tiếng Anh của tôi

012.
Các vấn đề liên quan