gpt4 book ai didi

ios - 当应用程序关闭时,通过无法正常工作的通知在我的 webview 应用程序中打开一个 url

转载 作者:行者123 更新时间:2023-11-28 13:54:53 26 4
gpt4 key购买 nike

我有一个接收通知的 webview ios 应用程序,我传递了一个 url,这样当用户点击通知时,它将打开该 url 的 webview。

当应用程序在前台和后台运行时,它工作正常。如果用户在应用关闭且当前未运行时收到通知,则应用会打开但不会转到该 url

在我的 didReceiveRemoteNotification 中,我检测到应用程序的不同状态,但我认为 .background 与未运行时的工作方式相同,但我猜它不会。如何在应用关闭时获取打开 url 的通知?

AppDelegate.swift

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

let data = userInfo as! [String: AnyObject]
let state = UIApplication.shared.applicationState
if state == .background {
// background
//print("==== Active Running ====")
if let aps = data["aps"] {
let url = aps["url"]
viewController?.loadRequestnotification(for: url as! String)
}
}
else if state == .inactive {
// inactive
//print("==== Inactive Running ====")
if let aps = data["aps"] {
let url = aps["url"]
viewController?.loadRequestnotification(for: url as! String)
}
}

}

更新

所以在一些帮助下,我已经能够使用 didFinishLaunchingWithOptions 来调用我的 webview,但是按下时通知仍然没有打开 url。

我在委托(delegate)的其他一些区域使用 viewController?.loadRequestnotification(for: url as!String) 效果很好。我怀疑 return true 可能与调用冲突。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().delegate = self
ConnectionManager.sharedInstance.observeReachability()
// Override point for customization after application launch.
FirebaseApp.configure()
registerForPushNotifications()

if launchOptions != nil {
// opened from a push notification when the app is closed
let userInfo = launchOptions?[.remoteNotification] as? [AnyHashable : Any]
if userInfo != nil {
if let object = userInfo?["aps"] as? [String : AnyObject] {
let url = object["url"]
viewController?.loadRequestnotification(for: url as! String)
}
}
}
return true
}

最佳答案

  • 应用关闭时不会调用 didReceiveRemoteNotification。

    在您的应用关闭时尝试此代码以获取通知数据。

      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    if launchOptions != nil {
    // opened from a push notification when the app is closed
    let userInfo = launchOptions?[.remoteNotification] as? [AnyHashable : Any]
    if userInfo != nil {
    if let object = userInfo?["aps"] {
    let url = object["url"]")
    // Now set root controller here
    }
    }
    } else {
    // opened app without a push notification.
    }
    }

关于ios - 当应用程序关闭时,通过无法正常工作的通知在我的 webview 应用程序中打开一个 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54016449/

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