URL не передается в appdelegate - PullRequest
1 голос
/ 14 января 2020

Я не могу заставить работать динамические c ссылки или универсальные ссылки. Мое приложение не будет читать по URL. Я начал с проекта fre sh, добавил схему URL com.company.AppLoginView и приведенный ниже код в AppDelegate. Я добавил URL в примечаниях: com.company.AppLoginView: // Регистрация? Пользователь = Имя. При нажатии на ссылку запрашивается открыть приложение, которое затем открывается. Тем не менее, кажется, что ничего не передается в приложение, и ниже не вызывается. Что я делаю неправильно? Это абсолютно пустое приложение и должно работать.

func application(_ app: UIApplication, open url: URL,
                 options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    if let scheme = url.scheme,
        scheme.localizedCaseInsensitiveCompare("com.myApp") == .orderedSame,
        let view = url.host {

        var parameters: [String: String] = [:]
        URLComponents(url: url, resolvingAgainstBaseURL: false)?.queryItems?.forEach {
            parameters[$0.name] = $0.value
        }

        print("View:\(view) Params:\(parameters) Scheme:\(scheme)")

//        redirect(to: view, with: parameters)
    }
    return true
}

Ответы [ 2 ]

1 голос
/ 14 января 2020

Вы должны добавить схему ULR и идентификатор URL к plist. Вы можете использовать это:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>com.company.AppLoginView</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>com.company.AppLoginView</string>
        </array>
    </dict>
</array>

и проверить его методом печати в AppDelegate

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

открыть Safari и ввести свой адрес

com.company .AppLoginView: // Регистрация? Пользователь = Имя

0 голосов
/ 14 января 2020

Это потому, что цель - iOS 13, а SceneDelegate берет на себя некоторые функции из AppDelegate. В частности, open: url заменяется SceneDelegate scene: openURLContexts.

Подробнее здесь: Apple openURLContexts

3 дня моей жизни я не вернусь!

...