Схема URL с глубокими ссылками не вызывает никакой функции (swift) - PullRequest
2 голосов
/ 02 октября 2019

я реализую глубокую ссылку на iOS. Я настроил схему URL в Project-Setting-> Info-> URL-адресах типа URL-адреса: роль мойки: Viewer

, когда я набираю carwash: // что-то, что браузер просит открыть приложение, но ничего не вызываетсяПриложение, которое я обрабатываю, какое действие должно произойти.

В документации Apple говорится, что вы должны переопределить приложение (открытый URL) в AppDelegate, но глубокая ссылка не вызывает его, и приложение открывается в последнем состоянии

этомой код и доза не работают

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

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        if let url = launchOptions?[UIApplication.LaunchOptionsKey.url] as? URL {
           /// some
            fatalError()
        }
    GMSServices.provideAPIKey("")

    return true
} 

симулятор swift 5: iOS 13

Ответы [ 3 ]

1 голос
/ 06 октября 2019

После нескольких дней борьбы со схемой URL я наконец нашел ответ. iOS версия моего эмулятора - 13в iOS 13 UIApplication открытый URL-адрес не получает вызов (по крайней мере, в моем случае, возможно)

, вам следует переопределить функцию ниже в SceneDelegate, которая доступна в iOS 13:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    if let url = URLContexts.first?.url{
        print(url)

    }
}

Отредактировано: если пользователь нажимает на ссылку, когда ваше приложение не запущено, вы не будете отвечать на нее

Вам необходимо реализовать сцену (_: willConnectTo: options :), чтобы обнаружить URLContext вварианты: и справиться с этим.

0 голосов
/ 02 октября 2019

Вы должны использовать application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool

Обратите внимание, что в вашем методе нет оператора return

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

Ссылки в симуляторе лучше всего выполнять через терминал

xcrun simctl openurl booted “carwasher://deeplink”
0 голосов
/ 02 октября 2019

Вы должны настроить свои глубокие ссылки в файле Info.plist

Пример:

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
            <key>CFBundleURLName</key>
            <string>carwash</string> // your identifier
            <key>CFBundleURLSchemes</key>
            <array>
                <string>carwash</string> // schema
            </array>
        </dict>
    </array>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...