URL не открываются с добавленной схемой URL - PullRequest
0 голосов
/ 10 июля 2019

Я хочу открыть URL с помощью Google Chrome. Это прекрасно работает, если я заменил префикс url на «googlechrome: //» (ergo google chrome открывает URL).

Однако я также хочу проверить, установлен ли Chrome, для которого я использую метод 'canOpenUrl', для которого я снова понимаю, что мне нужно убедиться, что у меня добавлены соответствующие схемы URL. Пока все хорошо, я добавил «googlechrome» и «googlechromes» в мои схемы URL-адресов в своем списке, и метод «canOpenUrl» возвращает значение true. Однако ничего не происходит, Google Chrome просто не открывается. Что-нибудь очевидное, что мне не хватает?

Этот код работает просто отлично, Google Chrome открывается так долго, что у меня нет ни одной схемы URL в моем списке:

if let googleUrl = URL(string: "googlechrome" + "\(urlString.replaceStringPrefix())") {
    print("openUrl, googleUrl: ", googleUrl)
    UIApplication.shared.open(googleUrl, options: [:])
}

Это ниже возвращает true для canOpenUrl с соответствующей записью plist, но ничего не происходит, Google Chrome не открывается:

<key>CFBundleURLSchemes</key>
    <array>
        <string>googlechrome</string>
        <string>googlechromes</string>
        <string>googlechrome-x-callback</string>
    </array>



if let googleUrl = URL(string: "googlechrome" + "\(urlString.replaceStringPrefix())") {
     print("openUrl, googleUrl: ", googleUrl)
     if UIApplication.shared.canOpenURL(googleUrl) {
           print("Can open url with Chrome, url: ", googleUrl)
           UIApplication.shared.open(googleUrl, options: [:])
     } else {
           print("Cannot open url with Chrome, falling back to Safari")
           if let safariUrl = URL(string: urlString) {
                UIApplication.shared.open(safariUrl, options: [:])
           }
     }
 }

1 Ответ

0 голосов
/ 10 июля 2019

Нашли виновника. canOpenUrl вернет true с записью plist выше, правильный ключ для фактического открытия в соответствующих приложениях - LSApplicationQueriesSchemes, что приводит к следующему:

        <key>LSApplicationQueriesSchemes</key>
        <array>
            <string>googlechrome</string>
            <string>googlechromes</string>
            <string>googlechrome-x-callback</string>
        </array>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...