Моя реализация индексации приложений не работает

Вот моя структура деятельности: SplashActivity -> MainActivity. У My MainActivity есть Spinner, который заполняется из ContentProvider. Основываясь на выборе Spinner, я представляю разный контент пользователю. Карта контента идеально подходит для контента на моем сайте. Мой сайт уже давно проиндексирован и работает нормально. Теперь я хочу проиндексировать указанный контент в моем приложении.

Вот мой манифест

<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>

Вот часть приложения 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();

  }

Вот полезный метод

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

Наконец, в Gradle я использую

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"

Некоторые важные моменты

  • Приложение App-Invite работает: я могу отправить приглашение, а затем открыть приглашение (код не отображается)
  • Глубокая ссылка работает, если я отправляю себе ссылку на свой сайт, когда я открываю ссылку на своем телефоне с Android, она прекрасно открывается вместе с приложением.
  • Поиск Google не проиндексировал мое приложение
  • Получить как Google не удается с "URI не поддерживается", указываю ли я на Play Store или локальный apk.

Обратите внимание на фильтр

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

Я не вижу этого нигде в документации. Но больше ничего не работает. И я добавил это. Это все еще не работает.

Хотя я не показываю логирование. Я регистрируюсь и знаю, что код индексации приложений работает.

0 ответов

Другие вопросы по тегам