Buscar..


Observaciones

  • Cuando opta por implementar la indexación de aplicaciones, puede encontrar muchos blogs, documentación que lo puede confundir, en este caso, le sugiero que se limite a los documentos oficiales proporcionados por Firebase-Google. Incluso si desea utilizar un tercero para hacer esto, primero intente seguir esta documentación porque le dará una idea clara de cómo funcionan las cosas.

  • Google tardará alrededor de 24 horas en indexar tu contenido. Sé paciente. Puedes hacer pruebas para que todo esté bien de tu lado.

  • El primer ejemplo le permite admitir la URL HTTP de su sitio web para redirigir en su aplicación. Esto funcionará, por ejemplo, si ha buscado una consulta en la búsqueda de Google, los resultados muestran una de las URL de su sitio web, cuyos enlaces de aplicaciones están presentes en su aplicación que ya está instalada. Al hacer clic en esta URL, lo redireccionará directamente en la pantalla de la aplicación correspondiente a ese resultado de búsqueda. Eso es lo que he descubierto para esto.

  • La adición de la API de AppIndexing indexa su contenido y se utiliza en las finalizaciones automáticas en la barra de búsqueda de Google. Tomemos un ejemplo de la aplicación inShorts para cada página, hay un título y una pequeña descripción. Después de leer 2 o 3 titulares, cierre la aplicación y muévase a google searchBar.

introduzca la descripción de la imagen aquí

Intente ingresar el título por el que acaba de pasar; recibirá una sugerencia de la página de la aplicación con ese título como título. Esto es diferente de las sugerencias de aplicaciones que obtienes al buscar aplicaciones. Esto sucede porque ha escrito el código de la API de AppIndexing para esta página en particular y el título es el mismo que ha inicializado en onCreate() .

introduzca la descripción de la imagen aquí

Apoyando URLs HTTP

Paso 1: - Permita que Google se arrastre a su contenido. Edite el archivo robot.txt del servidor. Puede controlar el rastreo de google de su contenido editando este archivo, puede consultar este enlace para obtener más detalles.

Paso 2: - Asocie su aplicación con su sitio web. Incluya assetlinks.json Lo carga en el directorio conocido de su servidor web. El contenido de su activolinks.json es igual a

       [{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" : 
{ "namespace": "android_app",
"package_name": "<your_package_name>",
"sha256_cert_fingerprints": ["<hash_of_app_certificate>"] }

}]

Paso 3: - Incluya los enlaces de la aplicación en su archivo de manifiesto para redirigir las URL a su aplicación como se muestra a continuación.

<activity
       android:name=".activity.SampleActivity"
       android:label="@string/app_name"
       android:windowSoftInputMode="adjustResize|stateAlwaysHidden">
       <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:host="example.live"
             android:pathPrefix="/vod"
             android:scheme="https"/>
       <data
             android:host="example.live"
             android:pathPrefix="/vod"
             android:scheme="http"/>
     </intent-filter>
   </activity>

Consulte esto si desea obtener más información sobre cada etiqueta aquí.

<acción> Especifique la acción de intención de ACTION_VIEW para que se pueda acceder al filtro de intención desde la Búsqueda de Google.

<datos> Agregue una o más etiquetas, donde cada etiqueta representa un formato URI que se resuelve en la actividad. Como mínimo, la etiqueta debe incluir el atributo android: scheme. Puede agregar atributos adicionales para refinar aún más el tipo de URI que acepta la actividad. Por ejemplo, es posible que tenga varias actividades que acepten URI similares, pero que difieran simplemente en función del nombre de la ruta. En este caso, use el atributo android: path o sus variantes (pathPattern o pathPrefix) para diferenciar qué actividad debe abrir el sistema para diferentes rutas de URI.

<category> Incluir la categoría BROWSABLE. La categoría BROWSABLE es obligatoria para que se pueda acceder al filtro de intención desde un navegador web. Sin él, hacer clic en un enlace en un navegador no puede resolver su aplicación. La categoría POR DEFECTO es opcional, pero recomendada. Sin esta categoría, la actividad puede iniciarse solo con una intención explícita, utilizando el nombre del componente de su aplicación.

Paso 4: - Manejar URLS entrantes

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_schedule);
       onNewIntent(getIntent());
  }

   protected void onNewIntent(Intent intent) {
   String action = intent.getAction();
   Uri data = intent.getData();
   if (Intent.ACTION_VIEW.equals(action) && data != null) {
       articleId = data.getLastPathSegment();
       TextView linkText = (TextView)findViewById(R.id.link);
       linkText.setText(data.toString());
   }

}

Paso 5: - Puedes probar esto usando el comando Debug Bridge de Android o las configuraciones de estudio. Comando Adb: - Inicie su aplicación y luego ejecute este comando: -

adb shell am start -a android.intent.action.VIEW -d "{URL}" < package name >

Configuraciones de Android Studio: - Android studio> Construir> Editar configuración> Opciones de lanzamiento> seleccionar URL> luego escriba su URL aquí> Aplicar y probar. Ejecute su aplicación. Si la ventana “Ejecutar” muestra un error, debe verificar su formato de URL con su los applinks mencionados en el manifiesto, de lo contrario, se ejecutarán con éxito, y se redirigirán a la página mencionada su URL si se especifica.

Añadir API de AppIndexing

Para agregar esto al proyecto, puede encontrar documentos oficiales fácilmente, pero en este ejemplo voy a resaltar algunas de las áreas clave que deben ser atendidas.

Paso 1: - Añadir servicio de google

dependencies {
      ...
      compile 'com.google.android.gms:play-services-appindexing:9.4.0'
      ...
    }

Paso 2: - Importar clases

import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;

Paso 3: - Agregar llamadas API de indexación de aplicaciones

private GoogleApiClient mClient;
private Uri mUrl;
private String mTitle;
private String mDescription;

//If you know the values that to be indexed then you can initialize these variables in onCreate() 
@Override
protected void onCreate(Bundle savedInstanceState) {
mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
mUrl = "http://examplepetstore.com/dogs/standard-poodle";
mTitle = "Standard Poodle";
mDescription = "The Standard Poodle stands at least 18 inches at the withers";
}

//If your data is coming from a network request, then initialize these value in onResponse() and make checks for NPE so that your code won’t fall apart.

//setting title and description for App Indexing
mUrl = Uri.parse(“android-app://com.famelive/https/m.fame.live/vod/” +model.getId());
mTitle =   model.getTitle();
mDescription = model.getDescription();

mClient.connect();
AppIndex.AppIndexApi.start(mClient, getAction());

@Override
protected void onStop() {
if (mTitle != null && mDescription != null && mUrl != null) //if your response fails then check whether these are initialized or not
   if (getAction() != null) {
       AppIndex.AppIndexApi.end(mClient, getAction());
       mClient.disconnect();
    }
 super.onStop();
}

 public Action getAction() {
   Thing object = new Thing.Builder()
       .setName(mTitle)
       .setDescription(mDescription)
       .setUrl(mUrl)
       .build();

 return new Action.Builder(Action.TYPE_WATCH)
       .setObject(object)
       .setActionStatus(Action.STATUS_TYPE_COMPLETED)
       .build();
}

Para probar esto, simplemente siga el paso 4 en las Observaciones que se dan a continuación.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow