open objective link app ios xcode url-scheme ios9 xcode7-beta3

objective - ¿Cómo abrir esquemas de URL desde Safari en iOS9?



url scheme objective c (5)

Actualización de la URL de IOS 9 Shchemes: iOS 9 presenta LSApplicationQueriesSchemes para permitir que las aplicaciones consulten si hay otras aplicaciones instaladas.

1- Si se declara un esquema de url y se llama a canOpenURL (esquema)

SÍ si una aplicación instalada admite ese esquema de URL

NO si no hay una aplicación que soporte esa url

syslog mostrará canOpenURL: error para URL: "urlScheme: //" - error: null

2- Si no se declara un esquema de url y se llama a canOpenURL (esquema)

siempre devuelve NO

syslog mostrará canOpenURL: error de URL: "urlScheme: //" - error: null

En iOS 9, el desarrollador debe agregar estos info.plist LSApplicationQueriesSchemes

<array> <string>urlscheme</string> <string>urlscheme2</string> <string>urlscheme3</string> <string>urlscheme4</string> </array>

50 max. Unqiue URL esquema puede ser declarado!

Pude abrir aplicaciones de safari de esta manera:

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

o abre la aplicación de facebook:

window.location = ''fb://'';

Pero esto dejó de funcionar en iOS9.

¿Cómo puedo abrir aplicaciones usando esquemas de URL en safari?


Con iOS9, Apple está cambiando algunas cosas relacionadas con los esquemas de URL. Here hay un artículo sobre esos cambios.

Básicamente, ahora tiene que registrar todos los esquemas de URL que son compatibles con su aplicación en su archivo .plist.


Con la versión general de ios9 configurando window.location en una url personalizada, se inicia la aplicación, pero solo después de que el usuario se abra en una ventana emergente. Presenté un error con Apple acerca de esto, y respondieron diciendo que se trataba de un comportamiento para lanzar una aplicación desde safari. Dijeron que analizarían el problema en el que si presionas cancelar, falla en futuros intentos.


Simplemente asigne una dirección deseada a la propiedad href , en lugar de intentar reemplazar todo el objeto window.location :

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

A mí me funciona en iOS 9.0.2, pero ahora safari muestra un cuadro de diálogo de confirmación para garantizar que un usuario realmente quiera abrir su enlace en la aplicación.


así es como he revisado mi integración de Facebook / inicio de sesión de Google para que funcione en la última actualización. que ahora el usuario ve la web de 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>