Engage SDK Food: Anleitung zur technischen Integration von Drittanbietern
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Google entwickelt eine On-Device-Oberfläche, Apps nach Branchen
und ermöglicht ein neues immersives Erlebnis zur Nutzung personalisierter App-Inhalte.
und Auffindbarkeit. Diese Vollbildansicht bietet Entwicklern
die Möglichkeit, ihre besten hochwertigen Inhalte in einem eigenen Kanal außerhalb von Google zu präsentieren.
ihrer App.
Dieser Leitfaden enthält Anweisungen für Entwicklerpartner zur Integration ihrer
und nutzen das Engage SDK, um sowohl die neue Oberfläche als auch
vorhandenen Google-Plattformen.
Integrationsdetails
Terminologie
Diese Integration umfasst die folgenden fünf Clustertypen: Empfehlung,
Vorgestellt, Lebensmitteleinkaufswagen, Lebensmitteleinkaufsliste und Nachbestellen.
Empfehlungscluster zeigen personalisierte, auf Essen bezogene Vorschläge von einer
einzelnen Entwicklerpartner. Diese Empfehlungen können auf die
oder generalisiert (z. B. Neu im Angebot). Verwenden Sie sie, um Rezepte anzuzeigen,
Geschäften, Geschirr, Lebensmitteln usw.
Ein Empfehlungscluster kann aus ProductEntity, StoreEntity oder
RecipeEntity-Einträge, jedoch keine Mischung aus verschiedenen Entitätstypen.
Abbildung : „ProductEntity“, „StoreEntity“ und „RezeptEntity“.
(*Benutzeroberfläche nur zur Veranschaulichung)
Im Cluster Empfohlen wird der ausgewählte Hero ProductEntity präsentiert,
StoreEntity oder RecipeEntity von vielen Entwicklerpartnern in einer einzigen Benutzeroberfläche
Gruppierung. Es gibt einen einzelnen Feature-Cluster, der in der Nähe von
im oberen Bereich der Benutzeroberfläche, mit einer Prioritätsplatzierung über allen Empfehlungen.
Cluster. Jeder Entwicklerpartner darf eine einzelne Entität übertragen.
eines unterstützten Typs in "Featured" mit vielen Entitäten (möglicherweise unterschiedlich
Typen) von mehreren App-Entwicklern im Cluster „Empfohlen“.
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung : Empfohlener Cluster mit „RecipeEntity“.
(*Benutzeroberfläche nur zur Veranschaulichung)
Der Cluster Lebensmitteleinkaufswagen bietet einen kleinen Vorgeschmack auf das Einkaufen von Lebensmitteln.
Warenkörbe von mehreren Entwicklerpartnern in einer UI-Gruppierung zusammengefasst,
ihre ausstehenden Warenkörbe abzuschließen. Es gibt einen Lebensmitteleinkaufswagen.
Cluster.
Im Warenkorb-Cluster muss die Gesamtzahl der Artikel im
Warenkorb und können auch Bilder für X Artikel im Warenkorb des Nutzers enthalten.
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung: Lebensmitteleinkaufswagen-Cluster aus einer einzelnen
Partner. (*Benutzeroberfläche nur zur Veranschaulichung)
Die Gruppe Lebensmitteleinkaufsliste bietet eine Vorschau auf den Lebensmitteleinkauf.
Listen von mehreren Entwicklerpartnern in einer UI-Gruppierung an,
kehren zur entsprechenden App zurück, um die Listen zu aktualisieren und zu vervollständigen. Es gibt eine
Cluster für Lebensmittel-Einkaufslisten.
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung:Lebensmittel-Einkaufslisten-Cluster aus einer einzelnen
Partner. (*Benutzeroberfläche nur zur Veranschaulichung)
Der Cluster Neu anordnen bietet eine Vorschau der vorherigen Bestellungen von
mehrere Entwicklerpartner in einer UI-Gruppierung gruppieren, wodurch Nutzer aufgefordert werden, ihre Bestellung nachzubestellen.
Es gibt einen einzelnen Reorder-Cluster.
Der neu angeordnete Cluster muss die Gesamtzahl der Elemente im
vorherige Bestellung des Nutzers und muss außerdem eines der folgenden Elemente enthalten:
Bilder für X Artikel in der vorherigen Bestellung des Nutzers.
Labels für X Elemente in der vorherigen Bestellung des Nutzers.
Abbildung:Food Reorder-Cluster aus einer einzelnen
Partner. (*Benutzeroberfläche nur zur Veranschaulichung)
Vorarbeiten
Mindest-API-Level: 19
Fügen Sie Ihrer App die com.google.android.engage:engage-core-Bibliothek hinzu:
dependencies {
// Make sure you also include that repository in your project's build.gradle file.
implementation 'com.google.android.engage:engage-core:1.5.2'
}
Zusammenfassung
Das Design basiert auf der Implementierung einer gebundenen
Die Daten, die ein Client veröffentlichen kann, unterliegen den folgenden Beschränkungen für verschiedene
Clustertypen:
Clustertyp
Cluster limits
Maximale Entitätslimits in einem Cluster
Empfehlungscluster
Höchstens 5
Höchstens 25 (ProductEntity, RecipeEntity oder
StoreEntity)
Ausgewählter Cluster
Höchstens 1
Höchstens 1 (ProductEntity, RecipeEntity oder
StoreEntity)
Lebensmitteleinkaufswagen-Set
Höchstens 1
Höchstens 1 ShoppingCartEntity
Lebensmittel-Einkaufslisten-Cluster
Höchstens 1
Höchstens 1 ShoppingListEntity
Cluster für Lebensmittel-Neubestellung
Höchstens 1
Höchstens 1 ReorderEntity
Schritt 1: Entitätsdaten angeben
Im SDK sind verschiedene Entitäten für jeden Elementtyp definiert. Wir unterstützen
die folgenden Entitäten für die Kategorie „Lebensmittel“ verwenden:
ProductEntity
StoreEntity
RecipeEntity
FoodShoppingCart
FoodShoppingList
FoodReorderCluster
In den folgenden Tabellen sind die verfügbaren Attribute und Anforderungen für die einzelnen Typen aufgeführt.
ProductEntity
Das ProductEntity-Objekt steht für einen einzelnen Artikel, z. B. einen Lebensmittelladen.
Artikel, Gericht aus einem Restaurant oder eine Werbeaktion), die Entwicklerpartner
Veröffentlichen.
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung : Attribute von ProductEntity
Attribut
Anforderungen
Beschreibung
Formatieren
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden.
Der Deeplink zur Seite in der App mit Details zum
Produkt.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Uri
Titel
Optional
Der Name des Produkts.
Freier Text
Empfohlene Textgröße: unter 90 Zeichen (Text mit einer
Zu lang werden Auslassungspunkte angezeigt)
Preis – aktuell
Bedingt erforderlich
Der aktuelle Preis des Produkts.
Muss angegeben werden, wenn ein durchgestrichener Preis angegeben ist.
Freier Text
Preis – durchgestrichen
Optional
Der ursprüngliche Preis des Elements, der im
UI.
Freier Text
Zusatzinformationen
Optional
Erweiterung mit Zusatzinformationen zum Präsentieren einer Werbeaktion, eines Ereignisses oder eines Updates für das Produkt, falls
verfügbar.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Kleingedrucktes mit Zusatzinformationen
Optional
Kleingedruckter Text für die Zusatzinformationen.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Bewertung (optional) – Hinweis: Alle Bewertungen werden angezeigt.
mit unserem Standard-Bewertungssystem.
Bewertung – Maximalwert
Optional
Der Maximalwert der Bewertungsskala.
Muss angegeben werden, wenn der aktuelle Wert der Bewertung ebenfalls
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Aktueller Wert
Optional
Der aktuelle Wert der Bewertungsskala.
Muss angegeben werden, wenn auch der Maximalwert für die Bewertung vorhanden ist
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Anzahl
Optional
Die Anzahl der Bewertungen für das Produkt.
Hinweis:Geben Sie dieses Feld an, wenn Ihre App
steuert, wie die Anzahl den Nutzern angezeigt wird. Verwenden Sie einen kurzen String.
Wenn die Anzahl beispielsweise 1.000.000 beträgt, sollten Sie eine Abkürzung verwenden
z. B. 1 Mio., damit die Anzahl bei kleineren
Display-Größen nicht abgeschnitten wird.
String
Bewertung – Anzahl
Optional
Die Anzahl der Bewertungen für das Produkt.
Hinweis: Geben Sie dieses Feld an, wenn Sie nicht für
die Anzeige der Abkürzungslogik selbst. Wenn sowohl „Anzahl“ als auch „Anzahl“-Werte
vorhanden sind, wird die Anzahl den Nutzern angezeigt.
Lang
DisplayTimeWindow (optional): Zeitfenster festlegen
bis ein Inhalt auf der Oberfläche angezeigt wird.
Startzeitstempel
Optional
Der Epochenzeitstempel, nach dem der Inhalt im
Oberfläche.
Wenn die Richtlinie nicht konfiguriert ist, können Inhalte auf der Oberfläche angezeigt werden.
Epochen-Zeitstempel in Millisekunden
Endzeitstempel
Optional
Der Epochenzeitstempel, nach dem der Inhalt nicht mehr zu sehen ist
an die Oberfläche.
Wenn die Richtlinie nicht konfiguriert ist, können Inhalte auf der Oberfläche angezeigt werden.
Epochen-Zeitstempel in Millisekunden
StoreEntity
Das StoreEntity-Objekt steht für einen einzelnen Speicher, den Entwicklerpartner
z. B. ein Restaurant oder ein Lebensmittelgeschäft.
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung : Attribute von StoreEntity
Attribut
Anforderungen
Beschreibung
Formatieren
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden.
Der Deeplink zur Seite in der App mit Details zum
speichern.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Uri
Titel
Optional
Der Name des Geschäfts.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Standort
Optional
Der Standort des Geschäfts.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Zusatzinformationen
Optional
Zusatzinformationen zum Präsentieren einer Werbeaktion, eines Ereignisses oder einer Aktualisierung für das Geschäft, falls
verfügbar.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Kleingedrucktes mit Zusatzinformationen
Optional
Kleingedruckter Text für die Zusatzinformationen.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Beschreibung
Optional
Eine Beschreibung des Geschäfts
Freier Text
Empfohlene Textgröße: unter 90 Zeichen (Text mit einer
Zu lang werden Auslassungspunkte angezeigt)
Hinweis: Alle Bewertungen werden mithilfe der
Standardbewertungssystem.
Bewertung – Maximalwert
Optional
Der Maximalwert der Bewertungsskala.
Muss angegeben werden, wenn der aktuelle Wert der Bewertung ebenfalls
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Aktueller Wert
Optional
Der aktuelle Wert der Bewertungsskala.
Muss angegeben werden, wenn auch der Maximalwert für die Bewertung vorhanden ist
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Anzahl
Optional
Die Anzahl der Bewertungen für den Händler.
Hinweis:Geben Sie dieses Feld an, wenn Ihre App
steuern, wie dies den Nutzenden angezeigt wird. Geben Sie den genauen String an
die dem Nutzer angezeigt werden. Wenn die Anzahl beispielsweise
1.000.000, sollten Sie Abkürzungen wie 1M verwenden, damit diese
bei kleineren Bildschirmen abgeschnitten.
String
Bewertung – Anzahl
Optional
Die Anzahl der Bewertungen für den Händler.
Hinweis: Geben Sie dieses Feld an, wenn Sie keine
die Anzeige der Abkürzungslogik selbst. Wenn sowohl „Anzahl“ als auch „Anzahl“-Werte
angezeigt wird, verwenden wir die Anzahl,
die den Nutzern angezeigt wird,
Lang
RecipeEntity
Das RecipeEntity-Objekt steht für ein Rezeptelement, das Entwicklerpartner wünschen.
die Sie veröffentlichen möchten.
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung : Attribute von RecipeEntity
Attribut
Anforderungen
Beschreibung
Formatieren
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden.
Der Deeplink zur Seite in der App mit Details zum
Rezept.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Uri
Titel
Optional
Der Name des Schemas.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Autor
Optional
Der Autor des Rezepts.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Zubereitungszeit
Optional
Die Zubereitungszeit des Rezepts.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Zusatzinformationen
Optional
Zusatzinformation zum Präsentieren einer Werbeaktion, eines Ereignisses oder einer Aktualisierung für das Rezept, falls
verfügbar.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Kategorie
Optional
Die Kategorie des Rezepts.
Freier Text
Empfohlene Textgröße: unter 45 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Beschreibung
Optional
Eine Beschreibung des Rezepts.
Freier Text
Empfohlene Textgröße: unter 90 Zeichen (Text mit einer
Zu lang werden Auslassungspunkte angezeigt)
Hinweis: Alle Bewertungen werden mithilfe unserer
Standardbewertungssystem.
Bewertung – Maximalwert
Optional
Der Maximalwert der Bewertungsskala.
Muss angegeben werden, wenn der aktuelle Wert der Bewertung ebenfalls
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Aktueller Wert
Optional
Der aktuelle Wert der Bewertungsskala.
Muss angegeben werden, wenn auch der Maximalwert für die Bewertung vorhanden ist
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Anzahl
Optional
Die Anzahl der Bewertungen für das Rezept.
Hinweis:Geben Sie dieses Feld an, wenn Ihre App
steuern, wie dies den Nutzenden angezeigt wird. Geben Sie den genauen String an
die dem Nutzer angezeigt werden. Wenn die Anzahl beispielsweise
1.000.000, sollten Sie Abkürzungen wie 1M verwenden, damit diese
bei kleineren Bildschirmen abgeschnitten.
String
Bewertung – Anzahl
Optional
Die Anzahl der Bewertungen für das Rezept.
Hinweis: Geben Sie dieses Feld an, wenn Sie keine
die Anzeige der Abkürzungslogik selbst. Wenn sowohl „Anzahl“ als auch „Anzahl“-Werte
angezeigt wird, verwenden wir die Anzahl,
die den Nutzern angezeigt wird,
Lang
FoodShoppingCart
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung: Clusterattribute für Einkaufswagen-Cluster.
Attribut
Anforderungen
Beschreibung
Formatieren
Aktions-URI
Erforderlich
Der Deeplink zum Einkaufswagen in der Partner-App.
Die Anzahl der Artikel (nicht nur die Anzahl der Produkte) im Shopping-Artikel
Einkaufswagen.
Beispiel: Wenn sich in der ersten Reihe drei Orangen und ein Apfel befinden,
sollte diese Zahl 4 sein.
Ganzzahl >= 1
Titel
Optional
Der Titel des Einkaufswagens, z. B. Mein Einkaufswagen.
Wenn der Entwickler keinen Titel angibt, Ihr Einkaufswagen
ist die Standardeinstellung.
Freier Text
Empfohlene Textgröße: unter 25 Zeichen (Text mit einer
Zu lang werden Auslassungspunkte angezeigt)
Aktionstext
Optional
Der Call-to-Action-Text der Schaltfläche im Einkaufswagen
(z. B. Meine Einkaufstasche).
Wenn der Entwickler keinen Aktionstext eingibt,
Die Standardeinstellung ist Einkaufswagen ansehen.
Dieses Attribut wird ab Version 1.1.0 unterstützt.
String
Bilder des Einkaufswagens
Optional
Bilder der einzelnen Produkte im Einkaufswagen.
Es können bis zu 10 Bilder in der Reihenfolge ihrer Priorität bereitgestellt werden. die
Die tatsächliche Anzahl der angezeigten Bilder hängt vom Geräteformat ab
Faktor.
Die Liste der Labels für die Artikel auf der Einkaufsliste.
Tatsächliche Anzahl der angezeigten Labels
hängt vom Formfaktor des Geräts ab.
Liste der kostenlosen Textlabels
Empfohlene Textgröße: unter 20 Zeichen (Text mit einer
Zu lang werden Auslassungspunkte angezeigt)
DisplayTimeWindow (optional): Zeitfenster festlegen
bis ein Inhalt auf der Oberfläche angezeigt wird.
Startzeitstempel
Optional
Der Epochenzeitstempel, nach dem der Inhalt im
Oberfläche.
Wenn die Richtlinie nicht konfiguriert ist, können Inhalte auf der Oberfläche angezeigt werden.
Epochen-Zeitstempel in Millisekunden
Endzeitstempel
Optional
Der Epochenzeitstempel, nach dem der Inhalt nicht mehr zu sehen ist
an die Oberfläche.
Wenn die Richtlinie nicht konfiguriert ist, können Inhalte auf der Oberfläche angezeigt werden.
Epochen-Zeitstempel in Millisekunden
FoodShoppingList
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung: Cluster für Lebensmittel-Einkaufslisten.
Attribut
Anforderungen
Beschreibung
Formatieren
Aktions-URI
Erforderlich
Der Deeplink zur Einkaufsliste in der App des Partners.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Uri
Anzahl der Elemente
Erforderlich
Die Anzahl der Artikel auf der Einkaufsliste.
Ganzzahl >= 1
Titel
Optional
Der Titel der Liste, z. B. Meine Lebensmittelliste.
Wenn der Entwickler keinen Titel angibt,
Standardmäßig ist Einkaufsliste ausgewählt.
Freier Text
Empfohlene Textgröße: unter 25 Zeichen (Text mit einer
Zu lang werden Auslassungspunkte angezeigt)
Elementlabels
Erforderlich
Die Liste der Labels für die Artikel auf der Einkaufsliste.
Es muss mindestens ein Label angegeben werden und es können bis zu zehn Labels angegeben werden
werden in der Reihenfolge ihrer Priorität bereitgestellt. die tatsächliche Anzahl der angezeigten Labels
hängt vom Formfaktor des Geräts ab.
Liste der kostenlosen Textlabels
Empfohlene Textgröße: unter 20 Zeichen (Text mit einer
Zu lang werden Auslassungspunkte angezeigt)
FoodReorderCluster
<ph type="x-smartling-placeholder"></ph>
<ph type="x-smartling-placeholder"></ph>
Abbildung: Cluster für die Essensbestellung.
Attribut
Anforderungen
Beschreibung
Formatieren
Aktions-URI
Erforderlich
Der Deeplink, der in der App des Partners neu angeordnet werden soll.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Uri
Aktionstext
Optional
Der Call-to-Action-Text der Schaltfläche in der Neuanordnung (z. B.
Noch einmal bestellen).
Wenn der Entwickler keinen Aktionstext eingibt,
Neu anordnen ist die Standardeinstellung.
Dieses Attribut wird ab Version 1.1.0 unterstützt.
String
Anzahl der Elemente
Erforderlich
Die Anzahl der Artikel (nicht nur die Anzahl der Produkte) in den vorherigen
Reihenfolge.
Beispiel: Wenn es drei kleine Kaffees und ein Croissant in der
aus der vorherigen Bestellung sollte diese Zahl 4 sein.
Ganzzahl >= 1
Titel
Erforderlich
Der Titel des neu angeordneten Artikels.
Freier Text
Empfohlene Textgröße: unter 40 Zeichen (Text mit
Zu lang werden Auslassungspunkte angezeigt)
Elementlabels
Optional
(Falls nicht, sollten auch Posterbilder zur Verfügung gestellt werden.)
Die Liste der Artikellabels für den vorherigen Auftrag.
Es können bis zu 10 Labels in der Reihenfolge ihrer Priorität bereitgestellt werden. die
Die tatsächliche Anzahl der angezeigten Labels hängt vom Geräteformat ab
Faktor.
Liste mit Freitext
Empfohlene Textgröße pro Label: unter 20 Zeichen
(Zu langer Text zeigt möglicherweise Auslassungspunkte an.)
Posterbilder
Optional
(Falls nicht angegeben, müssen Artikellabels angegeben werden.)
Bilder der Artikel in der vorherigen Bestellung.
Es können bis zu 10 Bilder in der Reihenfolge ihrer Priorität bereitgestellt werden. die
Die tatsächliche Anzahl der angezeigten Bilder hängt vom Geräteformat ab
Faktor.
Im Folgenden finden Sie die erforderlichen Spezifikationen für Bild-Assets:
Seitenverhältnis
Mindestanzahl Pixel
Empfohlene Pixel
Quadrat (1 × 1)
Bevorzugt
300 × 300
1200 × 1200
Querformat (1,91 x 1)
600 × 314
1200 × 628
Hochformat (4:5)
480 × 600
960 × 1200
Dateiformate
PNG, JPG, statisches GIF, WebP
Maximale Dateigröße
5.120 KB
Weitere Empfehlungen
Bildbereich:Wichtige Inhalte sollten in den mittleren 80% des
Bild.
Verwenden Sie einen transparenten Hintergrund, damit das Bild
Einstellungen für das dunkle und helle Design.
Schritt 2: Clusterdaten bereitstellen
Es wird empfohlen, den Job zur Inhaltsveröffentlichung im Hintergrund auszuführen.
(z. B. mit WorkManager)
regelmäßig oder auf Ereignisbasis (z. B. jedes Mal
wenn der Nutzer die App öffnet oder gerade etwas in den Einkaufswagen gelegt hat.
AppEngageFoodClient ist für die Veröffentlichung von Lebensmittelclustern zuständig.
Es gibt die folgenden APIs, um Cluster im Client zu veröffentlichen:
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishFoodShoppingCart
publishFoodShoppingList
publishReorderCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteFoodShoppingCartCluster
deleteFoodShoppingListCluster
deleteReorderCluster
deleteUserManagementCluster
deleteClusters
isServiceAvailable
Mit dieser API wird geprüft, ob der Dienst für die Integration verfügbar ist
ob die Inhalte auf dem Gerät angezeigt werden können.
Kotlin
client.isServiceAvailable.addOnCompleteListener { task ->
if (task.isSuccessful) {
// Handle IPC call success
if(task.result) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
}
Java
client.isServiceAvailable().addOnCompleteListener(task - > {
if (task.isSuccessful()) {
// Handle success
if(task.getResult()) {
// Service is available on the device, proceed with content publish
// calls.
} else {
// Service is not available, no further action is needed.
}
} else {
// The IPC call itself fails, proceed with error handling logic here,
// such as retry.
}
});
publishRecommendationClusters
Diese API wird zum Veröffentlichen einer Liste mit RecommendationCluster-Objekten verwendet.
Ein RecommendationCluster-Objekt kann die folgenden Attribute haben:
Attribut
Anforderungen
Beschreibung
Liste von ProductEntity, StoreEntity oder RecipeEntity
Erforderlich
Eine Liste der Entitäten, die die Empfehlungen dafür bilden
Empfehlungscluster. Entitäten in einem einzelnen Cluster müssen vom selben
Typ.
Titel
Erforderlich
Der Titel für den Empfehlungscluster, z. B. Big
Rabatt auf das Thanksgiving-Menü).
Empfohlene Textgröße: unter 25 Zeichen (Text mit einer
Zu lang werden Auslassungspunkte angezeigt)
Untertitel
Optional
Die Unterüberschrift für das Empfehlungscluster.
Aktions-URI
Optional
Der Deeplink zu der Seite in der Partner-App, auf der Nutzer die
vollständige Liste der Empfehlungen.
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
new RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Big savings on Thanksgiving menu")
.build())
.build());
Wenn der Dienst die Anfrage erhält, werden die folgenden Aktionen innerhalb von
eine Transaktion:
Alle vorhandenen Empfehlungsclusterdaten werden entfernt.
Daten aus der Anfrage werden geparst und in neuen Empfehlungsclustern gespeichert.
Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der aktuelle Status lautet
beibehalten werden.
publishFeaturedCluster
Diese API wird zum Veröffentlichen eines FeaturedCluster-Objekts verwendet.
client.publishFoodShoppingCart(
new PublishFoodShoppingCartClusterRequest.Builder()
.setShoppingCart(
new FoodShoppingCart.Builder()
...
.build())
.build());
Wenn der Dienst die Anfrage erhält, werden die folgenden Aktionen innerhalb von
eine Transaktion:
Vorhandene FoodShoppingCart-Daten des Entwicklerpartners werden entfernt.
Die Daten aus der Anfrage werden geparst und im aktualisierten Einkaufswagen gespeichert.
Cluster.
Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der aktuelle Status lautet
beibehalten werden.
publishFoodShoppingList
Diese API wird zum Veröffentlichen eines FoodShoppingList-Objekts verwendet.
client.publishFoodShoppingList(
new PublishFoodShoppingListRequest.Builder()
.setFoodShoppingList(
new FoodShoppingListEntity.Builder()
...
.build())
.build());
Wenn der Dienst die Anfrage erhält, werden die folgenden Aktionen innerhalb von
eine Transaktion:
Vorhandene FoodShoppingList-Daten des Entwicklerpartners werden entfernt.
Die Daten aus der Anfrage werden geparst und in der aktualisierten Einkaufsliste gespeichert.
Cluster.
Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der aktuelle Status lautet
beibehalten werden.
publishReorderCluster
Diese API wird zum Veröffentlichen eines FoodReorderCluster-Objekts verwendet.
client.publishReorderCluster(
new PublishReorderClusterRequest.Builder()
.setReorderCluster(
new FoodReorderCluster.Builder()
...
.build())
.build());
Wenn der Dienst die Anfrage erhält, werden die folgenden Aktionen innerhalb von
eine Transaktion:
Vorhandene FoodReorderCluster-Daten des Entwicklerpartners werden entfernt.
Daten aus der Anfrage werden geparst und im aktualisierten Reorder Cluster gespeichert.
Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der aktuelle Status lautet
beibehalten werden.
publishUserAccountManagementRequest
Dieses API wird verwendet, um eine Anmeldekarte zu veröffentlichen . Bei der Anmeldung werden Nutzer weitergeleitet zu
Anmeldeseite der App hinzufügen, damit die App Inhalte veröffentlichen oder weitere
personalisierte Inhalte)
Die folgenden Metadaten sind Teil der Anmeldekarte:
Attribut
Anforderungen
Beschreibung
Aktions-URI
Erforderlich
Deeplink zu Aktion (z.B. Weiterleitung zur Anmeldeseite der App)
Bild
Optional – falls nicht angegeben, muss ein Titel angegeben werden
Bild auf der Karte
Bilder mit einem Seitenverhältnis von 16:9 und einer Auflösung von 1264 x 712
Titel
Optional – falls nicht angegeben, muss ein Bild angegeben werden
SignInCardEntity SIGN_IN_CARD_ENTITY =
new SignInCardEntity.Builder()
.addPosterImage(
new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(500)
.setImageWidthInPixel(500)
.build())
.setActionText("Sign In")
.setActionUri(Uri.parse("http://xx.com/signin"))
.build();
client.publishUserAccountManagementRequest(
new PublishUserAccountManagementRequest.Builder()
.setSignInCardEntity(SIGN_IN_CARD_ENTITY)
.build());
Wenn der Dienst die Anfrage erhält, werden die folgenden Aktionen innerhalb von
eine Transaktion:
Vorhandene UserAccountManagementCluster-Daten vom Entwicklerpartner sind
entfernt.
Die Daten aus der Anfrage werden geparst und in der aktualisierten
UserAccountManagementCluster-Cluster.
Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der aktuelle Status lautet
beibehalten werden.
updatePublishStatus
Wenn aus
internen geschäftlichen Gründen keiner der Cluster veröffentlicht wird,
Wir empfehlen dringend, den Veröffentlichungsstatus mithilfe der
updatePublishStatus verwenden.
Dies ist aus folgenden Gründen wichtig :
Angabe des Status in allen Szenarien, auch wenn die Inhalte veröffentlicht wurden
(STATUS == VERÖFFENTLICHT) ist wichtig, um Dashboards mit diesem
expliziten Status, um den Zustand und andere Messwerte deiner Integration zu vermitteln.
Wenn keine Inhalte veröffentlicht werden, der Integrationsstatus aber nicht fehlerhaft ist
(STATUS == NOT_PUBLISHED), Google kann verhindern, dass Benachrichtigungen in der App ausgelöst werden
Gesundheits-Dashboards. Er bestätigt, dass Inhalte aufgrund eines
erwartete Situation aus Sicht des Anbieters.
Es hilft Entwickelnden, Erkenntnisse darüber zu geben, wann die Daten veröffentlicht werden
nicht.
Google kann die Statuscodes verwenden, um Nutzer zu bestimmten Aktionen im
damit sie den App-Inhalt sehen oder überwinden können.
Die Liste der zulässigen Veröffentlichungsstatuscodes sieht so aus :
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
Wenn der Inhalt nicht veröffentlicht wird, weil ein Nutzer nicht angemeldet ist,
Google empfiehlt, die Log-in-Karte zu veröffentlichen.
Wenn Anbieter die Anmeldekarte aus irgendeinem Grund nicht veröffentlichen können
sollten Sie die API updatePublishStatus aufrufen,
mit dem Statuscode NOT_PUBLISHED_REQUIRES_SIGN_IN
client.updatePublishStatus(
new PublishStatusRequest.Builder()
.setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
.build());
deleteRecommendationClusters
Diese API wird verwendet, um den Inhalt von Empfehlungsclustern zu löschen.
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus der
Empfehlungscluster. Bei einem Fehler wird die gesamte Anfrage abgelehnt.
und der bestehende Zustand beibehalten wird.
deleteFeaturedCluster
Diese API wird verwendet, um den Inhalt von empfohlenen Clustern zu löschen.
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus der
Empfohlener Cluster. Bei einem Fehler wird die gesamte Anfrage abgelehnt.
und der bestehende Zustand beibehalten wird.
deleteFoodShoppingCartCluster
Diese API wird verwendet, um den Inhalt des Lebensmitteleinkaufswagen-Clusters zu löschen.
Kotlin
client.deleteFoodShoppingCartCluster()
Java
client.deleteFoodShoppingCartCluster();
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus der
Lebensmitteleinkaufswagen. Bei einem Fehler wird die gesamte Anfrage abgelehnt.
und der bestehende Zustand beibehalten wird.
deleteFoodShoppingListCluster
Diese API wird verwendet, um den Inhalt des Lebensmittel-Einkaufslisten-Clusters zu löschen.
Kotlin
client.deleteFoodShoppingListCluster()
Java
client.deleteFoodShoppingListCluster();
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus der
Einkaufslisten-Gruppe für Lebensmittel. Bei einem Fehler wird die gesamte Anfrage abgelehnt.
und der bestehende Zustand beibehalten wird.
deleteReorderCluster
Diese API wird verwendet, um den Inhalt von FoodReorderCluster zu löschen.
Kotlin
client.deleteReorderCluster()
Java
client.deleteReorderCluster();
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus der
Cluster neu anordnen. Bei einem Fehler wird die gesamte Anfrage abgelehnt.
und der bestehende Zustand beibehalten wird.
deleteUserManagementCluster
Diese API wird verwendet, um den Inhalt des UserAccountManagement-Clusters zu löschen.
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus der
UserAccountManagement-Cluster. Tritt ein Fehler auf, wird die gesamte Anfrage
abgelehnt und der bestehende Status wird beibehalten.
deleteClusters
Diese API wird verwendet, um den Inhalt eines bestimmten Clustertyps zu löschen.
client.deleteClusters(
new DeleteClustersRequest.Builder()
.addClusterType(ClusterType.TYPE_FEATURED)
.addClusterType(ClusterType.TYPE_RECOMMENDATION)
...
.build());
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus allen
Cluster, die den angegebenen Clustertypen entsprechen. Kunden können ein oder mehrere
viele Clustertypen. Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der
der aktuelle Zustand beibehalten wird.
Fehlerbehandlung
Es wird dringend empfohlen, das Aufgabenergebnis der Publish-APIs wie
dass eine Folgeaktion ergriffen werden kann, um eine erfolgreiche Aufgabe wiederherzustellen und erneut zu senden.
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(...)
.build())
.addOnCompleteListener(
task -> {
if (task.isSuccessful()) {
// do something
} else {
Exception exception = task.getException();
if (exception instanceof AppEngageException) {
@AppEngageErrorCode
int errorCode = ((AppEngageException) exception).getErrorCode();
if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
// do something
}
}
}
});
Der Fehler wird als AppEngageException zurückgegeben, wobei die Ursache
Fehlercode angezeigt.
Fehlercode
Hinweis
SERVICE_NOT_FOUND
Der Dienst ist auf dem betreffenden Gerät nicht verfügbar.
SERVICE_NOT_AVAILABLE
Der Dienst ist auf dem jeweiligen Gerät verfügbar, aber nicht.
zum Zeitpunkt des Aufrufs ändern (z. B. explizit deaktiviert).
SERVICE_CALL_EXECUTION_FAILURE
Die Aufgabe konnte aufgrund von Threading-Problemen nicht ausgeführt werden. In diesem Fall kann es
erneut versuchen können.
SERVICE_CALL_PERMISSION_DENIED
Der Aufrufer ist nicht berechtigt, den Dienstaufruf durchzuführen.
SERVICE_CALL_INVALID_ARGUMENT
Die Anfrage enthält ungültige Daten (zum Beispiel mehr als die zulässigen
Clusteranzahl).
SERVICE_CALL_INTERNAL
Dienstseitig ist ein Fehler aufgetreten.
SERVICE_CALL_RESOURCE_EXHAUSTED
Der Dienstaufruf erfolgt zu häufig.
Schritt 3: Mit Broadcast-Intents umgehen
Neben den Aufrufen der
Content API zum Veröffentlichen über einen Job
für die Einrichtung eines
BroadcastReceiver zum Empfangen von
um die Veröffentlichung
von Inhalten zu beantragen.
Das Ziel von Broadcast-Intents besteht hauptsächlich darin, die App wieder zu aktivieren und Daten zu erzwingen
synchronisieren. Broadcast-Intents sind nicht für das häufige Senden konzipiert. Es ist nur
die ausgelöst werden, wenn Google Engage für Agenturen feststellt, dass die Inhalte veraltet sind (für
z. B. eine Woche alt). Auf diese Weise besteht ein größeres Vertrauen, dass die Nutzenden
Inhalte aktualisieren, auch wenn die App länger als
lange Zeit verbringen.
BroadcastReceiver muss auf zwei Arten eingerichtet werden:
Dynamisches Registrieren einer Instanz der BroadcastReceiver-Klasse mithilfe von
Context.registerReceiver(). Dies ermöglicht die Kommunikation von Anwendungen
die sich noch im Arbeitsspeicher befinden.
class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART
// broadcast is received
// Trigger shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST
// broadcast is received
// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
// received
}
public static void registerBroadcastReceivers(Context context) {
context = context.getApplicationContext();
// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION));
// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED));
// Register Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART));
// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST));
// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER));
}
Sie müssen eine Implementierung mit dem <receiver>-Tag in Ihrem
AndroidManifest.xml-Datei. Dadurch kann die Anwendung Nachrichten an alle
Intents erstellt, wenn sie nicht ausgeführt wird, und ermöglicht der App,
für den Inhalt.
com.google.android.engage.action.PUBLISH_RECOMMENDATION
Es empfiehlt sich, einen publishRecommendationClusters-Anruf zu starten, wenn
die diesen Intent erhalten.
com.google.android.engage.action.PUBLISH_FEATURED
Bei Erhalt dieser E-Mail wird empfohlen, einen publishFeaturedCluster-Anruf zu starten.
Nutzerabsicht verstehen.
com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_CART
Es wird empfohlen, bei einem eingehenden Anruf einen publishFoodShoppingCart-Anruf zu starten.
für diesen Intent.
com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST
Es wird empfohlen, bei einem eingehenden Anruf einen publishFoodShoppingList-Anruf zu starten.
für diesen Intent.
com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER
Bei Erhalt dieser E-Mail wird empfohlen, einen publishReorderCluster-Anruf zu starten.
Nutzerabsicht verstehen.
Kontakt
Engage-developers@google.com, falls folgende Voraussetzungen erfüllt sind:
Fragen während des Integrationsprozesses stellen. Unser Team wird sich so schnell wie möglich bei dir melden,
möglich.
Nächste Schritte
Nach Abschluss der Integration sind folgende Schritte erforderlich:
E-Mail senden an
Engage-developers@google.com und fügen Sie
dein integriertes APK, das von Google getestet werden kann.
Google führt eine interne Überprüfung durch, um sicherzustellen,
wie erwartet funktioniert. Falls Änderungen erforderlich sind, kontaktiert Google Sie.
mit allen erforderlichen Details.
Wenn die Tests abgeschlossen sind und keine Änderungen erforderlich sind, kontaktiert Google Sie, um
benachrichtigt, dass Sie mit der Veröffentlichung des aktualisierten und integrierten APK im
Play Store
Nachdem Google bestätigt hat, dass Ihr aktualisiertes APK im
Play Store, deine Empfehlung, Angesagt, Einkaufswagen
Die Cluster Einkaufsliste und Neu anordnen werden veröffentlicht und sind sichtbar für
Nutzenden.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2024-07-24 (UTC).
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Benötigte Informationen nicht gefunden"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Zu umständlich/zu viele Schritte"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Nicht mehr aktuell"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problem mit der Übersetzung"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problem mit Beispielen/Code"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Sonstiges"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Leicht verständlich"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Mein Problem wurde gelöst"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Sonstiges"
}]