打开通知时在 WKWebView 中加载 url
Load url in WKWebView when notification is opened
我正在使用 OneSignal 发送推送通知,我收到的很好。我的问题是,当我点击通知时,我希望它打开通知 url。我有 notificationUrl,但在我的 WKWebView 中加载 url 是我的问题。我使用的是 SwiftUi App 生命周期,而不是 UiKit。所以请注意,我没有 ViewController.
我试过使用 UIApplication.shared.open(URL(string: notificationUrl)!)
,但这会在浏览器中打开 link。
这是我在 AppDelegate 中打开的通知处理程序。
.....
let osNotificationOpenedBlock: OSNotificationOpenedBlock = { resultObj in
let notification: OSNotification = resultObj.notification
let actionType = resultObj.action.type
let dataObj = resultObj.notification.additionalData
let notificationUrl = "\(dataObj?["notificationUrl"] ?? "")"
UIApplication.shared.open(URL(string: notificationUrl)!)
}
OneSignal.setNotificationOpenedHandler(osNotificationOpenedBlock)
....
对我有用的是使 webview 变量成为代码中的全局变量。所以在 WebView.swift 或你的 webview 文件中,将 WKWebView
变量放在结构的外部并应用:
var wbWebViewEl: WKWebView = WKWebView()
struct SwiftUiWebView: UIViewRepresentable {
...
然后,而不是:
UIApplication.shared.open(URL(string: notificationUrl)!)
做:
var notificationRequestEl = URLRequest(url: url!)
wbWebViewEl.load(notificationRequestEl)
我正在使用 OneSignal 发送推送通知,我收到的很好。我的问题是,当我点击通知时,我希望它打开通知 url。我有 notificationUrl,但在我的 WKWebView 中加载 url 是我的问题。我使用的是 SwiftUi App 生命周期,而不是 UiKit。所以请注意,我没有 ViewController.
我试过使用 UIApplication.shared.open(URL(string: notificationUrl)!)
,但这会在浏览器中打开 link。
这是我在 AppDelegate 中打开的通知处理程序。
.....
let osNotificationOpenedBlock: OSNotificationOpenedBlock = { resultObj in
let notification: OSNotification = resultObj.notification
let actionType = resultObj.action.type
let dataObj = resultObj.notification.additionalData
let notificationUrl = "\(dataObj?["notificationUrl"] ?? "")"
UIApplication.shared.open(URL(string: notificationUrl)!)
}
OneSignal.setNotificationOpenedHandler(osNotificationOpenedBlock)
....
对我有用的是使 webview 变量成为代码中的全局变量。所以在 WebView.swift 或你的 webview 文件中,将 WKWebView
变量放在结构的外部并应用:
var wbWebViewEl: WKWebView = WKWebView()
struct SwiftUiWebView: UIViewRepresentable {
...
然后,而不是:
UIApplication.shared.open(URL(string: notificationUrl)!)
做:
var notificationRequestEl = URLRequest(url: url!)
wbWebViewEl.load(notificationRequestEl)