Investigamos en el mundo on line y así mostrarte la respuesta a tu inquietud, si continúas con preguntas deja la inquietud y te contestaremos con mucho gusto.
Solución:
Soporta enlaces universales
Cuando admite enlaces universales, los usuarios de iOS 9 pueden tocar un enlace a su sitio web y ser redirigidos sin problemas a su aplicación instalada sin pasar por Safari. Si su aplicación no está instalada, al tocar un enlace a su sitio web se abre su sitio web en Safari.
Aquí, cómo configurar su propio servidor y manejar los enlaces correspondientes en su aplicación.
Servidor de configuración
Necesita tener un servidor funcionando en línea. Para asociar de forma segura su aplicación iOS con un servidor, Apple requiere que ponga a disposición un archivo de configuración, llamado apple-app-site-association
. Esto es un JSON
archivo que describe el dominio y las rutas admitidas.
los apple-app-site-association
el archivo debe ser accesible a través de HTTPS
, sin redireccionamientos, en https: // dominio / apple-app-site-association.
El archivo tiene este aspecto:
"applinks":
"apps": [ ],
"details": [
"appID": "app_prefix.app_identifier",
"paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
,
"appID": "TeamID.BundleID2",
"paths": [ "*" ]
]
NOTA – No anexar .json
al apple-app-site-association
nombre del archivo.
los keys son como sigue:apps
: Debería tener un vacío array como su valor, y debe estar presente. Así es como lo quiere Apple.details
: Es un array de diccionarios, uno para cada aplicación de iOS compatible con el sitio web. Cada diccionario contiene información sobre la aplicación, el equipo y los ID de paquete.
Hay 3 formas de definir rutas:Static
: Toda la ruta admitida está codificada para identificar un enlace específico, por ejemplo, /static/condicionesWildcards
: Se puede usar un * para hacer coincidir rutas dinámicas, por ejemplo, / books / * puede coincidir con la ruta a la página de cualquier autor. ? dentro de componentes de ruta específicos, por ejemplo, libros / 1? se puede utilizar para hacer coincidir cualquier libro cuyo ID comience con 1.Exclusions
: Anteponer una ruta con NO excluye esa ruta de la coincidencia.
El orden en el que se mencionan los caminos en el array es importante. Los índices anteriores tienen mayor prioridad. Una vez que una ruta coincide, la evaluación se detiene y otras rutas se ignoran. Cada ruta distingue entre mayúsculas y minúsculas.
Compatible con varios dominios
Cada dominio admitido en la aplicación debe poner a disposición su propio archivo de asociación de sitio de aplicación de Apple. Si el contenido servido por cada dominio es diferente, entonces el contenido del archivo también cambiará para admitir las rutas respectivas. De lo contrario, se puede utilizar el mismo archivo, pero debe ser accesible en todos los dominios admitidos.
Firma del archivo App-Site-Association
Nota: Puede omitir esta parte si su servidor usa HTTPS
para servir contenido y saltar a la guía de configuración de la aplicación.
Si su aplicación apunta a iOS 9 y su servidor usa HTTPS
para publicar contenido, no es necesario que firme el archivo. Si no es así (por ejemplo, cuando es compatible con Handoff en iOS 8), debe firmarse con un SSL
certificado de una autoridad certificadora reconocida.
Nota: Este no es el certificado proporcionado por Apple para enviar su aplicación a la App Store. Debe ser proporcionado por un tercero, y se recomienda usar el mismo certificado que usa para su HTTPS
servidor (aunque no es obligatorio).
Para firmar el archivo, primero cree y guarde una versión .txt simple del mismo. A continuación, en la terminal, ejecute el siguiente comando:
cat .txt | openssl smime -sign -inkey example.com.key -signer example.com.pem -certfile intermediate.pem -noattr -nodetach -outform DER > apple-app-site-association
Esto generará el archivo firmado en el directorio actual. los example.com.key
, example.com.pem
, y intermediate.pem
son los archivos que su Autoridad de Certificación pondría a su disposición.
Nota: Si el archivo no está firmado, debe tener una Content-Type
de application/json
. De lo contrario, debería ser application/pkcs7-mime
.
Valide su servidor con la herramienta de validación de búsqueda de aplicaciones de Apple
Pruebe su página web para las API de búsqueda de iOS 9. Ingrese una URL y Applebot rastreará su página web y le mostrará cómo puede optimizar para obtener mejores resultados https://search.developer.apple.com/appsearch-validation-tool/
Código del sitio web
El código del sitio web se puede encontrar en la rama gh-pages en https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages
Configurar la aplicación iOS
La aplicación apuntará a iOS 9 y utilizará Xcode 7.2 con Objective-C
.
Habilitación de enlaces universales
La configuración en el lado de la aplicación requiere dos cosas:
1. Configurar los derechos de la aplicación y habilitar enlaces universales.
2. Manejo de enlaces entrantes en su AppDelegate
.
1. Configurar los derechos de la aplicación y habilitar enlaces universales.
El primer paso para configurar los derechos de su aplicación es habilitarla para su ID de aplicación. Haga esto en el Centro de miembros para desarrolladores de Apple. Haga clic en Certificados, identificadores y perfiles y luego en Identificadores. Seleccione su ID de aplicación (créelo primero si es necesario), haga clic en Editar y habilite el derecho de Dominios asociados.
A continuación, obtenga el ID de la aplicación prefix y sufijo haciendo clic en el ID de la aplicación correspondiente.
El ID de la aplicación prefix y el sufijo debe coincidir con el del archivo apple-app-site-association.
Siguiente en Xcode
, seleccione el destino de su aplicación, haga clic en Capacidades y active Dominios asociados. Agregue una entrada para cada dominio que admita su aplicación, con el prefijo applinks :.
Por ejemplo: applinks: vineetchoudhary.github.io
Que se ve así para la aplicación de muestra:
Nota: Asegúrese de haber seleccionado el mismo equipo e ingresado el mismo ID de paquete que el ID de aplicación registrado en el Centro de miembros. También asegúrese de que Xcode incluya el archivo de derechos seleccionando el archivo y en el Inspector de archivos, asegúrese de que su objetivo esté marcado.
Manejo de enlaces entrantes en su AppDelegate
[UIApplicationDelegate application: continueUserActivity: restorationHandler:]
método en AppDelegate.m
maneja los enlaces entrantes. Analiza esta URL para determinar la acción correcta en la aplicación.
Por ejemplo, en la aplicación de muestra:
C objetivo
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb])
NSURL *url = userActivity.webpageURL;
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *navigationController = (UINavigationController *)_window.rootViewController;
if ([url.pathComponents containsObject:@"home"])
[navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"HomeScreenId"] animated:YES];
else if ([url.pathComponents containsObject:@"about"])
[navigationController pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"AboutScreenId"] animated:YES];
return YES;
Rápido:
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool
if userActivity.activityType == NSUserActivityTypeBrowsingWeb
let url = userActivity.webpageURL!
//handle url
return true
Código de aplicación de iOS
El código de la aplicación se puede encontrar en la rama maestra en https://github.com/vineetchoudhary/iOS-Universal-Links/
Nota:
- Por lo general, cualquier enlace compatible en el que se haga clic en Safari o en instancias de UIWebView / WKWebView debería abrir la aplicación.
- Para iOS 9.2 y versiones anteriores, esto solo funcionará en un dispositivo. iOS 9.3 (todavía en beta en el momento de escribir este artículo) también es compatible con el simulador.
- iOS recuerda la elección del usuario al abrir enlaces universales. Si tocan la ruta de navegación de la parte superior derecha para abrir el enlace en Safari, todos los clics posteriores los llevarán a Safari y no a la aplicación. Pueden volver a abrir la aplicación de forma predeterminada seleccionando Abrir en el banner de la aplicación en el sitio web.
Hecho. Se trata de enlaces universales.
Referencias
- Admite enlaces universales en tu aplicación iOS
Aquí está el código para manejar enlaces universales en Swift 3+, basado en la respuesta de Vineet Choudhary:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool
if userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL
//handle URL
return true
Reseñas y valoraciones
Recuerda que puedes dar visibilidad a este ensayo si te ayudó.