ewe*_*erx 4 openurl ios uilocalnotification ios10 unusernotificationcenter
我试图通过在iOS 10/Swift 3上打开URL来处理本地通知.我有一个URL分配给通知的默认操作,另一个分配给自定义操作按钮.
触发默认操作(点击通知本身)后,应用程序会成功打开URL.但是当点击操作按钮时,UNUserNotificationCenterDelegate调用处理程序并canOpenURL返回true,但是打开URL的调用失败.
仅当应用程序在后台或在点击通知时终止时才会出现此问题.如果应用程序位于前台,则两种情况都有效.
我的app delegate 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()
}
Run Code Online (Sandbox Code Playgroud)
我终于找到了问题:在声明UNNotificationAction时,您必须在options数组中包含UNNotificationActionOptions.foreground.
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |