iOS Universal Link打开应用程序,不会触发应用程序委托方法

问题描述 投票:0回答:2

我正在尝试在iOS上启用通用链接(作为Firebase的无密码注册的一部分)。在iOS 13.2上进行本地测试]

Apple-app-site-associated(AASA)JSON看起来像这样[https://lokitools.page.link/apple-app-site-association):

{"applinks":{"apps":[],"details":[{"appID":"43S54AHEMG.com.jkalash.Loki","paths":["NOT /_/*","/*"]}]}}

通用链接do打开应用程序,但是我无法通过它们来处理应用程序的打开。委托方法:

  1. application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool
  2. application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool

从通用链接打开时不会被调用。尝试两个应用程序都在后台运行并强制关闭。 AASA验证程序(https://branch.io/resources/aasa-validator/)说文件看起来不错,我已经尝试通过重新安装应用并查看swcdhttps://ios13.dev/universal-links-debugging-on-ios-13-cjwsux93w001p6ws1swtstmzc)的控制台日志进行故障排除,但未显示任何异常,它的确像AASA文件已下载。

我也尝试遵循Apple的故障排除指南(https://developer.apple.com/library/archive/qa/qa1916/_index.html),但失败的最后一步(步骤8)并未涵盖我的情况,因为该应用程序确实已打开(iOS检测到通用链接),但是委托方法只是不没电话。

ios swift deep-linking ios13 ios-universal-links
2个回答
1
投票

事实证明,这不是特定于通用链接的问题,而是iOS 13触发应用程序生命周期事件的方式发生了变化。他们没有通过UIApplicationDelegate,而是通过UISceneDelegate

一个令人困惑的事情是,不赞成使用应用程序委托方法,因此,如果同时具有应用程序委托和场景委托方法,但只会调用一个,则不会收到警告。

请参考App delegate methods aren't being called in iOS 13以获取全面的答案


0
投票

由于您可以打开该应用程序,因此我认为AASA文件的所有功能都很好。在我的情况下,以下委托方法被很好地调用:

func application(_: UIApplication, continue userActivity: NSUserActivity, restorationHandler _: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let url = userActivity.webpageURL else {
        return false
    }
    let urlString = url.absoluteString

    var queryParams: [String: String?] = [:]
    if let components = NSURLComponents(url: url, resolvingAgainstBaseURL: true),
        let params = components.queryItems {
        for param in params {
            queryParams[param.name] = param.value
        }
    }
    return true
}

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.