Engage SDK – Listen: 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 eine Anleitung für Entwicklerpartner zum Einbinden von Audioanzeigen
und nutzen das Engage SDK, um sowohl die neue Oberfläche als auch
vorhandenen Google-Plattformen.
Integrationsdetails
Terminologie
Diese Integration umfasst die folgenden drei Clustertypen: Empfehlung,
Continuation und Featured.
Empfehlungscluster zeigen personalisierte Vorschläge für zu lesende Inhalte an.
von einem einzelnen Entwicklerpartner.
Ihre Empfehlungen haben folgende Struktur:
Empfehlungscluster:Eine UI-Ansicht, die eine Gruppe von
vom selben Entwicklerpartner erhalten.
<ph type="x-smartling-placeholder"></ph>
Abbildung 1: Benutzeroberfläche von Entertainment Space mit
Empfehlungscluster von einem einzigen Partner
Entität:Ein Objekt, das ein einzelnes Element in einem Cluster darstellt. Entität
z. B. eine Playlist, ein Hörbuch oder ein Podcast. Weitere Informationen finden Sie im Abschnitt zur Bereitstellung von
Abschnitt zu Entitätsdaten mit einer Liste der unterstützten Entitäten
Typen.
<ph type="x-smartling-placeholder"></ph>
Abbildung 2: Benutzeroberfläche von Entertainment Space mit einer
Entität im Empfehlungscluster eines einzelnen Partners.
Im Cluster Fortsetzung werden Audioinhalte angezeigt, mit denen Nutzer zuletzt interagiert haben.
von mehreren Entwicklerpartnern in einer einzigen UI-Gruppierung. Jeder Entwickler
darf der Partner maximal 10 Entitäten im
Fortsetzungscluster.
<ph type="x-smartling-placeholder"></ph>
Abbildung 3: Benutzeroberfläche von Entertainment Space mit
Fortsetzungscluster mit noch nicht abgeschlossenen Empfehlungen aus mehreren
(derzeit nur eine Empfehlung sichtbar).
Im Cluster Empfohlen wird eine Auswahl von Objekten aus mehreren
Entwicklerpartner in einer einzigen UI-Gruppierung zusammengefasst. Es wird eine einzelne Funktion
Cluster, der oben in der UI mit einer Priorität angezeigt wird
die über allen Empfehlungsclustern liegt. Jeder Entwicklerpartner
bis zu 10 Entitäten im Featured Cluster veröffentlichen können.
<ph type="x-smartling-placeholder"></ph>
Abbildung 4: In der Entertainment Space-Benutzeroberfläche wird der Bereich „Empfohlen“ angezeigt.
Cluster mit Empfehlungen von mehreren Partnern (nur eine)
Empfehlung wird derzeit angezeigt).
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 50
Fortsetzungscluster
Höchstens 1
Höchstens 10
Ausgewählter Cluster
Höchstens 1
Höchstens 10
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 „Listen“:
MusicAlbumEntity
MusicArtistEntity
MusicTrackEntity
MusicVideoEntity
PlaylistEntity
PodcastSeriesEntity
PodcastEpisodeEntity
LiveRadioStationEntity
AudiobookEntity
In den folgenden Tabellen sind die verfügbaren Attribute und Anforderungen für die einzelnen Typen aufgeführt.
MusicAlbumEntity
Das MusicAlbumEntity-Objekt steht für ein Musikalbum, z. B. Mitternacht.
von Taylor Swift).
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Der Titel des Musikalbums.
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Weitere Informationen finden Sie unter
Bildspezifikationen.
URI der Informationsseite
Erforderlich
Der Deeplink zur Anbieter-App für Details zum Musikalbum
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Künstler
Erforderlich
Liste der Künstler des Musikalbums
Wiedergabe-URI
Optional
Ein Deeplink, mit dem die Wiedergabe des Albums in der Anbieter-App gestartet wird.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Anzahl der Titel
Optional
Die Anzahl der Titel im Musikalbum.
Genres
Optional
Liste der Genres im Musikalbum
Albumformat
Optional
ALBUM (inkl. LP und Doppel-LP)
EP
EINZIGES
Mixtape
Musiklabels
Optional
Liste der mit dem Album verknüpften Musiklabels
Auf Gerät heruntergeladen
Optional
Boolescher Wert, der angibt, ob das Musikalbum auf das Gerät heruntergeladen wurde
Explizit
Optional
Ein boolescher Wert, der angibt, ob der Inhalt explizit ist oder nicht
Inhalte mit expliziten Inhalten oder Inhalten, für die ein elterlicher Hinweis vorliegt
Für Warnung sollte TRUE festgelegt werden. Anstößige Inhalte werden mit einem „E“ angezeigt Tag.
Erscheinungsdatum
Optional
Das Veröffentlichungsdatum des Albums in Millisekunden der Epoche.
Dauer
Optional
Die Dauer des Albums in Millisekunden
Letzte Interaktion
Optional
Empfohlen für Elemente im Fortsetzungscluster. Kann verwendet werden für
Ranking.
In Epochenmillisekunden
Fortschritt in Prozent abgeschlossen
Optional
Empfohlen für Elemente im Fortsetzungscluster.
Ganzzahl zwischen 0 und 100
MusicArtistEntity
Das MusicArtistEntity-Objekt steht für einen Musiker (z. B. Adele).
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Name des Künstlers
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Weitere Informationen finden Sie unter
Bildspezifikationen.
URI der Informationsseite
Erforderlich
Der Deeplink zur Anbieter-App mit Details zur Musik
Künstler.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Wiedergabe-URI
Optional
Der Deeplink, über den die Titel des Künstlers beim Anbieter wiedergegeben werden
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Letzte Interaktion
Optional
Empfohlen für Elemente im Fortsetzungscluster. Kann verwendet werden für
Ranking.
In Epochenmillisekunden
MusicTrackEntity
Das MusicTrackEntity-Objekt steht für einen Musiktitel, zum Beispiel Yellow by
Coldplay.
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Titel des Musiktitels
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Weitere Informationen finden Sie unter
Bildspezifikationen.
Wiedergabe-URI
Erforderlich
Ein Deeplink, der die Wiedergabe des Musiktitels beim Anbieter startet
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
URI der Informationsseite
Optional
Ein Deeplink zur Anbieter-App mit Details zum Musiktitel
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Dauer
Optional
Die Dauer des Titels in Millisekunden.
Album
Optional
Der Name des Albums, zu dem der Song gehört
Künstler
Erforderlich
Liste der Künstler für den Musiktitel
Auf Gerät heruntergeladen
Optional
Boolescher Wert, der angibt, ob der Musiktitel auf das Gerät heruntergeladen wurde.
Explizit
Optional
Ein boolescher Wert, der angibt, ob der Inhalt explizit ist oder nicht
Inhalte mit expliziten Inhalten oder Inhalten, für die ein elterlicher Hinweis vorliegt
Warnung sollte auf TRUE gesetzt werden. Anstößige Inhalte werden mit einem „E“ angezeigt Tag.
Letzte Interaktion
Optional
Empfohlen für Elemente im Fortsetzungscluster. Kann verwendet werden für
Ranking.
In Epochenmillisekunden
Fortschritt in Prozent abgeschlossen
Optional
Empfohlen für Elemente im Fortsetzungscluster.
Ganzzahl zwischen 0 und 100
MusicVideoEntity
Das MusicVideoEntity-Objekt steht für ein Musikvideo, z. B.
The Weeknd – Take My Breath (offizielles Musikvideo)).
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Titel des Musikvideos.
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Weitere Informationen finden Sie unter
Bildspezifikationen.
Wiedergabe-URI
Erforderlich
Ein Deeplink, über den das Musikvideo beim Anbieter wiedergegeben wird
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
URI der Informationsseite
Optional
Ein Deeplink zur Anbieter-App mit Details zum Musikvideo
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Dauer
Optional
Die Dauer des Videos in Millisekunden.
Anzahl der Aufrufe
Optional
Die Anzahl der Aufrufe des Videos im Freitextformat.
Künstler
Optional
Liste der Künstler des Musikvideos.
Altersfreigabe
Optional
Liste der Altersfreigaben des Titels.
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Auf Gerät heruntergeladen
Optional
Boolescher Wert, der angibt, ob das Musikvideo auf das Gerät heruntergeladen wurde.
Explizit
Optional
Ein boolescher Wert, der angibt, ob der Inhalt explizit ist oder nicht
Inhalte mit expliziten Inhalten oder Inhalten, für die ein elterlicher Hinweis vorliegt
Warnung sollte auf TRUE gesetzt werden. Anstößige Inhalte werden mit einem „E“ angezeigt Tag.
Letzte Interaktion
Optional
Empfohlen für Elemente im Fortsetzungscluster. Kann verwendet werden für
Ranking.
In Epochenmillisekunden
Fortschritt in Prozent abgeschlossen
Optional
Empfohlen für Elemente im Fortsetzungscluster.
Ganzzahl zwischen 0 und 100
PlaylistEntity
Das PlaylistEntity-Objekt steht für eine Musikplaylist, z. B. das
10 Playlist).
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Titel der Playlist.
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Weitere Informationen finden Sie unter
Bildspezifikationen.
Wiedergabe-URI
Erforderlich
Ein Deeplink, der die Wiedergabe der Musikplaylist beim Anbieter startet
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
URI der Informationsseite
Optional
Ein Deeplink zur Anbieter-App für Details zur Musikplaylist.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Dauer
Optional
Die Dauer der Playlist in Millisekunden.
Anzahl der Titel
Optional
Die Anzahl der Titel in der Musikplaylist.
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Auf Gerät heruntergeladen
Optional
Boolescher Wert, der angibt, ob die Playlist auf das Gerät heruntergeladen wurde.
Explizit
Optional
Ein boolescher Wert, der angibt, ob der Inhalt explizit ist oder nicht
Inhalte mit expliziten Inhalten oder Inhalten, für die ein elterlicher Hinweis vorliegt
Warnung sollte auf TRUE gesetzt werden. Anstößige Inhalte werden mit einem „E“ angezeigt Tag.
Letzte Interaktion
Optional
Empfohlen für Elemente im Fortsetzungscluster. Kann verwendet werden für
Ranking.
In Epochenmillisekunden
Fortschritt in Prozent abgeschlossen
Optional
Empfohlen für Elemente im Fortsetzungscluster.
Ganzzahl zwischen 0 und 100
PodcastSeriesEntity
Das PodcastSeriesEntity-Objekt steht für eine Podcast-Serie, z. B. Dieses
American Life).
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Titel der Podcast-Serie.
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Weitere Informationen finden Sie unter
Bildspezifikationen.
URI der Informationsseite
Erforderlich
Einen Deeplink zur Anbieter-App mit Details zum Podcast
.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Wiedergabe-URI
Optional
Ein Deeplink, über den die Wiedergabe der Podcast-Serie in der Anbieter-App gestartet wird.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Anzahl der Folgen
Optional
Die Anzahl der Folgen der Podcast-Serie.
Produktionsname
Optional
Der Name der Produktion der Podcast-Serie.
Hosts
Optional
Liste der Moderatoren der Podcast-Serie.
Genres
Optional
Liste der Genres der Podcast-Serie.
Auf Gerät heruntergeladen
Optional
Boolescher Wert, der angibt, ob der Podcast auf das Gerät heruntergeladen wird.
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Explizit
Optional
Ein boolescher Wert, der angibt, ob der Inhalt explizit ist oder nicht
Inhalte mit expliziten Inhalten oder Inhalten, für die ein elterlicher Hinweis vorliegt
Warnung sollte auf TRUE gesetzt werden. Anstößige Inhalte werden mit einem „E“ angezeigt Tag.
Letzte Interaktion
Optional
Empfohlen für Elemente im Fortsetzungscluster. Kann verwendet werden für
Ranking.
In Epochenmillisekunden
PodcastEpisodeEntity
Das PodcastEpisodeEntity-Objekt steht für eine Podcast-Serie, z. B.
Spark Bird, Folge 754: This American Life).
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Titel der Podcastfolge.
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Weitere Informationen finden Sie unter
Bildspezifikationen.
Wiedergabe-URI
Erforderlich
Ein Deeplink, über den die Podcastfolge beim Anbieter abgespielt wird
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Titel der Produktionsreihe
Erforderlich
Der Name der Podcast-Serie, zu der die Folge gehört.
Dauer
Erforderlich
Die Dauer der Podcastfolge in Millisekunden.
Publish Date
Erforderlich
Veröffentlichungsdatum des Podcasts (in Millisekunden der Epoche)
URI der Informationsseite
Optional
Ein Deeplink zur Anbieter-App mit Details zur Podcastfolge.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Produktionsname
Optional
Der Name der Produktion der Podcast-Serie.
Folgenindex
Optional
Der Index der Folge in der Serie (erster Index ist 1).
Hosts
Optional
Liste der Moderatoren der Podcastfolge.
Genres
Optional
Liste der Genres der Podcastfolge.
Auf Gerät heruntergeladen
Optional
Boolescher Wert, der angibt, ob die Podcastfolge auf das Gerät heruntergeladen wird.
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Video-Podcast
Optional
Boolescher Wert, der angibt, ob die Podcast-Folge Videoinhalte enthält
Explizit
Optional
Ein boolescher Wert, der angibt, ob der Inhalt explizit ist oder nicht
Inhalte mit expliziten Inhalten oder Inhalten, für die ein elterlicher Hinweis vorliegt
Warnung sollte auf TRUE gesetzt werden. Anstößige Inhalte werden mit einem „E“ angezeigt Tag.
Typ „Nächstes anhören“
Optional
Empfohlen für Elemente im Fortsetzungscluster
TYPE_WEITER: Bei einem noch nicht fertig gestellten Audioelement wird die Wiedergabe fortgesetzt.
TYPE_NEXT – Fahre mit einem neuen Element einer Reihe fort.
TYPE_NEW – neu veröffentlicht.
Letzte Interaktion
Optional
Empfohlen für Elemente im Fortsetzungscluster. Kann verwendet werden für
Ranking.
In Epochenmillisekunden
Fortschritt in Prozent abgeschlossen
Optional
Empfohlen für Elemente im Fortsetzungscluster.
Ganzzahl zwischen 0 und 100
LiveRadioStationEntity
Das Objekt LiveRadioStationEntity steht für einen Live-Radiosender (für
Beispiel: 98.1 Die Brise).
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Titel des Live-Radiosenders.
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Weitere Informationen finden Sie unter
Bildspezifikationen.
Wiedergabe-URI
Erforderlich
Ein Deeplink, über den der Radiosender beim Anbieter wiedergegeben wird
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
URI der Informationsseite
Optional
Ein Deeplink zur Anbieter-App mit Details zum Radiosender
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Häufigkeit
Optional
Die Frequenz, mit der der Radiosender gesendet wird (z. B.
„98.1 FM“).
Titel der Serie
Optional
Die aktuelle Sendung, die im Radiosender gespielt wird.
Hosts
Optional
Liste der Hosts des Radiosenders
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Letzte Interaktion
Optional
Empfohlen für Elemente im Fortsetzungscluster. Kann verwendet werden für
Ranking.
In Epochenmillisekunden
AudiobookEntity
Das AudiobookEntity-Objekt steht für ein Hörbuch, z. B. das Hörbuch
von Becoming von Michelle Obama).
Attribut
Anforderungen
Hinweise
Name
Erforderlich
Posterbilder
Erforderlich
Es muss mindestens ein Bild zur Verfügung gestellt werden. Siehe Bild
Die Spezifikationen findest du in der Hilfe.
Autor
Erforderlich
Es muss mindestens ein Autorenname angegeben werden.
Narrator
Erforderlich
Es muss mindestens ein Sprechername angegeben werden.
Aktionslink-URI
Erforderlich
Der Deeplink zur Anbieter-App für das Hörbuch.
Hinweis: Für die Attribution können Sie Deeplinks verwenden.
<ph type="x-smartling-placeholder"></ph>
Weitere Informationen
Veröffentlichungsdatum
Optional
In Epochenmillisekunden, falls angegeben.
Beschreibung
Optional
Darf 200 Zeichen nicht überschreiten, falls angegeben.
Preis
Optional
Freier Text
Dauer
Optional
Muss ein positiver Wert sein, falls angegeben.
Genre
Optional
Liste der zu dem Buch gehörenden Genres.
Name der Reihe
Optional
Der Name der Reihe, zu der das Hörbuch gehört, z. B. Harry
Töpfer.
Index der Buchreihe
Optional
Der Index des Hörbuchs der Reihe, wobei „1“ das erste Hörbuch ist
in der Reihe. Wenn zum Beispiel Harry Potter und der Gefangene
Askaban ist das 3. Buch in der Reihe. Legen Sie die Zahl „3“ fest.
Buchtyp fortsetzen
Optional
TYPE_WEITER: Mit einem noch nicht fertigen Buch fortfahren.
TYPE_NEXT – mit einem neuen Titel einer Serie fortfahren
TYPE_NEW – neu veröffentlicht.
Zeitpunkt der letzten Interaktion
Bedingt erforderlich
Muss angegeben werden, wenn sich das Element im Continuation-Cluster befindet.
In Epochenmillisekunden.
Fortschrittsintervall (in Prozent)
Bedingt erforderlich
Muss angegeben werden, wenn sich das Element im Continuation-Cluster befindet.
Neu erworbene Hörbücher können Teil des Weiterlesens werden.
Cluster.
Der Wert muss größer als 0 und kleiner als 100 sein.
DisplayTimeWindow - Zeitfenster für einen Inhalt festlegen
sichtbar zu sein.
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.
In Epochenmillisekunden.
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.
In Epochenmillisekunden.
Bildspezifikationen
Im Folgenden finden Sie die erforderlichen Spezifikationen für Bild-Assets:
Seitenverhältnis
Anforderungen
Mindestanzahl Pixel
Empfohlene Pixel
Quadrat (1 × 1)
Erforderlich
300 × 300
1200 × 1200
Querformat (1,91 x 1)
Optional
600 × 314
1200 × 628
Hochformat (4:5)
Optional
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.
Beispiele
MusicAlbumEntity musicAlbumEntity =
new MusicAlbumEntity.Builder()
.setName(NAME)
.addPosterImage(new Image.Builder()
.setImageUri(Uri.parse("http://www.x.com/image.png"))
.setImageHeightInPixel(960)
.setImageWidthInPixel(408)
.build())
.setPlayBackUri("https://play.google/album/play")
.setInfoPageUri("https://play.google/album/info")
.setDescription("A description of this album.")
.addArtist("Artist")
.addGenre("Genre")
.addMusicLabel("Label")
.addContentRating("Rating")
.setSongsCount(960)
.setReleaseDateEpochMillis(1633032895L)
.setDurationMillis(1633L)
.build();
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. Folge ich
APIs sind im Client verfügbar:
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.
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 empfängt, 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.
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. 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 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
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.PUBLISH_CONTINUATION
Es wird empfohlen, bei einem eingehenden Anruf einen publishContinuationCluster-Anruf zu starten.
für diesen Intent.
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, Ihre Empfehlung, Angesagt und Fortsetzung
Cluster werden veröffentlicht und sind für Nutzer sichtbar.
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"
}]