Flutter: Soportar los "universal links" en iOS

Flutter: Soportar los "universal links" en iOS

Recientemente integré la funcionalidad de enlaces profundos en nuestra aplicación TaleMe.

Los enlaces profundos son enlaces que redirigen al usuario a una página específica de la aplicación cuando esta está instalada en su dispositivo.

Gracias a Flutter y su documentación, se ve rápidamente cómo implementarlos. Sin embargo, después de varios intentos infructuosos y horas perdidas un poco inútiles, les propongo aquí una lista de verificación para evitarles perder tiempo.

1/ Verificar que se hayan añadido las configuraciones correctas en el archivo ios/Runner/Info.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  ...
  <key>FlutterDeepLinkingEnabled</key>
  <true/>
  ...
</dict>
</plist>

2/ Verificar que se hayan añadido las configuraciones correctas en el archivo ios/Runner/Runner.entitlements

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>com.apple.developer.associated-domains</key>
  <array>
    <string>applinks:monsite.com</string>
  </array>
</dict>
</plist>

⚠ Aquí, se trata del dominio monsite.com al que apuntamos, no de sus subdominios. Si tiene varios dominios, puede agregarlos en la matriz, o usar un comodín applinks:*.monsite.com.

3/ Añadir el archivo apple-site-association

a) ¡Respetar el formato más reciente! Resulta que existen varios formatos del archivo apple-site-association, y es fácil confundirse. Les aconsejo copiar y pegar desde la documentación de Apple, y no desde StackOverflow u otros.

b) Añadir el archivo en el lugar correcto: debe ser accesible en esta dirección: https://monsite.com/.well-known/apple-app-site-association. Parece que antes era posible dejarlo en la raíz del sitio, pero ya no se menciona en la documentación de Apple... prudencia.

c) El archivo debe ser accesible por HTTPS y no estar protegido por contraseña. También debe devolver el tipo MIME application/json. Tampoco debe tener redirecciones.

4/ Verificar que el archivo apple-site-association sea accesible y esté tomado en cuenta por el CDN de Apple

Por lo general, el CDN de Apple actualiza la información entre 12 y 24 horas (pero puede tardar más).

Puede utilizar los siguientes servicios:

También existen algunas líneas de comando para verificar que el archivo es accesible:

  sudo swcutil dl -d monsite.com

5/ Probar los enlaces profundos

Puede usar este comando que permite verificar que los enlaces profundos funcionan correctamente:

  swcutil verify -d monsite.com -j ./path/to/apple-app-site-association [-u <URL>]

Si desea probar su app puede usar un simulador, luego abra una terminal para introducir este comando:

  xcrun simctl openurl booted https://monsite.com/

La opción -u permite especificar la URL a probar para el "match", en el caso de que vaya a filtrar las URL que deben redirigirse a su aplicación.

Tenga en cuenta que el CDN de Apple puede tardar en actualizar la información, y que los enlaces profundos no funcionarán si la aplicación no está instalada en el dispositivo.

También puede evitar el CDN de Apple modificando el archivo ios/Runner/Runner.entitlements:

applinks:monsite.com -> applinks:monsite.com?mode=developer

No funcionó para mí, pero puede ser útil para usted. También será necesario quitar el modo desarrollador antes de publicar la aplicación.

¡Y eso es todo! ¡Espero que este artículo le haya sido útil! Para Android, el procedimiento es bastante diferente; lo exploraré en otro artículo.

Etiquetas

  • flutter

  • ios

  • android

  • enlaces universales

  • enlaces profundos

Este artículo fue publicado el

Comentarios

Cargando...

Flutter: Soportar los "universal links" en iOS | DEMILY Clément