Универсальные ссылки из закрытого приложения не работают

У меня есть настройка приложения для обработки универсальных ссылок. Мы обрабатываем получение URL-адреса и навигацию по URL-адресу внутри этой функции:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        guard NSUserActivityTypeBrowsingWeb == userActivity.activityType, let url = userActivity.webpageURL else {
            return false
        }
        // Do navigation to correct page based on URL
        return true
    }

Это отлично работает для нас, когда наше приложение ранее работало в фоновом режиме и использовалась универсальная ссылка.

Однако, когда я полностью закрываю приложение и нажимаю на универсальную ссылку, эта функция, похоже, не работает, и поэтому она вообще не обрабатывает универсальную ссылку, а просто переводит пользователя на домашнюю вкладку.

Я пытался получить URL-адрес в application(didFinishLaunchingWithOptions:) и application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]), но ни один из них, похоже, не вызывается.

У кого-нибудь есть идеи по этому поводу?

Благодарю вас!


person Logan    schedule 26.02.2019    source источник
comment
Вы поняли, что здесь происходит? Я столкнулся с той же проблемой   -  person melaka    schedule 05.11.2019
comment
Вы нашли проблему??? Я также сталкиваюсь с точно такой же проблемой.   -  person Danish Farooq    schedule 19.04.2021


Ответы (2)


На application(didFinishLaunchingWithOptions:) URL находится внутри параметров. Пожалуйста, проверьте это снова.

Документы Apple: launchOptions Словарь, указывающий причину запуска приложения (если есть). Содержимое этого словаря может быть пустым в ситуациях, когда пользователь запустил приложение напрямую. Сведения о возможных ключах в этом словаре и о том, как с ними обращаться, см. в разделе Ключи параметров запуска.

https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622921-application

person Julius    schedule 26.02.2019

Swift 5 IOS 14 Когда приложение закрыто, используйте

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Get URL components from the incoming user activity.
        guard let userActivity = connectionOptions.userActivities.first,
              userActivity.activityType == NSUserActivityTypeBrowsingWeb,
              let incomingURL = userActivity.webpageURL
        else { return }
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            LinkHandler.sharedInstance.handleLink(url: incomingURL)
        }
        guard let _ = (scene as? UIWindowScene) else { return }
    }
person Dmih    schedule 23.10.2020