iOS 13>应用程序被杀死且不在后台时,通用应用程序链接不起作用 [英] iOS 13 > Universal App Links does not work when app is killed and not in background

查看:65
本文介绍了iOS 13>应用程序被杀死且不在后台时,通用应用程序链接不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人知道为什么从通过 Apple-App-Site-Association 定义的iOS 13应用程序链接(通用链接)停止工作吗?

Any idea why starting from iOS 13 app links (universal links) this defines via Apple-App-Site-Association stopped working?

我在ApplicationDelegate和SceneDelegate中有2种实现.现在仅在SceneDelegate中实现,并且仅在应用程序处于后台时才起作用,如果我杀死了应用程序,则不会调用方法continueUserActivity.我添加了触觉反馈来跟踪此方法调用,但是永远不会在ActivityDelegate或SceneDelegate中调用它.

I have 2 implementations in ApplicationDelegate and in SceneDelegate. Now works only implementation in SceneDelegate and only if application is in background, if I kill app then method continueUserActivity isn't called. I have added Haptic Feedback to track this method call but it will never be invoked neither in ActivityDelegate or SceneDelegate.

// MARK: - Universal Links support
extension SceneDelegate {

    func scene(_ scene: UIScene, willContinueUserActivityWithType userActivityType: String) {
        print("[Scene] Will continue user activity: ", userActivityType)
        let generator = UINotificationFeedbackGenerator()
        generator.notificationOccurred(.success)

    }

    func scene(_ scene: UIScene, didFailToContinueUserActivityWithType userActivityType: String, error: Error) {
        print("[Scene] Did fail to continue user activity: ", userActivityType)
    }

    func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {

        print("[Scene] Application continue user activity...")

        if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
            if let url = userActivity.webpageURL {
                if !present(url: url) { UIApplication.shared.open(url, options: [:]) }
            }
        }
    }

和应用程序委托案例

// MARK: - Universal Links support
extension AppDelegate {

    func application(_ application: UIApplication, willContinueUserActivityWithType userActivityType: String) -> Bool {
        print("[App] Will continue user activity: ", userActivityType)
        let generator = UINotificationFeedbackGenerator()
        generator.notificationOccurred(.warning)
        return true
    }

    func application(_ application: UIApplication, didFailToContinueUserActivityWithType userActivityType: String, error: Error) {
        print("[App] Did fail to continue user activity: ", userActivityType)
    }

    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

        print("[App] Application continue user activity...")

        if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
            if let url = userActivity.webpageURL {
                if !present(url: url) { UIApplication.shared.open(url, options: [:]) }
            }
        }
        return true
    }

正在打开应用程序,但未调用方法,并且我无法导航至应用程序内的适当屏幕.

App is being opened but the methods are not called and I cannot navigate to appropriate screen inside my app.

推荐答案

好,我发现您必须执行类似的操作

Ok I've found it you must do something like this

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
   
    if let userActivity = connectionOptions.userActivities.first {
      self.scene(scene, continue: userActivity)
    }
  }

这篇关于iOS 13>应用程序被杀死且不在后台时,通用应用程序链接不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆