Saltar al contenido

¿Cómo admitir enlaces universales en la aplicación iOS y configurar el servidor para ello?

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": [ "*" ]
        
    ]


NOTANo 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/condiciones
Wildcards: 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:

  1. 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.
  2. 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.
  3. 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

  1. 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ó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *