Abrir mi aplicación del esquema de URL en Android

Sé que hay varias preguntas sobre SO sobre esto, pero ninguna de ellas está ayudando a resolver mi problema.

Quiero poder hacer clic en un enlace de un correo electrónico / texto / navegador y abrir mi aplicación.

Tengo el código de AndroidManifest.xml :

<!-- Splash Activity --> <activity android:name=".ui.SplashActivity" android:label="@string/app_name" android:theme="@style/SplashTheme" android:launchMode="singleTask"> <!-- Launcher intent filter --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- Branch URI scheme --> <intent-filter> <data android:scheme="myscheme" android:host="open" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity> 

Sin embargo, al usar Chrome (o Navegador Android), esto parece seguir la documentación aquí , para navegar por myscheme://open , mi aplicación no se abre y en cambio obtengo resultados de búsqueda de myscheme: // open .

¿Puede alguien ver qué pieza del rompecabezas que me falta aquí? ¿Cómo puedo abrir mi aplicación a través de URI?

Pequeña actualización:

Después de leer esto , he encontrado que la navegación de Chrome para el market://details?id=com.myapp no abre la tienda de juegos. En su lugar, devuelve los resultados de búsqueda de Google, al igual que cuando intento iniciar mi aplicación directamente. Lo cual es confuso. ¿Estoy perdiendo una configuración global de SO para permitir una vinculación profunda?

Chrome no abre aplicaciones desde esquemas de URI introducidos manualmente. De hecho, un vínculo introducido manualmente nunca lanzará una aplicación externa en Chrome. Esto es por diseño – por alguna razón, el equipo de Chrome siente que los usuarios deben mantenerse siempre dentro del navegador después de ingresar una dirección.

Puedes solucionar esto hasta cierto punto poniendo el vínculo profundo detrás de una acción de unidad de usuario (una etiqueta <a> estándar, por ejemplo), pero Chrome tiene su propio estándar llamado Chrome Intents que se supone que debes usar en su lugar. Dependiendo del dispositivo que esté utilizando, también podría ser el caso del navegador estándar.

En otras aplicaciones, depende de la aplicación en cuestión si un esquema de URI personalizado se identifica como un "vínculo que se puede hacer clic". Para una mejor compatibilidad, deberás envolverla dentro de un enlace http:// normal con un redireccionamiento.

Si usted está interesado en una explicación en profundidad de las complicaciones alrededor de la vinculación profunda, este post es un buen lugar para comenzar. Si solo quieres que funcione sin mucho esfuerzo, Branch.io (revelación completa: estoy en el equipo de Branch) resuelve este problema como un servicio gratuito.

No es necesario que ninguna aplicación preste atención a myscheme://open .

En particular:

  • No es necesario que ningún navegador web intente iniciar alguna aplicación de terceros cuando escribe myscheme://open en la barra de direcciones, ya que es poco probable que los usuarios hagan eso en el mundo real.

  • No es necesario que un programa de correo electrónico intente crear un ACTION_VIEW Intent for myscheme://open .

  • No hay ningún requisito para que un cliente de SMS busque todos los mensajes entrantes para la cadena myscheme://open , se da cuenta de que esto es de alguna manera un enlace de aplicación y hace algo con él.

Tendrás un poco mejor de suerte en general usando una URL https (o una URL de pellizco) como enlace de la aplicación (la URL http://www.example.com/gizmos de la documentación a la que has enlazado ). A continuación, los clientes de SMS pueden reconocer que se trata de una URL y hacer algo con ella. Y, en general, debe ser llevado a su aplicación o a su página web, que son al menos algo útil para el usuario. Sin embargo, su aplicación todavía no se abrirá necesariamente cuando el usuario escriba su URL en la barra de direcciones, ya que los navegadores no esperan que se ingrese un enlace de la aplicación allí.

Puede aumentar las probabilidades de que un enlace de aplicación https funcione y funcione de la manera que desee, publicando un archivo de vínculos de activos digitales y vinculándolo a su manifiesto.

Sin embargo, en general, esto sigue dependiendo de los clientes que optan por prestar atención a estas cosas. A veces lo harán, porque Android hace que sea relativamente fácil hacerlo. A veces no lo harán. Un navegador web es bienvenido a ver su URL, ver que es https , decir "hey, como un navegador web, sé cómo manejar esto!", Y vaya a cargar esa página web, haciendo caso omiso de su aplicación instalada. Usted y yo podríamos considerar que es un error en ese navegador; Los desarrolladores de ese navegador son bienvenidos a estar en desacuerdo.

He encontrado que la navegación de Chrome para el mercado: // detalles? Id = com.myapp no ​​abre la tienda de juegos

Esto se remonta a la parte de "los desarrolladores pueden hacer lo que quieren". Si ha hecho clic en un enlace de una página Web a esa URL, existe la posibilidad de que Chrome lo lleve a Play Store. Sin embargo, Chrome no está obligado a tratar la barra de direcciones de la misma manera que trata un enlace en una página Web.

  • Los vínculos profundos de Android no siguen el prefijo de ruta
  • Abrir aplicación de Android a través de vínculo profundo si está instalado o volver a la web si no está instalado
  • ¿Cómo Deep Link en un fragmento en una aplicación para Android. ¿Es posible?
  • Cómo iniciar una aplicación utilizando un deeplink en android
  • Android: enlace de datos no se actualiza
  • La indexación de aplicaciones con signo comercial en Deep Link no funciona
  • La aplicación de Android se abre desde los enlaces enviados por correo electrónico
  • Facturación en aplicaciones de Android y servicio bindService
  • Enlace profundo en una aplicación mientras la aplicación ya se está ejecutando en segundo plano
  • Android - Valor de texto condicional utilizando Vinculación de datos
  • Deeplink filtro de intención a un pathPrefix en particular?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.