En android, existe la posibilidad de abrir aplicaciones pulsando una url, previamente vinculada con nuestra app desde el AndroidManifest.xml. Se realiza de esta manera:
<intent-filter>
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.miweb.es"
android:pathPrefix="/app"
android:scheme="http" />
</intent-filter>
Con estas líneas agregadas a nuestro AndroidManifest.xml conseguimos que cuando alguien pulse en un enlace en su móvil en el que aparezca: http://www.miweb.es/app, android buscará si nuesra app está instalada y abrirá la aplicacion. Si no lo está, navegará a traves del navegador predeterminado a esta URL, en la cual podemos tener publicado lo que queramos, como por ejemplo, ofrecer la descarga de nuestra app.
Importante saber que la etiqueta «pathPrefix» indica la ruta a la que nos referimos, ya que si pulsan en una URL de nuestra página que no tenga este patrón (por ejemplo: http://www.miweb.es/contacto), no intentará abrir nuestra app, abrirá el navegador.
Lo que ocurre por defecto en las aplicaciones desarrolladas con Flutter es que, cuando pulsamos nuestro enlace y la app se abre, se abre dentro de Whatsapp (o de la app desde la que hemos pulsado la URL). Esto deriva en que si Whatsapp queda en background o lo cerramos, nuestra aplicación también se cierra o entra en suspensión y cuando volvemos a ella, se reinicia y perdemos los datos que estuvieramos gestionando.
Esto se soluciona también modificando nuestro AndroidManifest.xml. Hay que sustituir:
android:launchMode=»singleTop»
Por:
android:launchMode="singleTask"
Esperamos que os sirva de ayuda. Si tenéis mas dudas sobre Flutter o programación en general, no dudéis en escribir en los comentarios.