【发布时间】:2020-03-31 23:46:02
【问题描述】:
我正在尝试处理通过通用链接点击打开的应用程序。在 ios 13 以下,它运行良好,但对于 ios 13,它的唯一应用程序在后台运行。如果应用无法在前台或后台运行,单击链接会打开未调用 continue userActivity 功能的应用。我还尝试在场景委托中将它连接到委托中。但还是不叫 我的代码在下面有什么问题?
场景代理
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
if connectionOptions.userActivities.first != nil {
self.scene(scene, continue: userActivity!)
}
}
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
continueUserActivity(userActivity: userActivity)
}
func continueUserActivity(userActivity : NSUserActivity){
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
let dataDict:[String: String] = [AppLinkManager.appLinkExtraKey: url.absoluteString]
NotificationCenter.default.post(name: .didReceiveAppLink, object: nil, userInfo: dataDict)
}
}
应用委托
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if let userActivityDict = launchOptions?[.userActivityDictionary] as? [AnyHashable : Any],
let userActivity = userActivityDict["UIApplicationLaunchOptionsUserActivityKey"] as? NSUserActivity {
continueUserActivity(userActivity: userActivity)
}
return true
}
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
continueUserActivity(userActivity: userActivity)
return true
}
func continueUserActivity(userActivity : NSUserActivity){
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
let dataDict:[String: String] = [AppLinkManager.appLinkExtraKey: url.absoluteString]
NotificationCenter.default.post(name: .didReceiveAppLink, object: nil, userInfo: dataDict)
}
}
【问题讨论】:
-
你找到解决办法了吗?
-
我遇到了同样的问题。当应用程序关闭或从最近的应用程序中滑动时,我单击我的动态链接应用程序打开,但我没有得到 url 信息。当应用程序仍在后台或前台运行并且我单击链接时,一切都按预期工作,正确接收 url。
-
有什么解决办法吗?
标签: ios swift ios13 uiscenedelegate