
Introduccion
WWDC15 - Apple anuncia la transición a Universal Links. Su significado es prohibitivo: envíe al usuario a la aplicación si va a la página del sitio que admite la aplicación. Esto se usa con mayor frecuencia en las cartas que se envían después del registro para confirmar el correo electrónico. Por lo tanto, Universal Links elimina la necesidad de que los usuarios regresen a la aplicación por su cuenta, y esto es bueno tanto para la experiencia del usuario como para las estadísticas.

Muchos en este momento pueden pensar que este artículo no se está escribiendo muy bien, pero usted, querido lector, puede no haber visto lo que está sucediendo en Stackoverflow sobre el tema de Universal Links.
Implementación
Ahora analizaremos cuatro puntos que le permitirán implementar enlaces universales sin el dolor adicional y las sorpresas cegadoras que tuve que enfrentar. Al final, tocaremos fácilmente otra literatura y enlaces, que pueden darle una comprensión más profunda de Universal Links.
Pasemos al primer punto.
Dominios asociados en ID de aplicaciones

Si no ha registrado un ID de aplicación para su aplicación, hágalo ahora en el sitio web de
Apple Developer . Al registrarse, asegúrese de conectar los dominios asociados. Si la ID de la aplicación ya está registrada, simplemente vaya al siguiente paso y habilite los dominios asociados directamente desde Xcode.
Dominios asociados en Xcode

Para ser claros incluso para un novato, no lo haremos directamente a través del archivo .entitlements e iremos por el camino claro: Xcode → Proyecto → Capacidades → Dominios asociados.
Aquí debemos hacer clic en "+" y agregar los dominios que nos interesan. Los dominios se agregan necesariamente a través de la firma de aplicación, por ejemplo ...
applink:habr.com
En este caso, simularemos que queremos enseñarle a abrir la aplicación Habr al cambiar a uno de los hubs, para que pueda decirle a habr.com con seguridad. De hecho, no podremos probar el trabajo de Universal Links en Habré, y si inmediatamente decidió cambiar de la teoría a la práctica, le recomiendo crear un dominio en las páginas de Github en este momento e indicarlo a través de applink.
AppDelegate.swift
Aquí es suficiente para nosotros copiar y pegar este código, pero luego viene la explicación de lo curioso.
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: [Any?] -> Void) -> Bool { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else { return false } print(url)
Cuando inicie la aplicación a través de Universal Link, obtendrá un objeto NSUserActivity con un valor activityType. La propiedad webpageURL contiene la URL en la que hizo clic el usuario, se puede analizar en pedazos usando NSURLComponents.
NSURLComponents es un tema bastante simple que ha sido descubierto muchas veces por pequeños proyectos en Playground. Si no entiende de qué se trata,
aquí hay una buena captura de pantalla .
Archivo de asociación de sitio de aplicación de Apple
Es un archivo sin extensión, pero almacena datos en formato JSON. Se ve aproximadamente de la siguiente manera.
{ "applinks": { "apps": [], "details": [{ "appID": "teamId.com.bundleId.of.your.app", "paths": ["/path-for-redirectionl/*"] }] } }
Además, le insto a que lo arregle en la memoria ahora mismo para que este archivo
se almacene en el directorio raíz del dominio .
En el código, de hecho, solo nos interesan dos campos. El ID de aplicación en apple-app-site-association es una combinación de su Identificador de equipo e Identificador de paquete. En el código anterior, ya sustituí los datos de tal manera que sería más conveniente para usted copiarlos y cambiar un par de líneas.
¿Cómo buscar el identificador de equipo? Para hacer esto, vaya a developer.apple.com → Cuenta → Iniciar sesión → Membresía. El tercer campo es su Identificador de equipo. Para mí es 74D322Z5HV.
¿Cómo buscar un identificador de paquete? Xcode → Proyecto → General. Su Identificador de paquete está escrito en la sección Identidad, segundo campo. Para mí, esta es la aplicación com.habrahabr.ios.
Ahora hagamos este ID de aplicación para apple-app-site-association.
"appID": "74D322Z5HV.com.habrahabr.ios.application"
Hecho Eres increible! Ahora hablemos de los caminos. Este campo le dice directamente a la frente qué páginas del sitio admite la aplicación, desde qué páginas debe enviarse a la aplicación. Puede agregar páginas tantas como desee. Además, un poco de ayuda sobre cómo funciona esto y para que sea aún más claro para usted, le recuerdo que estamos haciendo una solicitud para habr.com
"paths": [ "/path-for-redirection/*" // URL – habr.com/path-for-redirection/ - ( *), URL habr.com/path-for-redirection/ok/funny-video-with-dogs/ . "/path-for-redirection/" // URL – habr.com/path-for-redirection/, , , , habr.com/path-for-redirection/ok/. "*" // - . "NOT /path-for-redirection/*" // , - URL NOT – , , NOT. ]
Y aquí se verá como apple-app-site-association si, por ejemplo, tenemos 2 aplicaciones: una para el centro Swift y la otra para el centro de desarrollo iOS.
{ "applinks": { "apps": [], "details": [{ "appID": "74D322Z5HV.com.habrahabr.ios.application.iosdev", "paths": ["/hub/ios_dev/*"] }, { "appID": "74D322Z5HV.com.habrahabr.ios.application.swift", "paths": ["/hub/swift/*"] }] } }
Ahora puede guardar el archivo apple-app-site-association sin la extensión (formato) y subirlo al servidor. Luego envíe la URL requerida a su correo electrónico, reúna en Xcode un proyecto con dominios asociados y codifique en AppDelegate.swift. Debe verificar el trabajo yendo a la URL deseada desde la aplicación de correo estándar.
Hechos y consejos notables
- Universal Links no funciona desde el navegador, cuando vaya a la URL requerida en Safari verá una placa que le indica que puede ir a la aplicación.
- Universal Links no funciona en cadenas de redireccionamiento. Cuando llegue a la URL deseada, el sitio simplemente mostrará una placa en la parte superior que le informa que puede ir a la aplicación.
- Los enlaces universales se pueden probar sin su propio servidor dedicado o virtual utilizando las páginas de GitHub.
- La URL para la transición debe comenzar necesariamente con "https: //".
- Puede verificar si todo está bien con el archivo apple-app-site-association a través de la herramienta de validación de API de búsqueda de aplicaciones .
- Para provocar una transición a la aplicación desde la URL deseada, no es necesario tener ningún contenido en esta URL. Es decir, la transición se llevará a cabo incluso si el navegador en esta URL proporciona 404.
- Una pulsación larga en Universal Link en la aplicación de correo le pedirá que elija entre abrir la aplicación y abrir el navegador.
Referencias y referencias.
En vista del hecho de que uno de los objetivos de esta publicación es proporcionar una comprensión máxima de Universal Links, quiero terminar con referencias a la literatura que se utilizó para escribir el artículo y / o simplemente proporciona una comprensión más profunda de Universal Links.
Espero que esta publicación sea la mejor que encontraste sobre el tema en ruso. Además, estaré encantado de guiarte más aquí (en los comentarios). Si me perdí algunos puntos o me equivoqué en algo, también le ruego que me informe sobre esto.
Gracias