Engage SDK Dating: 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 Entwickler
ihre Dating-Inhalte zu integrieren, indem sie das Engage SDK verwenden, um dieses neue
Oberfläche.
Integrationsdetails
Terminologie
Diese Integration umfasst die folgenden drei Clustertypen: Empfehlung,
Empfohlen und Fortsetzung.
Empfehlungscluster enthalten personalisierte Dating-Vorschläge
von einem einzelnen Entwicklerpartner. Diese Empfehlungen können
für den Nutzer personalisiert werden.
Ein Empfehlungscluster kann aus ArticleEntity, PersonEntity,
oder EventEntity, aber keine Kombination verschiedener Entitätstypen.
Ihre Empfehlungen haben folgende Struktur:
Empfehlungscluster:Eine UI-Ansicht, die eine Gruppe von
vom selben Entwicklerpartner erhalten.
Entität:Ein Objekt, das ein einzelnes Element in einem Cluster darstellt. Dieses
bietet einige Entitäten, die mithilfe der
Empfehlungscluster:
ArticleEntity: ArticleEntity steht für eine Empfehlung für
textbasierte Inhalte zum Thema Dating. ArticleEntity-Element
können Entwickler eine Vielzahl von Text- und Bildinhalten bereitstellen.
mit mehr Metadaten, um den Nutzenden
die Informationen zu vermitteln.
<ph type="x-smartling-placeholder"></ph>
Abbildung 1:Benutzeroberfläche mit einer einzelnen ArticleEntity im Empfehlungscluster.
PersonEntity: PersonEntity repräsentiert eine Person. Die
könnte sein, eine Person aus dem
mit potenziellen Kund*innen zu gewinnen.
<ph type="x-smartling-placeholder"></ph>
Abbildung 2: Benutzeroberfläche mit einer einzelnen PersonEntity in
Empfehlungscluster.
EventEntity: EventEntity repräsentiert ein Ereignis, das in der
zu entwickeln. Der Beginn eines Ereignisses
ist eine wichtige Information,
den Nutzenden vermittelt werden muss.
<ph type="x-smartling-placeholder"></ph>
Abbildung 3:Benutzeroberfläche mit einer einzelnen EventEntity
im Empfehlungscluster an.
Im Cluster Fortsetzung werden Inhalte angezeigt, die kürzlich von Nutzern aus
mehrere Entwicklerpartner in einer einzigen UI-Gruppierung zusammenfassen. Jeder Entwicklerpartner
dürfen maximal zehn Rechtssubjekte in der Fortsetzung übertragen.
Cluster.
Fortsetzungsinhalte können die folgende Struktur haben:
ArticleEntity: ArticleEntity steht für eine Empfehlung für
textbasierte Inhalte zum Thema Dating. Mit dieser Entität können
unvollständige Nachrichtenartikel oder andere Inhalte darstellen, die der Nutzer
sie dort weiterschauen, wo sie aufgehört haben.
<ph type="x-smartling-placeholder"></ph>
Abbildung 6: Benutzeroberfläche mit einer einzelnen ArticleEntity
ein Continuation-Cluster.
EventReservationEntity: EventReservationEntity steht für
Reservierung für einen Termin und hilft Nutzern dabei, anstehende oder laufende
und Reservierungen für Dating- und Treffentreffen.
<ph type="x-smartling-placeholder"></ph>
Abbildung 8: Benutzeroberfläche mit einer
EventReservationEntity in einem Continuation-Cluster.
Der Cluster Empfohlen ist eine UI-Ansicht, in der das ausgewählte Hero-Image zu sehen ist.
GenericFeaturedEntity von vielen Entwicklerpartnern in einer UI-Gruppierung.
Es gibt einen einzelnen „Featured Cluster“, der sich am oberen Rand der
Benutzeroberfläche mit einer Prioritätsplatzierung über allen Empfehlungsclustern Jedes
Entwicklerpartner dürfen eine einzelne Entität einer unterstützten
geben Sie „Featured“ mit vielen Entitäten (möglicherweise unterschiedlichen Typs) aus
mehrere App-Entwickler
im „Empfohlen“-Cluster erstellt.
GenericFeaturedEntity: GenericFeaturedEntity unterscheidet sich von
Empfehlung in „Vorgestelltes Element“ sollte für eine einzelne
von Entwicklern zu erhalten. Sie sollten
die für Nutzer interessant und relevant sind.
<ph type="x-smartling-placeholder"></ph>
Abbildung 12: Benutzeroberfläche mit einem FeaturedCluster und einem
Liste der GenericFeaturedEntity
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'
}
Beschreiben Sie die Kategorie des Inhalts in der Entität.
Liste der Enums
Weitere Informationen finden Sie im Abschnitt Inhaltskategorie.
.
ArticleEntity
Attribut
Anforderungen
Beschreibung
Formatieren
Aktions-URI
Erforderlich
Deeplink zur Entität in der Anbieter-App.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Uri
Titel
Erforderlich
Titel der Entität.
Freier Text
Empfohlene Textgröße: max. 50 Zeichen
Posterbilder
Optional
Wenn mehrere Bilder zur Verfügung gestellt werden, wird nur ein Bild angezeigt.
Empfohlenes Seitenverhältnis: 16:9
Hinweis:Bilder werden dringend empfohlen. Wenn ein Abzeichen
Achten Sie darauf, einen sicheren Abstand von 24 dps am oberen und unteren Rand des Geräts
Bild
Stellt das Kopfzeilenbild dar. Sollte sich vom Profilbild unterscheiden.
Diese Option kann verwendet werden, wenn es ein zusätzliches Bild gibt, das die
Person ihre Arbeit mögen.
Hinweis:Es muss sich um ein Bild im 16:9-Format handeln. Wird ein Badge bereitgestellt,
Sorgen Sie für sicheren Platz von 24 dps am oberen und unteren Rand des Bildes.
Geben Sie die Anzahl der Follower oder den Beliebtheitswert an. Beispiel:
„3.7 M.“
Hinweis: Wenn sowohl „Anzahl“ als auch „Anzahl“ angegeben ist, gilt Folgendes:
Anzahl wird verwendet
String
Empfohlene Textgröße: max. 20 Zeichen für „Anzahl“ + „Label“
kombiniert
Beliebtheit – Anzahlwert
Optional
Die Anzahl der Follower oder der Beliebtheitswert.
Hinweis:Geben Sie den Wert für die Anzahl an, wenn Ihre App
die Logik für die Optimierung einer großen Zahl
unterschiedliche Displaygrößen. Wenn sowohl „Count“ als auch „Count Value“ angegeben sind,
Die Anzahl wird den Nutzern angezeigt.
Lang
Beliebtheit – Label
Optional
Das Label für die Beliebtheit angeben. Beispiel: „Gefällt mir“.
String
Empfohlene Textgröße: max. 20 Zeichen für „Anzahl“ + „Label“
kombiniert
Beliebtheit – Visuell
Optional
Geben Sie an, wofür die Interaktion gedacht ist. Beispiel: Angezeigtes Bild
„Gefällt mir“-Symbol, Emoji.
Es können mehr als ein Bild bereitgestellt werden, es werden aber möglicherweise nicht alle Bilder angezeigt
Formfaktoren.
Hinweis:Es muss sich um ein quadratisches Bild mit einem Seitenverhältnis von 1:1 handeln.
Muss angegeben werden, wenn der aktuelle Wert der Bewertung ebenfalls
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Aktueller Wert
Erforderlich
Der aktuelle Wert der Bewertungsskala.
Muss angegeben werden, wenn auch der Höchstwert für die Bewertung vorhanden ist
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Anzahl
Optional
Die Anzahl der Bewertungen für die Entität.
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 die Entität.
Hinweis: Geben Sie dieses Feld an, wenn Sie keine
die Anzeige der Abkürzungslogik. Wenn sowohl „Anzahl“ als auch „Anzahl“-Werte
angezeigt wird, verwenden wir die Anzahl,
die den Nutzern angezeigt wird,
Lang
Standort – Land
Optional
Das Land, in dem die Person ansässig ist oder in dem sie tätig ist.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Stadt
Optional
Die Stadt, in der sich die Person befindet oder in der sie tätig ist.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – angezeigte Adresse
Optional
Die Adresse, an der sich die Person befindet oder an der sie tätig ist, wird für
Nutzenden.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Adresse
Optional
Die Adresse (falls zutreffend), an der sich die Person befindet, oder
der Auslieferung.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Bundesland
Optional
Der Bundesstaat (falls zutreffend), in dem sich die Person befindet oder in der sie tätig ist.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Postleitzahl
Optional
Die Postleitzahl (falls zutreffend), an der sich die Person befindet oder tätig ist.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Stadtteil
Optional
Das Viertel (falls zutreffend), in dem sich die Person befindet oder in der sie tätig ist.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Badges
Optional
Jedes Badge kann entweder aus freiem Text (max. 15 Zeichen) oder aus einem kleinen Bild bestehen.
Badge – Text
Optional
Titel für das Logo
Hinweis: Für das Logo ist entweder Text oder ein Bild erforderlich.
Freier Text
Empfohlene Textgröße: max. 15 Zeichen
Badge – Bild
Optional
Kleines Bild
Spezielle Nutzererfahrung, z. B. als Badge-Overlay auf dem Bild/Video
Thumbnail.
Hinweis: Für das Logo ist entweder Text oder ein Bild erforderlich.
Weitere Informationen finden Sie im Abschnitt Inhaltskategorie.
.
EventEntity
Attribut
Anforderungen
Beschreibung
Formatieren
Aktions-URI
Erforderlich
Deeplink zur Entität in der Anbieter-App.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Uri
Titel
Erforderlich
Titel der Entität.
String
Empfohlene Textgröße: max. 50 Zeichen
Beginn
Erforderlich
Der Epochenzeitstempel, an dem das Ereignis voraussichtlich beginnen wird.
Hinweis: Der Wert wird in Millisekunden angegeben.
Epochen-Zeitstempel in Millisekunden
Ereignismodus
Erforderlich
Ein Feld, das angibt, ob die Veranstaltung virtuell, vor Ort oder
beides.
Enum: VIRTUAL, IN_PERSON oder HYBRID
Posterbilder
Erforderlich
Wenn mehrere Bilder zur Verfügung gestellt werden, wird nur ein Bild angezeigt.
Empfohlenes Seitenverhältnis: 16:9
Hinweis:Bilder werden dringend empfohlen. Wenn ein Abzeichen
Achten Sie darauf, einen sicheren Abstand von 24 dps am oberen und unteren Rand des Geräts
Bild
Der aktuelle Preis des Tickets oder der Zeitkarte für die Veranstaltung.
<ph type="x-smartling-placeholder"></ph>
Muss angegeben werden, wenn ein durchgestrichener Preis angegeben wird.
Freier Text
Preis – durchgestrichener Preis
Optional
Der ursprüngliche Preis des Tickets oder der Zeitkarte für die Veranstaltung.
Freier Text
Preis-Callout
Optional
Preiserweiterung mit Zusatzinformationen zu Werbeaktionen, Veranstaltungen oder Rabatten für Mitglieder (falls verfügbar).
Freier Text
Empfohlene Textgröße: weniger als 45 Zeichen (Text ist zu lang)
werden möglicherweise Auslassungspunkte angezeigt)
Inhaltskategorien
Optional
Beschreiben Sie die Kategorie des Inhalts in der Entität.
Liste der möglichen Aufzählungen
TYPE_MovieS_AND_TV_SHOWS (Beispiel – Kino)
TYPE_DIGITAL_GAMES (Beispiel – eSports)
TYPE_MUSIC (Beispiel – Konzert)
TYPE_TRAVEL_AND_LOCAL (Beispiel – Tour, Festival)
TYPE_HEALTH_AND_FITENESS (Beispiel – Yoga-Kurs)
TYPE_EDUCATION (Beispiel – Klasse)
TYPE_SPORTS (Beispiel – Fußballspiel)
TYPE_DATING (Beispiel – Meetup)
Weitere Informationen finden Sie im Abschnitt Inhaltskategorie.
.
EventReservationEntity
Attribut
Anforderungen
Beschreibung
Formatieren
Aktions-URI
Erforderlich
Deeplink zur Entität in der Anbieter-App.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Uri
Titel
Erforderlich
Titel der Entität.
String
Empfohlene Textgröße: max. 50 Zeichen
Beginn
Erforderlich
Der Epochenzeitstempel, an dem das Ereignis voraussichtlich beginnen wird.
Hinweis: Der Wert wird in Millisekunden angegeben.
Epochen-Zeitstempel in Millisekunden
Ereignismodus
Erforderlich
Ein Feld, das angibt, ob die Veranstaltung virtuell, vor Ort oder
beides.
Enum: VIRTUAL, IN_PERSON oder HYBRID
Standort – Land
Bedingt erforderlich
Das Land, in dem das Ereignis stattfindet.
Hinweis: Dies ist für Veranstaltungen erforderlich, die IN_PERSON oder
HYBRID
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Stadt
Bedingt erforderlich
Die Stadt, in der das Ereignis stattfindet.
Hinweis: Dies ist für Veranstaltungen erforderlich, die IN_PERSON oder
HYBRID
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – angezeigte Adresse
Bedingt erforderlich
Die Adresse oder der Name des Veranstaltungsorts, in dem die Veranstaltung stattfindet.
die für den Nutzer
angezeigt werden sollen.
Hinweis: Dies ist für Veranstaltungen erforderlich, die IN_PERSON oder
HYBRID
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Adresse
Optional
Straße (falls zutreffend) des Veranstaltungsorts
gehostet wird.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Bundesland
Optional
Das Bundesland, in dem das Ereignis stattfindet (falls zutreffend)
gehostet wird.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Postleitzahl
Optional
Die Postleitzahl (falls zutreffend) des Orts, an dem die Veranstaltung stattfindet
gehostet wird.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Standort – Stadtteil
Optional
Der Stadtteil (falls zutreffend), in dem die Veranstaltung stattfindet.
Freier Text
Empfohlene Textgröße: max. 20 Zeichen
Posterbilder
Optional
Wenn mehrere Bilder zur Verfügung gestellt werden, wird nur ein Bild angezeigt.
Empfohlenes Seitenverhältnis: 16:9
Hinweis:Bilder werden dringend empfohlen. Wenn ein Abzeichen
Achten Sie darauf, einen sicheren Abstand von 24 dps am oberen und unteren Rand des Geräts
Bild
Der aktuelle Preis des Tickets oder der Zeitkarte für die Veranstaltung.
<ph type="x-smartling-placeholder"></ph>
Muss angegeben werden, wenn ein durchgestrichener Preis angegeben wird.
Freier Text
Preis – durchgestrichener Preis
Optional
Der ursprüngliche Preis des Tickets oder der Zeitkarte für die Veranstaltung.
Freier Text
Preis-Callout
Optional
Preiserweiterung mit Zusatzinformationen zu Werbeaktionen, Veranstaltungen oder Rabatten für Mitglieder (falls verfügbar).
Freier Text
Empfohlene Textgröße: weniger als 45 Zeichen (Text ist zu lang)
werden möglicherweise Auslassungspunkte angezeigt)
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 Höchstwert für die Bewertung vorhanden ist
bereitgestellt werden.
Zahl >= 0,0
Bewertung – Anzahl
Optional
Die Anzahl der Bewertungen für das Ereignis.
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 Ereignis.
Hinweis: Geben Sie dieses Feld an, wenn Sie keine
die Anzeige der Abkürzungslogik. Wenn sowohl „Anzahl“ als auch „Anzahl“-Werte
angezeigt wird, verwenden wir die Anzahl,
die den Nutzern angezeigt wird,
Lang
Inhaltskategorien
Optional
Beschreiben Sie die Kategorie des Inhalts in der Entität.
Liste der möglichen Aufzählungen
TYPE_MovieS_AND_TV_SHOWS (Beispiel – Kino)
TYPE_DIGITAL_GAMES (Beispiel – eSports)
TYPE_MUSIC (Beispiel – Konzert)
TYPE_TRAVEL_AND_LOCAL (Beispiel – Tour, Festival)
TYPE_HEALTH_AND_FITENESS (Beispiel – Yoga-Kurs)
TYPE_EDUCATION (Beispiel – Klasse)
TYPE_SPORTS (Beispiel – Fußballspiel)
TYPE_DATING (Beispiel – Meetup)
Weitere Informationen finden Sie im Abschnitt Inhaltskategorie.
.
Bildspezifikationen
Die erforderlichen Spezifikationen für Bild-Assets sind in der folgenden Tabelle aufgeführt:
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
Die Images müssen auf öffentlichen CDNs gehostet werden, damit Google auf sie zugreifen kann
.
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.
Content-Kategorie
Mit der Inhaltskategorie können Apps Inhalte veröffentlichen, die mehreren
Kategorien. Dadurch wird der Inhalt einigen der vordefinierten Kategorien zugeordnet, nämlich:
TYPE_EDUCATION
TYPE_SPORTS
TYPE_MOVIES_AND_TV_SHOWS
TYPE_BOOKS
TYPE_AUDIOBOOKS
TYPE_MUSIC
TYPE_DIGITAL_GAMES
TYPE_TRAVEL_AND_LOCAL
TYPE_HOME_AND_AUTO
TYPE_BUSINESS
TYPE_NEWS
TYPE_FOOD_AND_DRINK
TYPE_SHOPPING
TYPE_HEALTH_AND_FITENESS
TYPE_MEDICAL
TYPE_PARENTING
TYPE_DATING
Die Images müssen auf öffentlichen CDNs gehostet werden, damit Google auf sie zugreifen kann
.
Richtlinien für die Verwendung der Inhaltskategorien
Einige Entitäten wie ArticleEntity und GenericFeaturedEntity sind
Content-Kategorien verwenden dürfen. Für andere Entitäten wie
EventEntity, EventReservationEntity, PersonEntity, nur eine Teilmenge
dieser Kategorien infrage kommen. Liste der infrage kommenden Kategorien anzeigen
einen Entitätstyp aus,
bevor Sie die Liste ausfüllen.
Den spezifischen Entitätstyp für einige Inhaltskategorien statt einer Kombination verwenden
der generischen Entitäten und der ContentCategory:
Das Feld "ContentCategory" ist optional und sollte leer bleiben, wenn
gehört zu keiner der oben genannten Kategorien.
Falls mehrere Inhaltskategorien angegeben werden, geben Sie diese in der Reihenfolge an.
für den Content mit der relevantesten Inhaltskategorie
an erster Stelle.
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.
AppEngagePublishClient ist für das Veröffentlichen von Clustern zuständig.
Es gibt die folgenden APIs, um Cluster im Client zu veröffentlichen:
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
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 verwendet, um eine Liste von RecommendationCluster-Objekten zu veröffentlichen.
client.publishRecommendationClusters(
new PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(
new RecommendationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.setTitle("Top Picks For You")
.build())
.build());
Wenn der Dienst die Anfrage erhält, werden die folgenden Aktionen innerhalb von
eine Transaktion:
Vorhandene RecommendationCluster-Daten des Entwicklerpartners werden entfernt.
Daten aus der Anfrage werden geparst und in der aktualisierten Empfehlung gespeichert
Cluster.
Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der aktuelle Status lautet
beibehalten werden.
publishFeaturedCluster
Diese API wird verwendet, um eine Liste von FeaturedCluster-Objekten zu veröffentlichen.
client.publishFeaturedCluster(
new PublishFeaturedClustersRequest.Builder()
.addFeaturedCluster(
new FeaturedCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build());
Wenn der Dienst die Anfrage erhält, werden die folgenden Aktionen innerhalb von
eine Transaktion:
Vorhandene FeaturedCluster-Daten des Entwicklerpartners werden entfernt.
Die Daten aus der Anfrage werden geparst und im aktualisierten „Featured Cluster“ gespeichert.
Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der aktuelle Status lautet
beibehalten werden.
publishContinuationCluster
Diese API wird zum Veröffentlichen eines ContinuationCluster-Objekts verwendet.
client.publishContinuationCluster(
new PublishContinuationClusterRequest.Builder()
.setContinuationCluster(
new ContinuationCluster.Builder()
.addEntity(entity1)
.addEntity(entity2)
.build())
.build());
Wenn der Dienst die Anfrage erhält, werden die folgenden Aktionen innerhalb von
eine Transaktion:
Vorhandene ContinuationCluster-Daten des Entwicklerpartners werden entfernt.
Die Daten aus der Anfrage werden geparst und in der aktualisierten Continuation gespeichert.
Cluster.
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
Wird aus internen geschäftlichen Gründen keiner der Cluster veröffentlicht,
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 in
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 die Inhalte nicht veröffentlicht werden, weil ein Nutzer nicht angemeldet ist, verwendet Google
empfehlen wir, die Anmeldekarte zu veröffentlichen. Wenn Anbieter nicht in der Lage sind,
um die Anmeldekarte zu veröffentlichen, dann empfehlen wir, die
updatePublishStatus API mit dem Statuscode
NICHT_VERÖFFENTLICHT_REQUIRES_SIGN_IN
client.updatePublishStatus(
new PublishStatusRequest.Builder()
.setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
.build());
deleteRecommendationClusters
Mit dieser API wird der Inhalt von Empfehlungsclustern gelöscht.
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus der
Empfehlungscluster. Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt
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. Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt und der
der aktuelle Zustand beibehalten wird.
deleteContinuationCluster
Diese API wird verwendet, um den Inhalt des Fortsetzungsclusters zu löschen.
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
Wenn der Dienst die Anfrage erhält, werden die vorhandenen Daten aus der
Fortsetzungscluster. Tritt ein Fehler auf, wird die gesamte Anfrage abgelehnt
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_CONTINUATION)
.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.
Kotlin
client.publishRecommendationClusters(
PublishRecommendationClustersRequest.Builder()
.addRecommendationCluster(..)
.build())
.addOnCompleteListener { task ->
if (task.isSuccessful) {
// do something
} else {
val exception = task.exception
if (exception is AppEngageException) {
@AppEngageErrorCode val errorCode = exception.errorCode
if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
// do something
}
}
}
}
Java
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 zur Reaktivierung von Apps und zum Erzwingen von Daten.
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.
Kotlin
class AppEngageBroadcastReceiver : BroadcastReceiver(){
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received
// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}
fun registerBroadcastReceivers(context: Context){
var context = context
context = context.applicationContext
// Register Recommendation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION))
// Register Featured Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_FEATURED))
// Register Continuation Cluster Publish Intent
context.registerReceiver(AppEngageBroadcastReceiver(),
IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION))
}
Java
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 continuation cluster publish when PUBLISH_CONTINUATION 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 Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION));
}
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 Empfohlen
, um bei Erhalt dieses Intents einen publishRecommendationClusters-Aufruf zu starten.
com.google.android.engage.action.PUBLISH_FEATURED Wir empfehlen,
einen publishFeaturedCluster-Aufruf starten, wenn Sie diesen Intent erhalten.
com.google.android.engage.action.PUBLISH_CONTINUATION Wir empfehlen,
einen publishContinuationCluster-Aufruf starten, wenn Sie diesen Intent erhalten.
Kontakt
Engage-developers@google.com, falls folgende Voraussetzungen erfüllt sind:
Fragen während des Integrationsprozesses stellen.
Nächste Schritte
Nach Abschluss der Integration sind folgende Schritte erforderlich:
E-Mail senden an
Engage-developers@google.com und
hängen Sie Ihr integriertes APK an, das von Google getestet werden kann.
Google führt eine Überprüfung durch und prüft diese intern, 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,
benachrichtigt Sie, dass Sie mit der Veröffentlichung des aktualisierten und integrierten APK beginnen können.
im Play Store.
Nachdem Google bestätigt hat, dass Ihr aktualisiertes APK im
Play Store, Ihre Empfehlung, Angesagt und Fortsetzung
Cluster können veröffentlicht und für Nutzer sichtbar sein.
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-08-29 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2024-08-29 (UTC)."],[],[]]