canOpenURL возвращает true, и приложение установлено, но приложение не открывается

Когда я использую canOpenURL открыть универсальную ссылку, (целевое приложение установлено)

canOpenURL вернуть истину, но приложение не открывается (LSApplicationQueriesSchemes не зарегистрированы)

но если я использую open(_ url, options) приложение открывается

Если я несу ответственность за отказ от регистрации LSApplicationQueriesSchemes, как мне зарегистрировать ссылки Universal на LSApplicationQueriesSchemes? ( https://www.aaa.com/)

<key>LSApplicationQueriesSchemes</key>
<array>
<string>https://www.aaa.com</string>
</array>

нравится?

1 ответ

Если вы пытаетесь открыть приложение AAA, есть другой способ запустить его изнутри вашего приложения. Вам нужно будет схватитьCFBundleURLSchemesкоторое использует целевое приложение.
Для AAA это "aaamobile". Для AAA Auto Club это "aaamobileace"

Затем вам нужно добавить схемы URL-адресов в свой список:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>aaamobile</string>
</array>

А затем в своем коде вы можете проверить, установлено ли приложение, и запустить приложение или перенаправить пользователя на веб-сайт:

    guard let url = URL(string: "aaamobile://") else { return }
    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.open(URL(string: "https://www.aaa.com")!, options: [:], completionHandler: nil)
    }
Другие вопросы по тегам