我想通過在iOS 10/Swift 3上打開URL來處理本地通知。我有一個URL分配給通知的默認操作,另一個分配給自定義操作按鈕。無法打開來自通知操作處理程序的URL
當默認動作被觸發(點擊通知本身)時,應用程序成功打開URL。但是,當點擊操作按鈕時,將調用UNUserNotificationCenterDelegate
處理程序,並且canOpenURL
返回true,但打開URL的調用失敗。
只有當應用程序處於後臺或者當點擊通知時終止,纔會發生此問題。如果應用程序處於前臺,這兩種情況都可以工作。
我的應用程序代理的application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:])
方法中也有一個斷點。它會觸發默認操作,但不會觸發自定義操作。
處理自定義操作時是否需要採取不同的處理方式?
下面是代碼:
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping() -> Void) {
switch response.actionIdentifier {
case UNNotificationDefaultActionIdentifier:
if let link = URL(string: "myapp://default"),
UIApplication.shared.canOpenURL(link) {
UIApplication.shared.open(link) { result in
print("open url result: \(result)") // this works!
}
}
case "customActionIdentifier":
if let link = URL(string: "myapp://custom"),
UIApplication.shared.canOpenURL(link) {
UIApplication.shared.open(link) { result in
print("open url result: \(result)") // this fails!
}
}
}
completionHandler()
}
你救了我的命:) –