2016-06-12 3 views
5

У моего приложения есть одно действие. В приложении есть ящик с списком, который заполняется у моего поставщика контента. В ящике пользователь может выбрать элемент, а затем активность будет заполняться соответствующим содержимым динамически. Я не уверен, как реализовать индексацию приложений в таком случае. Я имею в виду based on step 3 of the tutorial, активность, как ожидается, будет показывать один контент (я ошибаюсь об этом)?Индексирование приложений для динамического содержимого

Примечание: У меня уже есть работа с глубокими связями (у меня есть сайт и карта содержимого для контента в приложении).

В частности мне интересно, чтобы я динамически изменять следующий каждый раз, когда пользователь изменяет содержание:

mUrl = "http://examplepetstore.com/dogs/standard-poodle"; 
    mTitle = "Standard Poodle"; 
    mDescription = "The Standard Poodle stands at least 18 inches at the withers"; 

И если да, то как насчет того, что я только предполагается сделать вызов один раз (в OnStart только). И снова мои данные загружаются из поставщика контента. Сам поставщик загружается с сервера, но этот вызов загружает все - в отличие от загрузки только одной страницы.

+0

попробовать эту ссылку, это может помочь, я думаю https://firebase.google.com/docs/dynamic-links/android#handle-deep-links –

ответ

3

AFAIK, вы должны соединить свой GoogleApiClient один раз за активность. Однако вы можете индексировать свой динамический контент столько, сколько хотите (но лучше не индексировать контент слишком много раз), просто не забудьте отключить их, когда закончится ваша деятельность. Ниже то, что я сделал в моем проекте:

HashMap<String, Action> indexedActions; 
HashMap<String, Boolean> indexedStatuses; 
public void startIndexing(String mTitle, String mDescription, String id) { 
    if (TextUtils.isEmpty(mTitle) || TextUtils.isEmpty(mDescription)) 
     return; // dont index if there's no keyword 
    if (indexedActions.containsKey(id)) return; // dont try to re-indexing 
    if (mClient != null && mClient.isConnected()) { 
     Action action = getAction(mTitle, mDescription, id); 
     AppIndex.AppIndexApi.start(mClient, action); 
     indexedActions.put(id, action); 
     indexedStatuses.put(id, true); 
     LogUtils.e("indexed: " + mTitle + ", id: " + id); 
    } else { 
     LogUtils.e("Client is connect : " + mClient.isConnected()); 
    } 
} 

public void endIndexing(String id) { 
    // dont endindex if it's not indexed 
    if (indexedStatuses.get(id)) { 
     return; 
    } 
    if (mClient != null && mClient.isConnected()) { 
     Action action = indexedActions.get(id); 
     if (action == null) return; 
     AppIndex.AppIndexApi.end(mClient, action); 
     indexedStatuses.put(id, false); 
    } 
} 
Смежные вопросы