Joe*_*Joe 5 deep-linking ios swift ios-universal-links ios13
我正在尝试在 iOS 上启用通用链接(作为 Firebase 无密码注册的一部分)。在 iOS 13.2 上本地测试。
apple-app-site-association (AASA) JSON 如下所示 ( https://lokitools.page.link/apple-app-site-association ):
{"applinks":{"apps":[],"details":[{"appID":"43S54AHEMG.com.jkalash.Loki","paths":["NOT /_/*","/*"]}]}}
Run Code Online (Sandbox Code Playgroud)
通用链接确实打开了应用程序,但是我无法处理从它们打开的应用程序。委托方法:
application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Boolapplication(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool从通用链接打开时不会被调用。尝试在后台运行的两个应用程序并强制关闭。AASA 验证器 ( https://branch.io/resources/aasa-validator/ ) 说文件看起来不错,我尝试通过重新安装应用程序并观察控制台日志来排除故障swcd( https://ios13.dev/universal-links -debugging-on-ios-13-cjwsux93w001p6ws1swtstmzc)但没有任何异常显示,看起来确实像下载了 AASA 文件。
我也尝试过遵循 Apple 的故障排除指南(https://developer.apple.com/library/archive/qa/qa1916/_index.html),但失败的最后一步(第 8 步)不包括我的情况,即应用程序确实打开了(iOS 检测到通用链接),但只是没有调用委托方法。
Joe*_*Joe 11
事实证明,这不是一个普遍的链接特定问题,而是 iOS 13 触发应用程序生命周期事件的方式的变化。他们没有通过UIApplicationDelegate,而是通过了UISceneDelegate。
一件令人困惑的事情是应用程序委托方法并未被弃用,因此如果您同时拥有应用程序委托和场景委托方法,但只会调用一个方法,您将不会收到警告。
请参阅iOS 13 中未调用 App 委托方法以获得全面的答案
小智 6
我将 iOS 13 与 Swift 5 一起使用,替换AppDelegate.swift 文件的应用程序 ( :continue: restoreHandler :)方法并将场景 ( :continue:)方法添加到 SceneDelgate.swift 文件
就我而言,在 SceneDelegate.swift 文件中添加以下内容:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let urlToOpen = userActivity.webpageURL else {
return
}
handleURL(urlToOpen)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3172 次 |
| 最近记录: |