2017-07-01 31 views
1

我想在應用程序收到操作響應時訪問AppDelegate.swift中的應用程序數據。我試圖使用在AppDelegate中獲取本地通知的正文或標識符Swift

方法,但我無法找到數據,因爲我無法獲取通知的標識符及其正文。有人能幫我解決嗎?非常感謝你們。

更多的代碼:

//Setting content of the notification 
let content = UNMutableNotificationContent() 
content.title = "Scheduled Task" 
content.body = taskDescriptionTextField.text! 
content.badge = 1 
content.sound = UNNotificationSound.default() 
content.categoryIdentifier = "alertCategory" 
//Setting time for notification trigger 
let date = datePicker.date 
let dateCompenents = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second], from: date) 
let trigger = UNCalendarNotificationTrigger(dateMatching: dateCompenents, repeats: false) 
//Adding Request 
let request = UNNotificationRequest(identifier: taskDescriptionTextField.text!, content: content, trigger: trigger) 
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil) 
+0

也許你錯過了一些東西,而實施它。請再提一些代碼。 –

+0

thx幫助。我不知道如何通過調用方法didReceive響應來獲取通知的標識符或主體內容...有什麼辦法可以將這些數據從另一個ViewController發送到AppDelegate?更多來自下面的ViewController的代碼。 –

+0

可能會研究這個問題: - http://www.appcoda.com/local-notifications-ios8/ 它涵蓋了所有基本的東西。 –

回答

3

務必:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 

    print("original identifier was : \(response.notification.request.identifier)") 
    print("original body was : \(response.notification.request.content.body)") 
    print("Tapped in notification") 
} 

基本上它是什麼,是你得到一個UNNotificationResponse實例回來。該對象有兩個屬性。

  • var actionIdentifier: String
  • var notification: UNNotification < - 您需要使用這一個。

也是一個非常非常好的教程UNUserNotification框架可以發現here


,如果你想找出哪些行動時,他們提出了一個通知,並在用戶選擇(您只使用actionIdenfier他們只是輕拍它!!他們是否只是解僱它?!或者他們選擇了一個自定義動作?!)

//從Apple文檔:用戶可以選擇的動作標識符:

* UNNotificationDismissActionIdentifier if the user dismissed the notification 
* UNNotificationDefaultActionIdentifier if the user opened the application from the notification 
* the identifier for a registered UNNotificationAction for other actions 

它的意思是,你可以用它來這樣做:

switch actionIdentifier { 
case UNNotificationDismissActionIdentifier: // Notification was dismissed by user 
    // Do something 
    completionHandler() 
case UNNotificationDefaultActionIdentifier: // App was opened from notification 
    // Do something 
    completionHandler() 
    // Do something else 
customAction: 
    completionHandler() 
default: 
    completionHandler() 
} 

要創建自定義操作,你應該有:

  • 類別
  • 內創建一個動作
  • 註冊類別

欲瞭解更多信息,請參閱此刻從WWDC 2016 Advance Notifications

相關問題