gpt4 book ai didi

ios - 无法从通知操作处理程序打开 URL

转载 作者:可可西里 更新时间:2023-11-01 17:13:39 28 4
gpt4 key购买 nike

我正在尝试通过在 iOS 10/Swift 3 上打开一个 URL 来处理本地通知。我将一个 URL 分配给了通知的默认操作,另一个分配给了自定义操作按钮。

当触发默认操作(点击通知本身)时,应用程序会成功打开 URL。但是,当点击操作按钮时,调用 UNUserNotificationCenterDelegate 处理程序并且 canOpenURL 返回 true,但打开 URL 的调用失败。

仅当应用程序在后台或在点击通知时终止时才会发生此问题。如果应用程序在前台,则两种情况都有效。

我的应用程序委托(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()
}

最佳答案

我终于找到了问题所在:在声明 UNNotificationAction 时,您必须在选项数组中包含 UNNotificationActionOptions.foreground。

关于ios - 无法从通知操作处理程序打开 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43334643/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com