cómo hacer enlaces desde mi sitio web para dirigirlos a mi aplicación si está instalada

Dec 24 2020

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

SamChen Dec 25 2020 at 02:55

Para ingresar datos específicos Activityo Fragmentde 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 AndroidManifestarchivo:

<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

Amy Jan 06 2021 at 07:01

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)

AlphaOne Dec 24 2020 at 10:43

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