Enlaces universales de iOS 9
Cuando admite enlaces universales, los usuarios de iOS pueden hacer clic en un enlace a su sitio web y ser redirigidos sin problemas a la aplicación instalada sin tener que pasar por Safari. Si su aplicación no está instalada, haga clic en el enlace de su sitio web para abrir su sitio web en Safari.
Los enlaces universales le brindan varias ventajas importantes que no obtiene cuando utiliza un esquema de URL personalizado. En concreto, los enlaces universales son:
Únicos. A diferencia de los esquemas de URL personalizados, otras aplicaciones no pueden declarar enlaces universales porque utilizan HTTP o HTTPS estándar para vincular a su sitio.
Seguro. Cuando un usuario instala su aplicación, iOS verifica el archivo que cargó en su servidor web para asegurarse de que su sitio web permita que su aplicación abra URL en su nombre. Sólo usted puede crear y cargar este archivo, por lo que la asociación de su sitio web con su aplicación es segura.
Flexibles. Los enlaces universales funcionan incluso si su aplicación no está instalada. Cuando su aplicación no está instalada, al hacer clic en un enlace a su sitio web se abre el contenido en Safari como el usuario espera.
Sencillo. Una URL funciona para su sitio web y su aplicación.
Privado. Otras aplicaciones pueden comunicarse con su aplicación sin saber si su aplicación está instalada.
Nota
Los enlaces universales permiten a los usuarios abrir su aplicación antes de hacer clic en un enlace a su sitio web en las páginas WKWebView, UIWebView y Safari, así como enlaces que resultan en una llamada a openURL: , por ejemplo, enlaces que ocurren en Mail, Mail y otras aplicaciones.
Cuando un usuario navega por su sitio en Safari y hace clic en un enlace universal a una URL que está en el mismo dominio que la página web actual, iOS respeta la intención más probable del usuario y abre el enlace en Safari. Si un usuario hace clic en un enlace universal con una URL en un dominio diferente, iOS abre el enlace en su aplicación.
Para los usuarios que ejecutan versiones de iOS anteriores a la 9.0, al hacer clic en un enlace universal a su sitio web se abrirá el enlace en Safari.
Agregar soporte para enlaces universales es fácil. Debe seguir los siguientes tres pasos:
Cree un archivo de asociación de sitio de aplicación de Apple que contenga datos JSON para las URL que su aplicación pueda manejar.
Sube el archivo apple-app-site-association a tu servidor web HTTPS. Puede colocar el archivo en el directorio raíz del servidor o en el subdirectorio .well-known.
Prepara tu aplicación para manejar enlaces universales.
Puedes probar enlaces universales en tu dispositivo.
Crea y sube archivos de asociación
Para establecer una conexión segura entre tu sitio web y tu aplicación, establecerás una relación de confianza entre ellos. Esta relación se establece en dos partes:
el archivo apple-app-site-association que agrega a su sitio
los dominios com.apple.developer.associated a los que agrega derechos su aplicación (descrita en esta sección Preparación de su aplicación para manejar enlaces universales)
Puede obtener más información sobre cómo las aplicaciones y los sitios web comparten credenciales web en la referencia " *** Compartir credenciales web Más información sobre las credenciales compartidas de China .
Nota
Si su aplicación se ejecuta en iOS 9 o posterior y usa HTTPS para entregar el archivo apple-app-site-association, puede crear una aplicación usando /jsonMIME tipo simple archivo de texto sin firmarlo. Si tiene soporte para cambiar y compartir credenciales de red en iOS 8, aún debe firmar el archivo como se describe en Referencia de credenciales web compartidas.
Deberá proporcionar archivos separados para cada dominio del contenido exclusivo de apple-app-site-association que admite su aplicación. Por ejemplo, apple.com y desarrollador.apple.com requieren archivos apple-app-site-association separados porque estos dominios ofrecen contenido diferente. Por el contrario, apple.com y www.apple.com no requieren archivos de asociación de sitios separados, ya que ambos dominios ofrecen el mismo contenido, pero ambos dominios deben hacer que el archivo esté disponible. Para aplicaciones que se ejecutan en iOS 9.3.1 y versiones posteriores, el tamaño sin comprimir del archivo de asociación de sitio de aplicación de Apple no debe superar los 128 KB, independientemente de si el archivo está firmado.
En su archivo apple-app-site-association, especificará las rutas de su sitio que deben tratarse como enlaces universales y las rutas que no deben tratarse como enlaces universales. Mantenga las listas de rutas bastante cortas y confíe en la coincidencia de comodines para hacer coincidir conjuntos de rutas más grandes. El Listado 6-1 muestra un ejemplo de un archivo apple-app-site-association que identifica tres rutas que deben tratarse como enlaces universales.
Listado 6-1 Creando el archivo apple-app-site-association
{
"applinks": {
"apps " : [],
"detalles": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"rutas": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"rutas": [ "*" ]
}
]
}
}
Nota
No agregue .json al nombre del archivo apple-app-site-association.
La clave de aplicaciones apple-app-site-association en el archivo debe existir y su valor debe ser una matriz vacía, como se muestra en el Listado 6-1. El valor de la clave de detalles es una serie de diccionarios, uno para cada aplicación que admite su sitio. El orden de los diccionarios en la matriz determina el orden que sigue el sistema cuando busca coincidencias, por lo que puede especificar una aplicación para manejar partes específicas de su sitio web.
Cada diccionario específico de la aplicación contiene una clave appID y una clave de rutas. El valor de la clave appID es el ID del equipo o el prefijo del ID de la aplicación, seguido del ID del paquete. (El valor de appID es el valor asociado con la clave "Identificador de aplicación" en el derecho en el que se crea la aplicación). El valor de la clave de rutas es una matriz de cadenas que especifican las partes de los sitios web que admite la aplicación y los sitios web que No desea estar asociado con la parte de la aplicación. Para especificar una región que no debe tratarse como un enlace universal, agregue "NOT" (incluido un espacio T) al principio de la cadena de ruta. Por ejemplo, el archivo que se muestra en el Listado 6-1 apple-app-site-association puede evitar que la zona /videos/wwdc/2010/* sea tratada como un enlace universal actualizando la matriz de rutas de la siguiente manera:
"paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/*", "/videos/wwdc/201?/*"]
Porque las rutas del sistema seguir Cada ruta de la matriz se evalúa en el orden especificado y la evaluación se detiene cuando se encuentra una coincidencia positiva o negativa; las rutas de alta prioridad deben especificarse antes que las de baja prioridad. Tenga en cuenta que sólo se utiliza el componente de ruta de la URL para la comparación.
Se ignoran otros componentes, como cadenas de consulta o identificadores de fragmentos.
Hay varias formas de especificar la ruta del sitio web en el archivo apple-app-site-association. Por ejemplo, puede:
Especificar todo el sitio web usando *
Incluir una URL específica, como /wwdc/news/ Especificar un enlace específico
Agregar * Para una URL específica, como /videos/wwdc/2015/*, especifique parte de su sitio web
Además de usar * para hacer coincidir cualquier subcadena, también puede usar ? Puede combinar dos caracteres comodín en una sola ruta, como /foo/*/bar/201?/mypage.
Nota
La cadena utilizada para especificar la ruta del sitio web en la matriz de rutas distingue entre mayúsculas y minúsculas.
Después de crear el archivo apple-app-site-association, cárguelo en el directorio raíz o en el subdirectorio .well-known de su servidor web HTTPS. Se debe acceder al archivo a través de HTTPS, sin redireccionamientos, y en el derecho .apple.developer.associated-domains, enumere los dominios que manejará la aplicación como enlaces universales. Para hacer esto en Xcode, abra la sección "Dominios asociados" en la pestaña Funciones y agregue una entrada para cada dominio que admita su aplicación, con el prefijo applinks: como applinks:www.mywebsite.com. Limite esta lista a no más de 20 a 30 dominios.
Para hacer coincidir todos los subdominios del dominio asociado, puede especificar un carácter comodín anteponiendo *. La coincidencia de dominio se basa en la subcadena más larga en la entrada de applinks. Por ejemplo, si especifica la entrada applinks:*.mywebsite.com y realiza una coincidencia de dominio en entradas más largas applinks:*.users.mywebsite.com. Tenga en cuenta que las entradas no coinciden debido al punto después del asterisco. Para hacer dos sumas coincidentes, debe proporcionar una entrada separada para cada una. emily.users.mywebsite.com*.users.mywebsite.com*.mywebsite.commywebsite.com*.mywebsite.commywebsite.comapplinks
Después de especificar el dominio asociado, use UIApplicationDelegate Handoff (específicamente la aplicación: continueUserActivity: recoveryHandler: ) método para que su aplicación pueda recibir el enlace y manejarlo correctamente.
Cuando iOS inicia su aplicación después de que el usuario hace clic en un enlace universal, recibe un objeto NSUserActivity con un valor ActivityType de NSUserActivityTypeBrowsingWeb. La propiedad webpageURL del objeto de actividad contiene la URL que está visitando el usuario. El atributo de URL de la página siempre contiene una URL HTTP o HTTPS y puede utilizar la API NSURLComponents para manipular los componentes de la URL.
Cuando un usuario hace clic en un enlace universal que usted maneja, iOS también verifica las selecciones recientes del usuario para determinar si debe abrir su aplicación o su sitio web. Por ejemplo, un usuario que abre una aplicación mediante un enlace universal puede luego hacer clic en el botón de ruta de navegación en la barra de estado y elegir abrir su sitio web en Safari. Después de que el usuario haga esta selección, iOS continuará abriendo su sitio web en Safari hasta que el usuario elija abrir su aplicación haciendo clic en ABRIR en el banner de la aplicación inteligente en la página web.
Nota
Si crea una instancia de un objeto SFSafariViewController, WKWebView o UIWebView para manejar enlaces universales, iOS abrirá su sitio web en Safari en lugar de abrir su aplicación. Sin embargo, si el usuario hace clic en un enlace incrustado en un objeto universal SFSafariViewController, WKWebView o UIWebView, la versión de iOS abre la aplicación.
Es importante comprender que si su aplicación utiliza openURL: para abrir un enlace universal a su sitio web, el enlace no se abrirá en su aplicación. En este caso, iOS reconoce que la llamada se origina en su aplicación, por lo que su aplicación no debe considerarse un enlace universal.
Si recibe una URL no válida en el objeto de actividad, es importante fallar correctamente. Para manejar URL no compatibles, puede llamar a openURL: en el objeto de aplicación compartida para abrir el enlace en Safari. Si no puede realizar esta llamada, se mostrará un mensaje de error al usuario explicando lo sucedido.
Importante
Para proteger la privacidad y seguridad de sus usuarios, no es necesario utilizar HTTP cuando necesite transferir datos; en su lugar, utilice un protocolo de transferencia seguro como HTTPS;