2016-06-12 7 views
5

Meine App hat eine Aktivität. Die App verfügt über eine Schublade mit einer Liste, die von meinem Inhaltsanbieter ausgefüllt wird. Aus der Schublade kann der Benutzer einen Gegenstand auswählen und dann wird die Aktivität dynamisch mit dem entsprechenden Inhalt gefüllt. Ich bin mir nicht sicher, wie ich die App-Indexierung in einem solchen Fall implementieren kann. Ich meine based on step 3 of the tutorial, scheint die Aktivität einen Inhalt zu zeigen (bin ich falsch darüber)?App-Index für dynamische Inhalte

Hinweis: Ich habe bereits tiefe Verknüpfung funktioniert (Ich habe eine Website und die Inhaltskarte auf den Inhalt in der App).

Insbesondere frage ich bin ich die dynamisch ändern nach jedem Mal, wenn der Benutzer den Inhalt ändert:

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

Und wenn ja, wie über die Tatsache, dass ich nur den Anruf einmal machen werde soll (in onStart nur). Und wieder werden meine Daten von einem Inhaltsanbieter geladen. Der Provider selbst wird vom Server geladen, aber dieser Aufruf lädt alles - anstatt nur eine einzelne Seite zu laden.

+0

diesen Link versuchen, kann dies helfen, ich denke, https://firebase.google.com/docs/dynamic-links/android#handle-deep-links –

Antwort

3

AFAIK, sollten Sie Ihre GoogleApiClient nur einmal pro Aktivität verbinden. Sie können Ihren dynamischen Inhalt jedoch beliebig oft indizieren (aber besser nicht, um Inhalte nicht zu oft zu indizieren), denken Sie daran, sie nach Abschluss Ihrer Aktivität zu trennen. Unten ist das, was ich in meinem Projekt tat:

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