canOpenURL возвращает true и приложение установлено, но приложение не открывается - PullRequest
1 голос
/ 24 марта 2020

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

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

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

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

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

как это?

1 Ответ

1 голос
/ 24 марта 2020

Если 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)
    }
...