0

公式ドキュメントに従って、アプリのインデックス作成の一部としてディープリンクを実装しました。検索のオートコンプリート部分に関して、いくつかの異なるが関連する問題に直面しています。

  1. オートコンプリートの結果には、最後に開いたアイテムのみが表示されます (以前にアクセスしたアイテムは上書きされているようです)。たとえば、アプリのトレンド トピック/コレクションのリスト ビューで、ユーザーがアイテム A (添付のスクリーンショットの「shortvideos1」) を開き、フィードを再開してからアイテム B (「shortvideos2」) を開くとします。「shortvid」を部分的に検索すると、後者の「shortvideos2」のみが表示されます。「shortvideos1」を完全に検索しても何も得られません。最新のアイテムのみが検索結果リストに表示されることを示唆しています。
  2. 一部のコンテンツ アクセスが結果リストに表示されません。ユーザーがトレンド コレクション内のアイテムのリストをスワイプできるビュー ページャーがあります。個々の項目をタイトルで索引付けすると、それらのタイトルによる検索結果から一部のタイトルのみが表示されることがわかります。

アプリのインデックス作成 API を実装する方法は次のとおりです。

TrendingCollectionActivity

static final Uri BASE_URI_APP = Uri.parse("android-app://" +     BuildConfig.APPLICATION_ID + "/mySchema/");
@Override
public void onCreate(Bundle savedInstance) {
// basic setup
    mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
} 
... 
public void onLoadFinished(Loader<CollectionModel> loader, CollectionModel trendingCollection) {
// adapter & view pager setup ... 
    mCollectionModel = trendingCollection
// Call the App Indexing API start method after the view has completely rendered
    startAppIndexing(mCollectionModel)    
} 

@Override
public void onStop() {
    // other teardown ...
    // register end of collection view  
    stopAppIndexing(mCollectionModel);
}

//View Pager callback to handle individual card/item swipes
@Override
public void onPageSelected(int position) {
    // get current fragment, update action bar menus, etc
    // ... 
    // app indexing: register currently visible card view
    ItemModel itemModel = mCollectionPagerAdapter.getItemModel(mViewPager.getCurrentItem());
    startAppIndexing(itemModel); // implementation very similar to the collection's onCreate()
    // register end of previous card view
    int prevIndex = mViewPager.getCurrentItem() - 1;
    ItemModel prevCard = mCollectionPagerAdapter.getItemModel(prevIndex >= 0 ? prevIndex : 1);
    stopAppIndexing(prevCard); // implementation very similar to the colleciton's onStop()
}

private void startAppIndexing(CollectionModel collectionModel) {
        mClient.connect() 

        if (trendingCollection == null) { return; }
        final String TITLE = trendingCollection.getHashtag();
        final String hostPath = new StringBuilder("collections/").append(trendingCollection.getId()).toString();
        final Uri APP_URI_COLLECTIONS = BASE_URI_APP.buildUpon().appendEncodedPath(hostPath).build(); // = android-app://net.kip2.android/myScheme/collections/7091
        Action viewAction = Action.newAction(Action.TYPE_VIEW, TITLE, APP_URI_COLLECTIONS);
        PendingResult<Status> result =  AppIndex.AppIndexApi.start(mClient, viewAction);
        result.setResultCallback(new ResultCallback<Status>() {
            @Override
            public void onResult(Status status) {
                if (status.isSuccess()) {
                    Log.d(TAG, "App Indexing API: Recorded trend "
                            + TITLE + " view successfully.");
                } else {
                    Log.e(TAG, "App Indexing API: There was an error recording the trend view."
                            + status.toString());
                }
            }
        });
}

private void stopAppIndexing(CollectionModel collectionModel) {
    if (trendingCollection == null) { return; }
        final String TITLE = trendingCollection.getHashtag();
        final String hostPath = new StringBuilder("collections/").append(trendingCollection.getId()).toString();
        final Uri APP_URI_COLLECTIONS = BASE_URI_APP.buildUpon().appendEncodedPath(hostPath).build();
        Action viewAction = Action.newAction(Action.TYPE_VIEW, TITLE, APP_URI_COLLECTIONS);
        PendingResult<Status> result =  AppIndex.AppIndexApi.end(mClient, viewAction);
        result.setResultCallback(new ResultCallback<Status>() {
           @Override
            public void onResult(Status status) {
                if (status.isSuccess()) {
                    Log.d(TAG, "App Indexing API: Recorded trend "
                           + TITLE + " view ended successfully.");
                } else {
                    Log.e(TAG, "App Indexing API: There was an error recording the trend view end."
                            + status.toString());
                }
            }
        });

        mClient.disconnect();
}

Google 検索アプリの結果

私が正しくないことを知っている人はいますか?

4

1 に答える 1