cómo hacer enlaces desde mi sitio web para dirigirlos a mi aplicación si está instalada
Lo que me gustaría lograr
Cuando un usuario hace clic en cualquier enlace de mi sitio web, me gustaría que dirija el enlace específico del usuario en mi aplicación (si está instalado). Si no está instalado, solicite al usuario que establezca un vínculo en el navegador.
Ejemplo:
El usuario recibe un correo electrónico con un enlace llamado: www.myapp.com/someplaceinmyapp Va a esa página en mi aplicación si está instalada. Si no es así, vaya a esa página en el navegador.
Tenga en cuenta que será para todas las páginas de mi aplicación. Así que esto se aplica a cualquier enlace de mi página web.
Mis preguntas
¿Hay un nombre específico para esto? Sé acerca de los enlaces profundos y los enlaces de aplicaciones, pero no estoy seguro de cuál es para mí.
¿Es esto siquiera posible? Ni siquiera estoy seguro de si es posible en este momento.
¿El código para esto estará en webage o en la aplicación? por ejemplo: Javascript o Kotlin o algo en el archivo de manifiesto.
¿Cómo hago esto? Esto es probablemente lo que más necesito.
Notas
Tengo algo en mi página web que muestra una ventana emergente (solo en el navegador) que dice "Usar la aplicación". Si no está instalado, entonces va a la tienda de juegos. Si está instalado, va a la página de inicio de mi sitio web en mi aplicación. Encontré cómo hacerlo desde aquí usando la respuesta con la mayor cantidad de votos (no la aceptada), así que en mi manifiesto tengo:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"
android:host="www.myapp.com"
android:pathPrefix="/install.html" />
</intent-filter>
Si tiene algo que le gustaría agregar a mis preguntas, con mucho gusto lo agregaría.
Respuestas
Para ingresar datos específicos Activity
o Fragment
de su aplicación desde una URL, se recomienda usar Deep Links from Navigation Component.
1. Agregue un enlace profundo de URL en el archivo de recursos de navegación (desde el panel Atributos):
<fragment
android:id="@+id/studentEditorFragment"
android:name="com.example.roomtest.studentEditor.StudentEditorFragment"
android:label="StudentEditorFragment"
tools:layout="@layout/fragment_student_editor">
<argument
android:name="studentId"
app:argType="long" />
<deepLink
android:id="@+id/deepLink"
app:uri="www.example.com/roomTest/{studentId}" /> //here, company domain name followed by application path or argument
</fragment>
2. Agregue el atributo de navegación en el AndroidManifest
archivo:
<activity android:name=".MainActivity"> //【inside the "<activity>" tag】
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<nav-graph android:value="@navigation/navigation" /> //here
</activity>
3. Utilice el vínculo en el navegador web o mensaje de texto: "www.example.com/roomTest/-1"
- Para pasar varios argumentos, simplemente conéctelos con "&" como: "www.example.com/roomText/-1&true" (vuelva a formatear "&" en xml cuando se le solicite).
Video útil: https://www.youtube.com/watch?v=hEJ78_KLcfA
Lectura útil: https://developer.android.com/guide/navigation/navigation-deep-link
Comportamiento de la pila posterior de Deep Link: https://stackoverflow.com/a/50359375/3466808
Descubrí que la forma de hacerlo era utilizando el asistente de enlaces de aplicaciones, que puede encontrar en el estudio de Android en Herramientas -> Asistente de enlaces de aplicaciones. Esto es lo que debería ver en el lateral una vez que lo abra:

Paso 1
Haga clic en "Abrir editor de mapeo de URL", luego agregue un mapeo de URL (haga clic en "+"). En el host, coloque el enlace de su sitio web, por ejemplo:https://www.example.com. Para Ruta, en el cuadro de selección, seleccione sólo "ruta" y no ponga nada en el cuadro de tipo.

Paso 2
El botón Seleccionar actividad no funciona para Kotlin, por lo que aquí está el código que debe ingresar manualmente.
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleIntent(intent)
}
private fun handleIntent(intent: Intent) {
val wbWebView = findViewById<View>(R.id.your_webview) as WebView
val appLinkAction = intent.action
val appLinkData = intent.data
if (Intent.ACTION_VIEW == appLinkAction && appLinkData != null) {
wbWebView.loadUrl(appLinkData.toString())
} else {
// default link that it goes to when opening app
wbWebView.loadUrl("https://www.example.com")
}
}
y en tu onCreate agrega handleIntent(intent)
Paso 3
Haga clic en "Abrir generador de archivos de enlaces de activos digitales". La mayor parte de la información ya estará completa, por lo que puede hacer clic en "Generar archivo de enlaces de activos digitales". Cree una carpeta llamada ".well-known" en su sitio web y luego coloque un archivo allí llamado "assetlinks.json", pegue la vista previa allí. Así que cuando vayas ahttps://www.yourwebsite.com/.well-known/assetlinks.jsondebería poder ver el archivo de enlaces de activos digitales. También puede ver el archivo de enlaces de activos digitales de otros sitios web. Como para google,https://www.google.com/.well-known/assetlinks.json.

Luego proceda a hacer clic en el botón "Vincular y verificar". Si todo va bien, debería ver esto debajo del botón:

Paso 4
¡Hora de probar! Continúe y haga clic en "Probar enlaces de aplicaciones" e introduzca una URL de su sitio web. Si todo va bien, no debería ver un diálogo de desambiguación.
También me gusta hacer más pruebas enviándome un correo electrónico con el enlace.
Notas
Solo puede utilizar el Asistente de enlaces de aplicaciones si su sitio web utiliza https en lugar de http.
Agregué android:launchMode="singleTask"
a mi etiqueta de actividad en el manifiesto, esto significa que si hace clic en un enlace de su sitio web en un correo electrónico, se abrirá en una nueva ventana.
Tienen un documento sobre esto aquí que incluye un video ( tenga en cuenta que están usando java)
Utilice los enlaces de la aplicación de Android en su aplicación. Si se implementa correctamente, el usuario se moverá directamente al destino especificado en la aplicación.
Más información sobre esto en estos documentos:
Verificar los enlaces de la aplicación de Android
Crea un enlace profundo implícito