Подтвердить что ты не робот

Как открыть схемы URL из Safari в iOS9?

Мне удалось открыть приложения с сафари следующим образом:

window.location = 'myapp://do/xx';

или открыть приложение facebook:

window.location = 'fb://';

Но это перестало работать в iOS9.

Как открыть приложения с использованием схем URL в сафари?

4b9b3361

Ответ 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>