Mi implementación de la indexación de aplicaciones no funciona

Aquí está mi estructura de actividad: SplashActivity -> MainActivity. My MainActivity tiene un Spinner que se rellena de ContentProvider. Con base en la selección de Spinner, presento diferentes contenidos al usuario. El contenido se corresponde perfectamente con el contenido de mi sitio web. Mi sitio web ha sido indexado y está funcionando bien. Ahora quiero indexar dicho contenido en mi aplicación.

Aquí está mi manifiesto

<activity android:name=".activities.SplashActivity" android:theme="@style/SplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".activities.MainActivity"/> <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="www.business.com" android:scheme="http"/> <data android:host="www.business.com" android:scheme="https"/> <data android:host="business.com" android:scheme="http"/> <data android:host="business.com" android:scheme="https"/> <data android:host="/*" android:scheme="business"/> <data android:scheme="android-app" android:host="com.business.android" /> </intent-filter> </activity> 

Aquí está la parte de indexación de aplicaciones de mi MainActivity

  @Override public void onStart() { super.onStart(); appIndexingTask(); } private void appIndexingTask() { new AsyncTask() { @Override protected Object doInBackground(Object[] params) { try { if(null == mNdxClient){ mNdxClient = new GoogleApiClient.Builder(MainActivity.this) .enableAutoManage(MainActivity.this, MainActivity.this) .addApi(AppInvite.API).addApi(AppIndex.API) .build(); } if(!mNdxClient.isConnected()){ mNdxClient.blockingConnect(); } if (mNdxClient != null && mNdxClient.isConnected()) { HashMap<Uri, Action> indexedActions = new HashMap<>(); List<Content> contentList = getAllFromContentProvider(); for(Content c: contentList){ Uri uri = Uri.parse(FirebaseUtils.appIndexingLink(c.getUrl())); Action action = getAction(c.getName(), c.getDescription(), uri); AppIndex.AppIndexApi.start(mNdxClient, action); indexedActions.put(uri, action); } for (Action action : indexedActions.values()) { AppIndex.AppIndexApi.end(mNdxClient, indexedActions.get(action)); } } } catch (Exception e) { //abandon task } return null; } public Action getAction(String title, String description, Uri uri) { Thing object = new Thing.Builder() .setName(title) .setDescription(description) .setUrl(uri) .build(); return new Action.Builder(Action.TYPE_VIEW) .setObject(object) .setActionStatus(Action.STATUS_TYPE_COMPLETED) .build(); } }.execute(); } 

Aquí está el método Utility

  public static String appIndexingLink(String urlString){ String appNdx= new StringBuilder("android-app://").append(BASE_URL).append(urlString).toString(); return appNdx; } 

Por último, en gradle estoy usando

 classpath 'com.google.gms:google-services:3.0.0'//project level //app level compile 'com.google.android.gms:play-services-appindexing:9.0.0' compile 'com.google.firebase:firebase-core:9.0.0' compile "com.google.firebase:firebase-messaging:9.0.0" compile "com.google.firebase:firebase-invites:9.0.0" 

Algunos puntos importantes

  • App-Invite funciona: Puedo enviar una invitación y luego abrir la invitación (código no mostrado)
  • Deep Linking funciona, si me envío un enlace a mi sitio, cuando abro el enlace en mi teléfono Android, se abre con la aplicación perfectamente.
  • La búsqueda de Google no ha indexado mi aplicación.
  • Obtener como Google falla con "URI sin soporte" si apunto a Play Store o local apk.

Observe el filtro

 <data android:scheme="android-app" android:host="com. business.android" /> 

No lo veo en ninguna documentación. Pero nada más funciona. Así que lo agregué. Todavía no funciona.

Aunque no estoy mostrando el registro. Estoy registrando y por lo tanto sé que el código de indexación de aplicaciones se ejecuta.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.