2016-06-12 14 views
5

La mia app ha una sola attività. L'app ha un cassetto che ha una lista compilata dal mio fornitore di contenuti. Dal cassetto l'utente può selezionare un oggetto e quindi l'attività sarà riempita con il contenuto appropriato in modo dinamico. Non sono sicuro di come implementare l'indicizzazione delle app in questo caso. Voglio dire based on step 3 of the tutorial, l'attività sembra essere prevista per mostrare un contenuto (mi sbaglio su questo)?Indicizzazione delle app per contenuto dinamico

Nota: ho già ottenuto il deep linking working (ho un sito Web e la mappa dei contenuti per il contenuto nell'app).

In particolare mi chiedo a I cambiare dinamicamente il seguente ogni volta che l'utente cambia il contenuto:

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

E se sì, come circa il fatto che io dovrei solo per effettuare la chiamata una volta (in onStart solo). E ancora, i miei dati vengono caricati da un fornitore di contenuti. Il provider stesso viene caricato dal server, ma quella chiamata carica tutto - al contrario del solo caricamento di una singola pagina.

+0

provare questo link, questo può aiutare i indovinare https://firebase.google.com/docs/dynamic-links/android#handle-deep-links –

risposta

3

AFAIK, è necessario collegare lo GoogleApiClient una sola volta per attività. Tuttavia, puoi indicizzare i tuoi contenuti dinamici quanto vuoi (ma è meglio non indicizzare il contenuto troppe volte), ricorda di disconnetterli al termine dell'attività. Qui di seguito è quello che ho fatto nel mio progetto:

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); 
    } 
} 
Problemi correlati