openURL не вызывается при запуске приложения из Scheme Url (проект Swift) - PullRequest
0 голосов
/ 07 ноября 2019

Когда я открываю свое приложение через myapp://param1=abc, функция open url не вызывается.

Я добавил функции didFinishLaunchingWithOptions и willFinishLaunchingWithOptions, чтобы сделать его true, как говорится в документации Apple. , но это до сих пор не называется. Приложение открывается идеально, но не вызывая функцию open url. Я не могу получить param1

Это мой AppDelegate файл:

class AppDelegate: UIResponder, UIApplicationDelegate  {

    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        return true
    }

    func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        return true
    }

    func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        // Here doesn't come! :(
        return true
    }


    // MARK: UISceneSession Lifecycle


    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }
}

Есть идеи, что может происходить?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

application(_ application: UIApplication, open url не будет звонить во время запуска приложения. вам нужно получить доступ к launchOptions: [UIApplication.LaunchOptionsKey: Any] и вашему URL с помощью [UIApplication.LaunchOptionsKey.url]

Вот фрагмент, который может помочь вам

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        let url = launchOptions![UIApplication.LaunchOptionsKey.url]
        ...

        return true
    }
0 голосов
/ 07 ноября 2019

Подпись метода openUrl в AppDelegate обновлена ​​до

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    return true
}

Вам необходимо добавить свой urlScheme в Типах URL в Информация вкладка в настройках проекта, т.е.

enter image description here


Для Swift-5 и iOS-13:

В файле SceneDelegate.swift необходимо реализовать приведенный ниже метод для обработки urlSchemes, то есть

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    print(URLContexts)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...