Как открыть схемы URL из Safari в iOS9?
Мне удалось открыть приложения с сафари следующим образом:
window.location = 'myapp://do/xx';
или открыть приложение facebook:
window.location = 'fb://';
Но это перестало работать в iOS9.
Как открыть приложения с использованием схем URL в сафари?
Ответы
Ответ 1
Обновление URL-адресов URL-адресов IOS 9:
iOS 9 представляет LSApplicationQueriesSchemes, чтобы приложения могли запрашивать, установлены ли другие приложения.
1- Если объявлена url-схема и вызывается canOpenURL (схема)
ДА, если установленное приложение поддерживает эту схему URL
НЕТ, если приложение не поддерживает этот URL
syslog покажет canOpenURL: не удалось URL: "urlScheme://" - error: null
2- Если схема URL не объявлена и вызов canOpenURL (схема)
всегда возвращать NO
syslog покажет canOpenURL: не удалось URL: "urlScheme://" - error: null
В iOS 9 разработчик должен добавить этот info.plist
LSApplicationQueriesSchemes
<array>
<string>urlscheme</string>
<string>urlscheme2</string>
<string>urlscheme3</string>
<string>urlscheme4</string>
</array>
50 макс. Unqiue URL-схема может быть объявлена!
Ответ 2
В iOS9 Apple меняет некоторые аспекты схем URL. Здесь приведена статья об этих изменениях.
В принципе, у вас теперь есть, чтобы зарегистрировать все схемы URL, поддерживаемые вашим приложением в вашем файле .plist.
Ответ 3
При общем выпуске установки iOS9 window.location на пользовательский url запускает приложение, но только после того, как пользователь всплывает во всплывающем окне. Я подал ошибку с яблоком об этом, и они ответили, что это было предназначено для запуска приложения из сафари. Они сказали, что они рассмотрят вопрос, где, если вы нажмете на отмену, он не удастся выполнить будущие попытки.
Ответ 4
Просто присвойте желаемый адрес свойству href
вместо того, чтобы пытаться заменить весь объект window.location
:
window.location.href = 'myapp://do/xx';
Он работает для меня на iOS 9.0.2, но теперь сафари показывают диалог подтверждения, чтобы пользователь действительно хотел открыть вашу ссылку в приложении.
Ответ 5
Вот как я переработал мою интеграцию с Facebook/Google Login, чтобы заставить ее работать с последним обновлением. который теперь пользовательский веб-просмотр Safari.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>com.googleusercontent.apps.39373238582-opjuqokmar2i5t3sdk2vs5sifer4moen</string>
<string>com-google-gidconsent-google</string>
<string>com-google-gidconsent-youtube</string>
<string>com-google-gidconsent</string>
<string>com.google.gppconsent.2.4.1</string>
<string>com.google.gppconsent.2.4.0</string>
<string>googlechrome</string>
<string>googlechrome-x-callback</string>
</array>