Die Funktion „Weiter ansehen“ nutzt den Continuation-Cluster, um unfertige Videos und nächste Episoden derselben Staffel aus mehreren Apps in einer Benutzeroberflächengruppe anzuzeigen. Sie können ihre Elemente in diesem Fortsetzungscluster präsentieren. In diesem Leitfaden erfahren Sie, wie Sie das Engage SDK verwenden können, um das Nutzer-Engagement durch die Funktion „Weiter ansehen“ zu steigern.
Vorbereitung
Führen Sie zuerst die folgenden Schritte aus:
Aktualisierung auf Ziel-API 19 oder höher
Fügen Sie Ihrer App die
com.google.android.engage
-Bibliothek hinzu:Für die Integration gibt es separate SDKs: eines für mobile Apps und eines für TV-Apps.
Mobilgerät
dependencies { implementation 'com.google.android.engage:engage-core:1.5.5 }
TV
dependencies { implementation 'com.google.android.engage:engage-tv:1.0.2 }
Stellen Sie die Engage-Dienstumgebung in der Datei
AndroidManifest.xml
auf „production“ ein.Mobilgerät
<meta-data android:name="com.google.android.engage.service.ENV" android:value="PRODUCTION" />
TV
<meta-data android:name="com.google.android.engage.service.ENV" android:value="PRODUCTION" />
Berechtigung für
WRITE_EPG_DATA
für TV-APK hinzufügen<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
Verwenden Sie einen Hintergrunddienst wie
androidx.work
, um das zuverlässige Veröffentlichen von Inhalten zu planen.Damit die Wiedergabe nahtlos fortgesetzt werden kann, müssen Sie Daten zur Funktion „Weiter ansehen“ veröffentlichen, wenn die folgenden Ereignisse eintreten:
- Erste Anmeldung: Wenn sich ein Nutzer zum ersten Mal anmeldet, sollten Sie Daten veröffentlichen, damit sein Wiedergabeverlauf sofort verfügbar ist.
- Profil erstellen oder wechseln (Apps mit mehreren Profilen): Wenn Ihre App mehrere Profile unterstützt, veröffentlichen Sie Daten, wenn ein Nutzer ein Profil erstellt oder wechselt.
- Unterbrechung der Videowiedergabe: Damit Nutzer dort weitermachen können, wo sie aufgehört haben, sollten Sie Daten veröffentlichen, wenn sie ein Video pausieren oder beenden oder wenn die App während der Wiedergabe beendet wird.
- Aktualisierungen des Bereichs „Weiter ansehen“ (falls unterstützt): Wenn ein Nutzer ein Element aus dem Bereich „Weiter ansehen“ entfernt, müssen Sie diese Änderung durch die Veröffentlichung aktualisierter Daten berücksichtigen.
- Video-Abschluss:
- Entferne bei Filmen den fertigen Film aus dem Bereich „Weiter ansehen“. Wenn der Film Teil einer Reihe ist, füge den nächsten Film hinzu, um den Nutzer zu binden.
- Entferne bei Folgen die abgeschlossene Folge und füge die nächste Folge der Serie hinzu, sofern verfügbar, um die Zuschauer zum Weiterschauen zu animieren.
Integration
AccountProfile
Damit Google TV die Funktion „Weiter ansehen“ personalisieren kann, müssen Sie Konto- und Profilinformationen angeben. Verwenden Sie das AccountProfile, um Folgendes anzugeben:
Konto-ID: Eine eindeutige Kennung, die das Konto des Nutzers in Ihrer Anwendung darstellt. Das kann die tatsächliche Konto-ID oder eine entsprechend verschleierte Version sein.
Profil-ID (optional): Wenn Ihre Anwendung mehrere Profile in einem einzelnen Konto unterstützt, geben Sie eine eindeutige Kennung für das jeweilige Nutzerprofil an (wiederum real oder verschleiert).
// If your app only supports account
val accountProfile = AccountProfile.Builder()
.setAccountId("your_users_account_id")
.build()
// If your app supports both account and profile
val accountProfile = AccountProfile.Builder()
.setAccountId("your_users_account_id")
.setProfileId("your_users_profile_id")
.build()
Entitäten erstellen
Im SDK sind verschiedene Entitäten definiert, um die einzelnen Elementtypen darzustellen. Der Cluster „Fortsetzung“ unterstützt die folgenden Einheiten:
Geben Sie die plattformspezifischen URIs und Posterbilder für diese Elemente an.
Erstelle außerdem Wiedergabe-URIs für jede Plattform, z. B. Android TV, Android oder iOS, falls noch nicht geschehen. Wenn ein Nutzer die Wiedergabe auf einer Plattform fortsetzt, verwendet die App einen gezielten Wiedergabe-URI, um die Videoinhalte abzuspielen.
// Required. Set this when you want continue watching entities to show up on
// Google TV
val playbackUriTv = PlatformSpecificUri.Builder()
.setPlatformType(PlatformType.TYPE_ANDROID_TV)
.setActionUri(Uri.parse("https://www.example.com/entity_uri_for_tv"))
.build()
// Required. Set this when you want continue watching entities to show up on
// Google TV Android app, Entertainment Space, Playstore Widget
val playbackUriAndroid = PlatformSpecificUri.Builder()
.setPlatformType(PlatformType.TYPE_ANDROID_MOBILE)
.setActionUri(Uri.parse("https://www.example.com/entity_uri_for_android"))
.build()
// Optional. Set this when you want continue watching entities to show up on
// Google TV iOS app
val playbackUriIos = PlatformSpecificUri.Builder()
.setPlatformType(PlatformType.TYPE_IOS)
.setActionUri(Uri.parse("https://www.example.com/entity_uri_for_ios"))
.build()
val platformSpecificPlaybackUris =
Arrays.asList(playbackUriTv, playbackUriAndroid, playbackUriIos)
Für Posterbilder sind ein URI und Pixelabmessungen (Höhe und Breite) erforderlich. Wenn Sie mehrere Posterbilder bereitstellen, können Sie verschiedene Formfaktoren ansprechen. Achten Sie jedoch darauf, dass alle Bilder ein Seitenverhältnis von 16:9 und eine Mindesthöhe von 200 Pixeln haben, damit die Einheit „Weiter ansehen“ korrekt angezeigt wird, insbesondere im Entertainment Space von Google. Bilder mit einer Höhe von weniger als 200 Pixeln werden möglicherweise nicht angezeigt.
val images = Arrays.asList(
Image.Builder()
.setImageUri(Uri.parse("http://www.example.com/entity_image1.png"))
.setImageHeightInPixel(300)
.setImageWidthInPixel(169)
.build(),
Image.Builder()
.setImageUri(Uri.parse("http://www.example.com/entity_image2.png"))
.setImageHeightInPixel(640)
.setImageWidthInPixel(360)
.build()
// Consider adding other images for different form factors
)
MovieEntity
In diesem Beispiel wird gezeigt, wie Sie ein MovieEntity
-Objekt mit allen erforderlichen Feldern erstellen:
val movieEntity = MovieEntity.Builder()
.setWatchNextType(WatchNextType.TYPE_CONTINUE)
.setName("Movie name")
.addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
.addPosterImages(images)
// Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
.setLastEngagementTimeMillis(1701388800000)
// Suppose the duration is 2 hours, it is 72000000 in milliseconds
.setDurationMills(72000000)
// Suppose last playback offset is 1 hour, 36000000 in milliseconds
.setLastPlayBackPositionTimeMillis(36000000)
.build()
Wenn Sie Details wie Genres und Altersfreigaben angeben, kann Google TV Ihre Inhalte auf dynamischere Weise präsentieren und mit den richtigen Zuschauern in Verbindung bringen.
val genres = Arrays.asList("Action", "Science fiction")
val rating1 = RatingSystem.Builder().setAgencyName("MPAA").setRating("PG-13").build()
val contentRatings = Arrays.asList(rating1)
val movieEntity = MovieEntity.Builder()
...
.addGenres(genres)
.addContentRatings(contentRatings)
.build()
Entitäten bleiben automatisch 60 Tage lang verfügbar, sofern Sie keine kürzere Ablaufzeit angeben. Legen Sie nur dann ein benutzerdefiniertes Ablaufdatum fest, wenn das Element vor diesem Standardzeitraum entfernt werden soll.
// Set the expiration time to be now plus 30 days in milliseconds
val expirationTime = DisplayTimeWindow.Builder()
.setEndTimestampMillis(now().toMillis()+2592000000).build()
val movieEntity = MovieEntity.Builder()
...
.addAvailabilityTimeWindow(expirationTime)
.build()
TVEpisodeEntity
In diesem Beispiel wird gezeigt, wie Sie ein TvEpisodeEntity
mit allen erforderlichen Feldern erstellen:
val tvEpisodeEntity = TvEpisodeEntity.Builder()
.setWatchNextType(WatchNextType.TYPE_CONTINUE)
.setName("Episode name")
.addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
.addPosterImages(images)
// Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
.setLastEngagementTimeMillis(1701388800000)
.setDurationMills(72000000) // 2 hours in milliseconds
// 45 minutes and 15 seconds in milliseconds is 2715000
.setLastPlayBackPositionTimeMillis(2715000)
.setEpisodeNumber("2")
.setSeasonNumber("1")
.setShowTitle("Title of the show")
.build()
Die Folgennummer (z. B. "2"
) und die Staffelnnummer (z. B. "1"
) werden in die richtige Form gebracht, bevor sie auf der Karte „Weiter ansehen“ angezeigt werden. Es muss sich um einen numerischen String handeln. Gib also nicht „e2“, „Folge 2“, „s1“ oder „Staffel 1“ ein.
Wenn eine bestimmte TV-Serie nur eine Staffel hat, legen Sie die Staffelnnummer auf 1 fest.
Damit Zuschauer deine Inhalte auf Google TV leichter finden, solltest du zusätzliche Daten wie Genres, Altersfreigaben und Verfügbarkeitszeiträume angeben. Diese Details können die Anzeige und die Filteroptionen verbessern.
val genres = Arrays.asList("Action", "Science fiction")
val rating1 = RatingSystem.Builder().setAgencyName("MPAA").setRating("PG-13").build()
val contentRatings = Arrays.asList(rating1)
val tvEpisodeEntity = TvEpisodeEntity.Builder()
...
.addGenres(genres)
.addContentRatings(contentRatings)
.setSeasonTitle("Season Title")
.setShowTitle("Show Title")
.build()
VideoClipEntity
Hier ist ein Beispiel für das Erstellen eines VideoClipEntity
mit allen erforderlichen Feldern.
VideoClipEntity
steht für einen von Nutzern erstellten Clip wie ein YouTube-Video.
val videoClipEntity = VideoClipEntity.Builder()
.setPlaybackUri(Uri.parse("https://www.example.com/uri_for_current_platform")
.setWatchNextType(WatchNextType.TYPE_CONTINUE)
.setName("Video clip name")
.addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
.addPosterImages(images)
// Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
.setLastEngagementTimeMillis(1701388800000)
.setDurationMills(600000) //10 minutes in milliseconds
.setLastPlayBackPositionTimeMillis(300000) //5 minutes in milliseconds
.addContentRating(contentRating)
.build()
Optional können Sie den Ersteller, das Erstellerbild, die Erstellungszeit in Millisekunden oder das Verfügbarkeitszeitfenster festlegen .
LiveStreamingVideoEntity
Hier ist ein Beispiel für das Erstellen eines LiveStreamingVideoEntity
mit allen erforderlichen Feldern.
val liveStreamingVideoEntity = LiveStreamingVideoEntity.Builder()
.setPlaybackUri(Uri.parse("https://www.example.com/uri_for_current_platform")
.setWatchNextType(WatchNextType.TYPE_CONTINUE)
.setName("Live streaming name")
.addPlatformSpecificPlaybackUri(platformSpecificPlaybackUris)
.addPosterImages(images)
// Timestamp in millis for sample last engagement time 12/1/2023 00:00:00
.setLastEngagementTimeMillis(1701388800000)
.setDurationMills(72000000) //2 hours in milliseconds
.setLastPlayBackPositionTimeMillis(36000000) //1 hour in milliseconds
.addContentRating(contentRating)
.build()
Optional können Sie die Startzeit, den Sender, das Senderlogo oder das Verfügbarkeitszeitfenster für die Livestreaming-Einheit festlegen.
Ausführliche Informationen zu Attributen und Anforderungen finden Sie in der API-Referenz.
Daten für die Fortsetzungs-Cluster angeben
AppEngagePublishClient
ist für die Veröffentlichung des Continuation-Clusters verantwortlich.
Mit der Methode publishContinuationCluster()
veröffentlichen Sie ein ContinuationCluster
-Objekt.
Verwenden Sie zuerst isServiceAvailable(), um zu prüfen, ob der Dienst für die Integration verfügbar ist.
client.publishContinuationCluster(
PublishContinuationClusterRequest
.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.setAccountProfile(accountProfile)
.addEntity(movieEntity1)
.addEntity(movieEntity2)
.addEntity(tvEpisodeEntity1)
.addEntity(tvEpisodeEntity2)
.setSyncAcrossDevices(true)
.build()
)
.build()
)
Wenn der Dienst die Anfrage empfängt, werden die folgenden Aktionen in einer Transaktion ausgeführt:
- Vorhandene
ContinuationCluster
-Daten des Entwicklerpartners werden entfernt. - Die Daten aus der Anfrage werden geparst und im aktualisierten
ContinuationCluster
gespeichert.
Bei einem Fehler wird die gesamte Anfrage abgelehnt und der vorhandene Status beibehalten.
Die Publish-APIs sind Upsert-APIs. Sie ersetzen die vorhandenen Inhalte. Wenn Sie eine bestimmte Entität im ContinuationCluster aktualisieren müssen, müssen Sie alle Entitäten noch einmal veröffentlichen.
ContinuationCluster-Daten sollten nur für Konten von Erwachsenen bereitgestellt werden. Nur veröffentlichen, wenn das AccountProfile zu einem Erwachsenen gehört.
Geräteübergreifende Synchronisierung
Mit dem Flag SyncAcrossDevices
wird gesteuert, ob die ContinuationCluster
-Daten eines Nutzers auf Geräten wie Fernsehern, Smartphones und Tablets synchronisiert werden. Die geräteübergreifende Synchronisierung ist standardmäßig deaktiviert.
Werte:
- true: ContinuationCluster-Daten werden auf allen Geräten des Nutzers geteilt, um eine nahtlose Wiedergabe zu ermöglichen. Wir empfehlen diese Option dringend, um die beste geräteübergreifende Nutzung zu ermöglichen.
- false: ContinuationCluster-Daten sind auf das aktuelle Gerät beschränkt.
Einwilligung einholen:
Die Media-App muss eine eindeutige Einstellung zum Aktivieren/Deaktivieren der geräteübergreifenden Synchronisierung bieten. Erläutere die Vorteile für den Nutzer und speichere die Nutzereinstellung einmal. Wende sie dann entsprechend in „publishContinuationCluster“ an.
// Example to allow cross device syncing.
client.publishContinuationCluster(
PublishContinuationClusterRequest
.Builder()
.setContinuationCluster(
ContinuationCluster.Builder()
.setAccountProfile(accountProfile)
.setSyncAcrossDevices(true)
.build()
)
.build()
)
Damit Sie die geräteübergreifende Funktion optimal nutzen können, müssen Sie dafür sorgen, dass die App die Einwilligung der Nutzer einholt und SyncAcrossDevices
auf true
festgelegt ist. So können Inhalte nahtlos auf verschiedenen Geräten synchronisiert werden, was zu einer besseren Nutzererfahrung und einer höheren Interaktion führt. Ein Partner, der diese Funktion implementiert hat, verzeichnete beispielsweise einen Anstieg der Klicks auf „Weiter ansehen“ um 40 %, da seine Inhalte auf mehreren Geräten angezeigt wurden.
Daten zur Videoermittlung löschen
Wenn Sie die Daten eines Nutzers vor dem standardmäßigen Aufbewahrungszeitraum von 60 Tagen manuell vom Google TV-Server löschen möchten, verwenden Sie die Methode „client.deleteClusters()“. Nach Erhalt der Anfrage werden alle vorhandenen Daten zur Videoermittlung für das Kontoprofil oder das gesamte Konto gelöscht.
Die DeleteReason
-Enumeration definiert den Grund für das Löschen von Daten.
Mit dem folgenden Code werden die Daten zum Fortsetzen der Wiedergabe beim Abmelden entfernt.
// If the user logs out from your media app, you must make the following call
// to remove continue watching data from the current google TV device,
// otherwise, the continue watching data will persist on the current
// google TV device until 60 days later.
client.deleteClusters(
DeleteClustersRequest.Builder()
.setAccountProfile(AccountProfile())
.setReason(DeleteReason.DELETE_REASON_USER_LOG_OUT)
.setSyncAcrossDevices(true)
.build()
)
Testen
Verwenden Sie die Bestätigungs-App, um zu prüfen, ob die Engage SDK-Integration ordnungsgemäß funktioniert. Diese Android-Anwendung bietet Tools, mit denen Sie Ihre Daten überprüfen und bestätigen können, dass Broadcast-Intents ordnungsgemäß verarbeitet werden.
Nachdem Sie die Publish API aufgerufen haben, prüfen Sie in der Bestätigungs-App, ob Ihre Daten korrekt veröffentlicht werden. Ihr Fortsetzungscluster sollte in der Benutzeroberfläche der App als separate Zeile angezeigt werden.
- Legen Sie Engage Service Flag nur für Nicht-Produktions-Builds in der Android-Manifestdatei Ihrer App fest.
- Installieren und öffnen Sie die Engage Verify App.
- Wenn
isServiceAvailable
false
ist, klicke auf die Schaltfläche „Umschalten“, um die Funktion zu aktivieren. - Geben Sie den Paketnamen Ihrer App ein, um veröffentlichte Daten automatisch aufzurufen, sobald Sie mit der Veröffentlichung beginnen.
- Testen Sie die folgenden Aktionen in Ihrer App:
- Melden Sie sich an.
- Wechseln Sie zwischen Profilen(falls zutreffend).
- Ein Video starten und pausieren oder zur Startseite zurückkehren
- Schließe die App während der Videowiedergabe.
- Entferne ein Element aus der Zeile „Weiter ansehen“ (falls unterstützt).
- Prüfen Sie nach jeder Aktion, ob Ihre App die
publishContinuationClusters
API aufgerufen hat und die Daten in der Bestätigungs-App korrekt angezeigt werden. In der Bestätigungs-App wird für korrekt implementierte Einheiten ein grünes Häkchen mit dem Text „All Good“ (Alles in Ordnung) angezeigt.
Abbildung 1. Erfolgreiche Überprüfung der App Die Überprüfungs-App kennzeichnet alle problematischen Einheiten.
Abbildung 2. Fehler bei der Bestätigungs-App Wenn Sie Probleme mit Entitäten beheben möchten, wählen Sie die Entität in der Bestätigungs-App mit der TV-Fernbedienung aus und klicken Sie darauf. Die spezifischen Probleme werden angezeigt und zur Überprüfung rot hervorgehoben (siehe Beispiel unten).
Abbildung 3: Details zum Fehler bei der Überprüfung der App
REST API
Das Engage SDK bietet eine REST API, um eine einheitliche Funktion „Weiter ansehen“ auf Nicht-Android-Plattformen wie iOS und Roku TV zu ermöglichen. Mit der API können Entwickler den Status „Weiter ansehen“ für Nutzer, die die Funktion aktiviert haben, von Nicht-Android-Plattformen aus aktualisieren.
Voraussetzungen
- Sie müssen zuerst die auf dem Gerät basierende Integration des Engage SDK abschließen.
Durch diesen wichtigen Schritt wird die erforderliche Verknüpfung zwischen der Google-Nutzer-ID und der
AccountProfile
Ihrer App hergestellt. - API-Zugriff und ‑Authentifizierung: Wenn Sie die API in Ihrem Google Cloud-Projekt aufrufen und aktivieren möchten, müssen Sie ein Zulassungsverfahren durchlaufen. Für alle API-Anfragen ist eine Authentifizierung erforderlich.
Zugriff erhalten
Damit Sie in der Google Cloud Console auf die API zugreifen und sie aktivieren können, muss Ihr Konto registriert sein.
- Die Google Workspace-Kundennummer sollte verfügbar sein. Falls nicht, müssen Sie möglicherweise ein Google Workspace-Konto sowie alle Google-Konten einrichten, die Sie zum Aufrufen der API verwenden möchten.
- Richten Sie ein Konto in der Google Cloud Console mit einer E-Mail-Adresse ein, die mit Google Workspace verknüpft ist.
- Neues Projekt erstellen
- Erstellen Sie ein Dienstkonto für die API-Authentifizierung. Nachdem Sie das Dienstkonto erstellt haben, haben Sie zwei Elemente:
- Eine Dienstkonto-ID.
- Eine JSON-Datei mit Ihrem Dienstkontoschlüssel. Bewahren Sie diese Datei sicher auf. Sie benötigen sie später, um Ihren Client bei der API zu authentifizieren.
- Workspace und zugehörige Google-Konten können jetzt REST APIs verwenden. Sobald die Änderung übernommen wurde, werden Sie benachrichtigt, ob die API von Ihren Dienstkonten aufgerufen werden kann.
- Folgen Sie dieser Anleitung, um einen delegierten API-Aufruf vorzubereiten.
Fortsetzungscluster veröffentlichen
Senden Sie eine POST-Anfrage an die publishContinuationCluster
API, um die Video Discovery Data zu veröffentlichen. Verwenden Sie dazu die folgende Syntax.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/publishContinuationCluster
Dabei gilt:
package_name
: Der Paketname des Media-AnbietersaccountId
: Die eindeutige ID für das Konto des Nutzers in Ihrem System. Sie muss mit demaccountId
übereinstimmen, der im On-Device-Pfad verwendet wird.profileId
: Die eindeutige ID für das Profil des Nutzers im Konto in Ihrem System. Sie muss mit der im On-Device-Pfad verwendeten „profileId“ übereinstimmen.
Die URL für das Konto ohne Profil lautet:
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/publishContinuationCluster
Die Nutzlast für die Anfrage wird im Feld entities
dargestellt. entities
stellt eine Liste von Inhaltseinheiten dar, die entweder MovieEntity
oder TVEpisodeEntity
sein können. Dies ist ein erforderliches Feld.
Anfragetext
Field |
Typ |
Erforderlich |
Beschreibung |
Entitäten |
Liste der MediaEntity-Objekte |
Ja |
Liste der Inhaltselemente (max. 5). Nur die fünf wichtigsten werden beibehalten, die restlichen werden gelöscht. Eine leere Liste ist zulässig, um anzugeben, dass der Nutzer alle Elemente angesehen hat. |
Das Feld entities
enthält einzelne movieEntity
und tvEpisodeEntity
.
Field |
Typ |
Erforderlich |
Beschreibung |
movieEntity |
MovieEntity |
Ja |
Ein Objekt, das einen Film im ContinuationCluster darstellt. |
tvEpisodeEntity |
TVEpisodeEntity |
Ja |
Ein Objekt, das eine TV-Folge im ContinuationCluster darstellt. |
Jedes Objekt im Array „entities“ muss einer der verfügbaren MediaEntity-Typen sein, nämlich MovieEntity
und TvEpisodeEntity
, zusammen mit gemeinsamen und typspezifischen Feldern.
Das folgende Code-Snippet zeigt die Nutzlast des Anfragetexts für die publishContinuationCluster
API.
{
"entities": [
{
"movieEntity": {
"watch_next_type": "WATCH_NEXT_TYPE_CONTINUE",
"name": "Movie1",
"platform_specific_playback_uris": [
"https://www.example.com/entity_uri_for_android",
"https://www.example.com/entity_uri_for_iOS"
],
"poster_images": [
"http://www.example.com/movie1_img1.png",
"http://www.example.com/movie1_imag2.png"
],
"last_engagement_time_millis": 864600000,
"duration_millis": 5400000,
"last_play_back_position_time_millis": 3241111
}
},
{
"tvEpisodeEntity": {
"watch_next_type": "WATCH_NEXT_TYPE_CONTINUE",
"name": "TV SERIES EPISODE 1",
"platform_specific_playback_uris": [
"https://www.example.com/entity_uri_for_android",
"https://www.example.com/entity_uri_for_iOS"
],
"poster_images": [
"http://www.example.com/episode1_img1.png",
"http://www.example.com/episode1_imag2.png"
],
"last_engagement_time_millis": 864600000,
"duration_millis": 1800000,
"last_play_back_position_time_millis": 2141231,
"episode_display_number": "1",
"season_number": "1",
"show_title": "title"
}
}
]
}
Daten zur Videoermittlung löschen
Verwenden Sie die clearClusters
API, um die Daten zur Videoermittlung zu entfernen.
Mit der POST-URL können Sie die Entitäten aus den Videodaten zur Ermittlung entfernen.
Wenn Sie die Daten des Fortsetzungsclusters löschen möchten, senden Sie eine POST-Anfrage an die clearClusters
API mit der folgenden Syntax.
https://tvvideodiscovery.googleapis.com/v1/packages/{package_name}/accounts/{account_id}/profiles/{profile_id}/clearClusters
Dabei gilt:
package_name
: Der Paketname des Media-Anbieters.accountId
: Die eindeutige ID für das Konto des Nutzers in Ihrem System. Sie muss mit demaccountId
übereinstimmen, der im On-Device-Pfad verwendet wird.profileId
: Die eindeutige ID für das Profil des Nutzers im Konto in Ihrem System. Sie muss mit der im On-Device-Pfad verwendeten „profileId“ übereinstimmen.
Die Nutzlast für die clearClusters
API enthält nur ein Feld, reason
, das ein DeleteReason
mit dem Grund für das Entfernen von Daten enthält.
{
"reason": "DELETE_REASON_LOSS_OF_CONSENT"
}
Testen
Nachdem Sie Daten erfolgreich gepostet haben, verwenden Sie ein Nutzer-Testkonto, um zu prüfen, ob die erwarteten Inhalte in der Zeile „Weiter ansehen“ auf Ziel-Google-Oberflächen wie Google TV und den mobilen Google TV-Apps für Android und iOS angezeigt werden.
Bei Tests solltest du eine angemessene Verzögerung von einigen Minuten einplanen und die Wiedergabeanforderungen einhalten, z. B. einen Teil eines Films ansehen oder eine Folge zu Ende ansehen. Weitere Informationen finden Sie in den Empfehlungen zu „Als Nächstes ansehen“ für App-Entwickler.