Engage SDK'sı Dinleme: Üçüncü taraf teknik entegrasyon talimatları

Google, cihaz üzerinde kullanıcıların cihazlarını ve sektörlere göre uygulamalar Ayrıca kişiselleştirilmiş uygulama içeriği tüketimi için yeni ve etkileyici bir deneyim sunar. keşfedeceğiz. Bu tam ekran deneyimi, geliştirici iş ortaklarına En iyi zengin içeriklerini YouTube dışındaki özel bir kanalda sergileme fırsatı en iyi yoludur.

Bu kılavuz, geliştirici iş ortaklarının seslerini entegre etmeleri için talimatlar içerir. hem bu yeni yüzey alanını hem de içeriği doldurmak için Engage SDK'sını kullanarak mevcut Google platformlarında

Entegrasyon ayrıntıları

Terminoloji

Bu entegrasyon şu üç küme türünü içerir: Öneri, devamı ve Öne çıkan bölümleri.

  • Öneri kümeleri, okunacak içerik için kişiselleştirilmiş öneriler gösterir Google Analytics 4'te e-posta alırsınız.

    Önerileriniz aşağıdaki yapıya sahiptir:

    • Öneri Kümesi: Bir kullanıcı arayüzü görünümü aynı geliştirici iş ortağından gelen önerilerle ilgilidir.

      Şekil 1. Entertainment Space kullanıcı arayüzünde bir Tek bir iş ortağından Öneri Kümesi.
      'nı inceleyin.
    • Varlık: Kümedeki tek bir öğeyi temsil eden nesne. Varlık Oynatma listesi, sesli kitap, podcast ve daha fazlası olabilir. Daha fazla bilgi için Desteklenen varlık listesinin listesi için varlık verileri bölümü bulunur.

      Şekil 2. Bir single'ın gösterildiği Entertainment Space kullanıcı arayüzü Tek bir iş ortağının Öneri Kümesindeki varlık.
      'nı inceleyin.
  • Devam kümesi, kullanıcıların son zamanlarda etkileşimde bulunduğu ses içeriğini gösterir birden fazla geliştirici iş ortağından gelen verileri gösterir. Her geliştirici iş ortağının aynı ülkede en fazla 10 tüzel kişi yayınlamasına izin verilir Devam kümesi.

    Şekil 3. Entertainment Space kullanıcı arayüzünde bir Birden fazla kaynaktan henüz tamamlanmamış öneriler içeren devam kümesi iş ortaklarına sunulur (şu anda yalnızca bir öneri görünür).
    'nı inceleyin.
  • Öne Çıkanlar kümesi, birden çok kaynaktan seçilen öğeleri gösterir. geliştirici iş ortaklarını tek bir kullanıcı arayüzü gruplandırmasında gösterir. Tek bir tane Öne Çıkan olacak üst kısmına yakın bir yerde, belirli bir öncelik sırasına Tüm Öneri kümelerinin üzerinde görünür. Her geliştirici iş ortağı, Öne Çıkanlar kümesinde en fazla 10 varlık yayınlamasına izin verilir.

    Şekil 4. Öne Çıkanlar'ın gösterildiği Entertainment Space kullanıcı arayüzü birden fazla iş ortağından (yalnızca bir tanesi) öneri şu anda görünür durumda).
    'nı inceleyin.

Ön çalışma

Minimum API düzeyi: 19

com.google.android.engage:engage-core kitaplığını uygulamanıza ekleyin:

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'
}

Özet

Tasarım, hizmet.

Bir müşterinin yayınlayabileceği veriler, farklı için aşağıdaki sınırlara tabidir: küme türleri:

Küme türü Küme sınırları Bir kümedeki maksimum varlık sınırları
Öneri Kümeleri En çok 5 En fazla 50
Devam Kümesi En fazla 1 En fazla 10
Öne Çıkan Küme En fazla 1 En fazla 10

1. adım: Öğe verilerini sağlayın

SDK'da her öğe türünü temsil eden farklı varlıklar tanımlanmıştır. Destek verdiğimiz yerler Listen kategorisi için aşağıdaki varlıklar:

  1. MusicAlbumEntity
  2. MusicArtistEntity
  3. MusicTrackEntity
  4. MusicVideoEntity
  5. PlaylistEntity
  6. PodcastSeriesEntity
  7. PodcastEpisodeEntity
  8. LiveRadioStationEntity
  9. AudiobookEntity

Aşağıdaki grafiklerde, her tür için kullanılabilir özellikler ve gereksinimler özetlenmektedir.

MusicAlbumEntity

MusicAlbumEntity nesnesi, bir müzik albümünü (örneğin, Midnights) temsil eder. hazırlayan: Taylor Swift).

Özellik Şartlar Notlar
Ad Zorunlu Müzik albümünün başlığı.
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Görüntüleyin Yol gösterici bilgiler için Resim Özellikleri.
Bilgi sayfası URI'si Zorunlu

Müzik albümüyle ilgili ayrıntılar için sağlayıcının uygulamasının derin bağlantısı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Sanatçılar Zorunlu Müzik albümündeki sanatçıların listesi.
Oynatma URI'si İsteğe bağlı

Albümü sağlayıcı uygulamasında çalmaya başlayan bir derin bağlantı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Şarkı sayısı İsteğe bağlı Müzik albümündeki şarkıların sayısı.
Türler İsteğe bağlı Müzik albümündeki türlerin listesi.
Albüm Biçimi İsteğe bağlı

ALBÜM (LP ve çift LP dahil)

EP

TEK

Karışık liste

Plak şirketleri İsteğe bağlı Albümle ilişkili müzik etiketlerinin listesi.
Cihaza indirildi İsteğe bağlı Müzik albümünün cihaza indirilip indirilmediğini gösteren boole değeri.
Müstehcen İsteğe bağlı

İçeriğin uygunsuz olup olmadığını gösteren boole değeri

Uygunsuz içerik barındıran veya ebeveyn tavsiyesi olan öğeler uyarı TRUE değerine ayarlanmalıdır. Uygunsuz öğeler "E" ile görünür kapanış etiketinin hemen öncesine yapıştırın.

Yayın tarihi İsteğe bağlı Albümün dönem milisaniye cinsinden yayın tarihi.
Süre İsteğe bağlı Albümün milisaniye cinsinden süresi.
Son etkileşim zamanı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir. Şunlar için kullanılabilir: bahsedeceğim.

Dönem milisaniye cinsinden

İlerleme yüzdesi tamamlandı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir.

0 ile 100 arasında bir tam sayı

MusicArtistEntity

MusicArtistEntity nesnesi bir müzikaristi (örneğin, Adele) temsil eder.

Özellik Şartlar Notlar
Ad Zorunlu Müzik sanatçısının adı.
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Görüntüleyin Yol gösterici bilgiler için Resim Özellikleri.
Bilgi sayfası URI'si Zorunlu

Müzikle ilgili ayrıntılar için sağlayıcı uygulamasının derin bağlantısı sanatçı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Oynatma URI'si İsteğe bağlı

Sanatçının şarkılarını sağlayıcıda çalmaya başlayan derin bağlantı uygulamasını indirin.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Son etkileşim zamanı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir. Şunlar için kullanılabilir: bahsedeceğim.

Dönem milisaniye cinsinden

MusicTrackEntity

MusicTrackEntity nesnesi bir müzik parçasını temsil eder (örneğin, Yellow Coldplay) içerir.

Özellik Şartlar Notlar
Ad Zorunlu Müzik parçasının başlığı.
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Görüntüleyin Yol gösterici bilgiler için Resim Özellikleri.
Oynatma URI'si Zorunlu

Müzik parçasını sağlayıcıda çalmaya başlayan bir derin bağlantı uygulamasını indirin.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Bilgi sayfası URI'si İsteğe bağlı

Müzik parçasıyla ilgili ayrıntılar için sağlayıcı uygulamasının derin bağlantısı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Süre İsteğe bağlı Parçanın milisaniye cinsinden süresi.
Albüm İsteğe bağlı Şarkının ait olduğu albümün adı.
Sanatçılar Zorunlu Müzik parçasına uygun sanatçıların listesi.
Cihaza indirildi İsteğe bağlı Müzik parçasının cihaza indirilip indirilmediğini gösteren boole değeri.
Müstehcen İsteğe bağlı

İçeriğin uygunsuz olup olmadığını gösteren boole değeri

Uygunsuz içerik barındıran veya ebeveyn tavsiyesi olan öğeler uyarı TRUE değerine ayarlanmalıdır. Uygunsuz öğeler "E" ile görünür kapanış etiketinin hemen öncesine yapıştırın.

Son etkileşim zamanı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir. Şunlar için kullanılabilir: bahsedeceğim.

Dönem milisaniye cinsinden

İlerleme yüzdesi tamamlandı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir.

0 ile 100 arasında bir tam sayı

MusicVideoEntity

MusicVideoEntity nesnesi bir müzik videosunu temsil eder (örneğin, The Weeknd - Take My Breath (Resmi Müzik Videosu)).

Özellik Şartlar Notlar
Ad Zorunlu Müzik videosunun başlığı.
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Görüntüleyin Yol gösterici bilgiler için Resim Özellikleri.
Oynatma URI'si Zorunlu

Müzik videosunu sağlayıcıda oynatmaya başlayan bir derin bağlantı uygulamasını indirin.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Bilgi sayfası URI'si İsteğe bağlı

Müzik videosuyla ilgili ayrıntılar için sağlayıcı uygulamasının derin bağlantısı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Süre İsteğe bağlı Videonun milisaniye cinsinden süresi.
Görüntüleme sayısı İsteğe bağlı Videonun serbest metin biçimindeki görüntüleme sayısı.
Sanatçılar İsteğe bağlı Müzik videosunun sanatçılarının listesi.
İçerik derecelendirmesi İsteğe bağlı Parçanın içerik derecelendirmelerinin listesi.
Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Cihaza indirildi İsteğe bağlı Müzik videosunun cihaza indirilip indirilmediğini gösteren boole değeri.
Müstehcen İsteğe bağlı

İçeriğin uygunsuz olup olmadığını gösteren boole değeri

Uygunsuz içerik barındıran veya ebeveyn tavsiyesi olan öğeler uyarı TRUE değerine ayarlanmalıdır. Uygunsuz öğeler "E" ile görünür kapanış etiketinin hemen öncesine yapıştırın.

Son etkileşim zamanı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir. Şunlar için kullanılabilir: bahsedeceğim.

Dönem milisaniye cinsinden

İlerleme yüzdesi tamamlandı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir.

0 ile 100 arasında bir tam sayı

PlaylistEntity

PlaylistEntity nesnesi, bir müzik oynatma listesini (örneğin, US Top) temsil eder 10 Oynatma Listesi).

Özellik Şartlar Notlar
Ad Zorunlu Oynatma listesinin başlığı.
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Görüntüleyin Yol gösterici bilgiler için Resim Özellikleri.
Oynatma URI'si Zorunlu

Müzik şarkı listesini sağlayıcıda çalmaya başlayan bir derin bağlantı uygulamasını indirin.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Bilgi sayfası URI'si İsteğe bağlı

Müzik oynatma listesiyle ilgili ayrıntılar için sağlayıcı uygulamasının derin bağlantısı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Süre İsteğe bağlı Oynatma listesinin milisaniye cinsinden süresi.
Şarkı sayısı İsteğe bağlı Müzik oynatma listesindeki şarkı sayısı.
Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Cihaza indirildi İsteğe bağlı Oynatma listesinin cihaza indirilip indirilmediğini gösteren boole değeri.
Müstehcen İsteğe bağlı

İçeriğin uygunsuz olup olmadığını gösteren boole değeri

Uygunsuz içerik barındıran veya ebeveyn tavsiyesi olan öğeler uyarı TRUE değerine ayarlanmalıdır. Uygunsuz öğeler "E" ile görünür kapanış etiketinin hemen öncesine yapıştırın.

Son etkileşim zamanı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir. Şunlar için kullanılabilir: bahsedeceğim.

Dönem milisaniye cinsinden

İlerleme yüzdesi tamamlandı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir.

0 ile 100 arasında bir tam sayı

PodcastSeriesEntity

PodcastSeriesEntity nesnesi bir podcast serisini temsil eder (örneğin, Bu American Life) tıklayın.

Özellik Şartlar Notlar
Ad Zorunlu Podcast dizisinin başlığı.
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Görüntüleyin Yol gösterici bilgiler için Resim Özellikleri.
Bilgi sayfası URI'si Zorunlu

Podcast hakkında ayrıntılı bilgi için sağlayıcı uygulamasının derin bağlantısı seri.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Oynatma URI'si İsteğe bağlı

Podcast serisini sağlayıcı uygulamasında oynatmaya başlayan bir derin bağlantı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Bölüm sayısı İsteğe bağlı Podcast dizisindeki bölüm sayısı.
Prodüksiyon adı İsteğe bağlı Podcast dizisinin prodüksiyonunun adı.
Barındırıcılar İsteğe bağlı Podcast serisinin sunucularının listesi.
Türler İsteğe bağlı Podcast serisinin türlerinin listesi.
Cihaza indirildi İsteğe bağlı Podcast'in cihaza indirilip indirilmediğini gösteren boole değeri.
Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Müstehcen İsteğe bağlı

İçeriğin uygunsuz olup olmadığını gösteren boole değeri

Uygunsuz içerik barındıran veya ebeveyn tavsiyesi olan öğeler uyarı TRUE değerine ayarlanmalıdır. Uygunsuz öğeler "E" ile görünür kapanış etiketinin hemen öncesine yapıştırın.

Son etkileşim zamanı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir. Şunlar için kullanılabilir: bahsedeceğim.

Dönem milisaniye cinsinden

PodcastEpisodeEntity

PodcastEpisodeEntity nesnesi bir podcast serisini (ör. Spark Bird, Bölüm 754: This American Life).

Özellik Şartlar Notlar
Ad Zorunlu Podcast bölümünün başlığı.
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Görüntüleyin Yol gösterici bilgiler için Resim Özellikleri.
Oynatma URI'si Zorunlu

Sağlayıcıda podcast bölümünü çalmaya başlayan bir derin bağlantı uygulamasını indirin.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Prodüksiyon serisi başlığı Zorunlu Bölümün ait olduğu podcast dizisinin adı.
Süre Zorunlu Podcast bölümünün milisaniye cinsinden süresi.
Yayınlanma Tarihi Zorunlu Podcast'in yayınlanma tarihi (sıfır milisaniye cinsinden)
Bilgi sayfası URI'si İsteğe bağlı

Podcast bölümü hakkındaki ayrıntılar için sağlayıcı uygulamasının derin bağlantısı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Prodüksiyon adı İsteğe bağlı Podcast dizisinin prodüksiyonunun adı.
Bölüm dizini İsteğe bağlı Serideki bölümün dizini (ilk dizin 1'dir).
Barındırıcılar İsteğe bağlı Podcast bölümünü barındıran sunucuların listesi.
Türler İsteğe bağlı Podcast bölümünün türlerinin listesi.
Cihaza indirildi İsteğe bağlı Podcast bölümünün cihaza indirilip indirilmediğini gösteren boole değeri.
Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Video Podcast Aboneliği İsteğe bağlı Podcast bölümünde video içeriği olup olmadığını gösteren boole değeri
Müstehcen İsteğe bağlı

İçeriğin uygunsuz olup olmadığını gösteren boole değeri

Uygunsuz içerik barındıran veya ebeveyn tavsiyesi olan öğeler uyarı TRUE değerine ayarlanmalıdır. Uygunsuz öğeler "E" ile görünür kapanış etiketinin hemen öncesine yapıştırın.

Sıradaki Türü Dinle İsteğe bağlı

Devamlılık Kümesindeki öğeler için önerilir

TYPE_PUBLISHER - Tamamlanmamış ses öğesinden devam ettirilir.

TYPE_NEXT - Bir serinin yenisiyle devam edin.

TYPE_NEW - Yeni yayınlandı.

Son etkileşim zamanı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir. Şunlar için kullanılabilir: bahsedeceğim.

Dönem milisaniye cinsinden

İlerleme yüzdesi tamamlandı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir.

0 ile 100 arasında bir tam sayı

LiveRadioStationEntity

LiveRadioStationEntity nesnesi, canlı bir radyo istasyonunu temsil eder ( örnek, 98.1 The Breeze).

Özellik Şartlar Notlar
Ad Zorunlu Canlı radyo istasyonunun başlığı.
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Görüntüleyin Yol gösterici bilgiler için Resim Özellikleri.
Oynatma URI'si Zorunlu

Sağlayıcıda radyo istasyonunu çalmaya başlayan bir derin bağlantı uygulamasını indirin.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Bilgi sayfası URI'si İsteğe bağlı

Radyo istasyonuyla ilgili ayrıntılar için sağlayıcının uygulamasına yönlendiren derin bağlantı

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Frekans İsteğe bağlı Radyo istasyonunun yayınlanma sıklığı (örneğin, "98.1 FM").
Program adı İsteğe bağlı Radyo istasyonunda çalan geçerli program.
Barındırıcılar İsteğe bağlı Radyo istasyonunun sunucularının listesi.
Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Son etkileşim zamanı İsteğe bağlı

Devam Kümesi'ndeki öğeler için önerilir. Şunlar için kullanılabilir: bahsedeceğim.

Dönem milisaniye cinsinden

AudiobookEntity

AudiobookEntity nesnesi bir sesli kitabı (örneğin, sesli kitap) temsil eder Michelle Obama tarafından Becoming gibi).

Özellik Şartlar Notlar
Ad Zorunlu
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Resmi İnceleyin Teknik özellikler bölümüne bakın.
Yazar Zorunlu En az bir yazar adı sağlanmalıdır.
Anlatıcı Zorunlu En az bir anlatıcının adı sağlanmalıdır.
İşlem bağlantısı URI'si Zorunlu

Sesli kitabın sağlayıcı uygulamasının derin bağlantısı.

Not: İlişkilendirme için derin bağlantıları kullanabilirsiniz. Bu SSS'ye bakın 'nı inceleyin.

Yayınlanma tarihi İsteğe bağlı Sağlanmışsa sıfır cinsinden milisaniye cinsinden.
Açıklama İsteğe bağlı Varsa en fazla 200 karakter uzunluğunda olmalıdır.
Fiyat İsteğe bağlı Serbest metin
Süre İsteğe bağlı Sağlanmışsa pozitif bir değer olmalıdır.
Tür İsteğe bağlı Kitapla ilişkili türlerin listesi.
Dizi adı İsteğe bağlı Sesli kitabın ait olduğu serinin adı (örneğin, Harry) Potter'da bulabilirsiniz.
Seri birim dizini İsteğe bağlı Serideki sesli kitabın dizini (1, ilk sesli kitaptır) ele alacağız. Örneğin, Harry Potter ve Azkaban, serinin 3. kitabıdır ve 3 olarak ayarlanmalıdır.
Kitap türüne devam et İsteğe bağlı

TYPE_PUBLISHER - Tamamlanmamış bir kitapla devam ettir.

TYPE_NEXT - Bir serinin yenisiyle devam edin.

TYPE_NEW - Yeni yayınlandı.

Son Etkileşim Zamanı Koşula bağlı olarak gerekli

Öğe, Devam kümesinde olduğunda sağlanmalıdır.

Dönem milisaniye cinsinden.

İlerleme İlerleme Yüzdesi Koşula bağlı olarak gerekli

Öğe, Devam kümesinde olduğunda sağlanmalıdır.

*Yeni* edinilen sesli kitaplar okumaya devam edebilir. kümesidir.

Değer 0'dan büyük ve 100'den küçük olmalıdır.

DisplayTimeWindow - İçerik için zaman aralığı belirleyin büyük bir kısmı
Başlangıç Zaman Damgası İsteğe bağlı

İçeriğin teşekkür ederiz.

Politika ayarlanmazsa içerik, platformda gösterilmeye uygundur.

Dönem milisaniye cinsinden.

Bitiş Zaman Damgası İsteğe bağlı

İçeriğin artık gösterilmediği dönem zaman damgası sahip olacaksınız.

Politika ayarlanmazsa içerik, platformda gösterilmeye uygundur.

Dönem milisaniye cinsinden.

Resim özellikleri

Resim öğeleri için gerekli özellikler aşağıda listelenmiştir:

En boy oranı Şartlar Minimum piksel sayısı Önerilen piksel sayısı
Kare (1x1) Zorunlu 300x300 1.200x1.200
Yatay (1,91x1) İsteğe bağlı 600x314 1.200x628
Dikey (4x5) İsteğe bağlı 480x600 960 x 1.200

Dosya biçimleri

PNG, JPG, statik GIF, WebP

Maksimum dosya boyutu

5.120 KB

Ek öneriler

  • Resim güvenli alanı: Önemli içeriğinizi yatay ve dikey yönde ortalanmış olarak görüntüsüdür.

Örnekler

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();
AudiobookEntity audiobookEntity =
        new AudiobookEntity.Builder()
            .setName("Becoming")
            .addPosterImage(new Image.Builder()
                 .setImageUri(Uri.parse("http://www.x.com/image.png"))
                 .setImageHeightInPixel(960)
                 .setImageWidthInPixel(408)
                  .build())
            .addAuthor("Michelle Obama")
            .addNarrator("Michelle Obama")
            .setActionLinkUri(
               Uri.parse("https://play.google/audiobooks/1"))
            .setDurationMillis(16335L)
            .setPublishDateEpochMillis(1633032895L)
            .setDescription("An intimate, powerful, and inspiring memoir")
            .setPrice("$16.95")
            .addGenre("biography")
            .build();

2. Adım: Küme verilerini sağlayın

İçerik yayınlama işinin arka planda yürütülmesi önerilir (örneğin, WorkManager kullanarak) düzenlenecek ve düzenli olarak veya etkinlik temelli olarak (örneğin, Kullanıcı uygulamayı açtığında veya kullanıcı sepetine yeni bir ürün eklediğinde).

AppEngagePublishClient, kümeleri yayınlamaktan sorumludur. Takip edilenler İstemcide API'ler kullanılabilir:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

Bu API, hizmetin entegrasyon için uygun olup olmadığını kontrol etmek ve içeriğin cihazda sunulup sunulamayacağını belirler.

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

Bu API, RecommendationCluster nesnelerin listesini yayınlamak için kullanılır.

Kotlin

client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Trending music")
                        .build())
                .build())

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Trending music")
                        .build())
                .build());

Hizmet isteği aldıktan sonra, bir işlem:

  • Geliştirici iş ortağındaki mevcut RecommendationCluster verileri kaldırılır.
  • İstekten elde edilen veriler ayrıştırılır ve güncellenen Öneride depolanır Küme.

Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum elde edilir.

publishFeaturedCluster

Bu API, FeaturedCluster nesnelerin listesini yayınlamak için kullanılır.

Kotlin

client.publishFeaturedCluster(
            PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    FeaturedCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFeaturedCluster(
            new PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    new FeaturedCluster.Builder()
                        ...
                        .build())
                .build());

Hizmet isteği aldıktan sonra, bir işlem:

  • Geliştirici iş ortağındaki mevcut FeaturedCluster verileri kaldırılır.
  • İstekteki veriler ayrıştırılır ve güncellenmiş Öne Çıkan Kümede depolanır.

Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum elde edilir.

publishContinuationCluster

Bu API, ContinuationCluster nesnesi yayınlamak için kullanılır.

Kotlin

client.publishContinuationCluster(
            PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build())

Java

client.publishContinuationCluster(
            PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build())

Hizmet isteği aldıktan sonra, bir işlem:

  • Geliştirici iş ortağındaki mevcut ContinuationCluster verileri kaldırılır.
  • İstekten elde edilen veriler ayrıştırılır ve güncellenmiş Devamlılık'ta depolanır Küme.

Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum elde edilir.

publishUserAccountManagementRequest

Bu API, bir Oturum Açma kartı yayınlamak için kullanılır . Oturum açma işlemi, kullanıcıları şuraya yönlendirir: uygulamanın içerik yayınlayabilmesi (veya daha fazla bilgi sağlayabilmesi için) kişiselleştirilmiş içerik)

Aşağıdaki meta veriler, Oturum Açma Kartının bir parçasıdır:

Özellik Şartlar Açıklama
İşlem URI'sı Zorunlu İşlem için derin bağlantı (ör. uygulamada oturum açma sayfasına gider)
Resim İsteğe bağlı: Sağlanmamışsa başlık belirtilmelidir

Kartta Gösterilen Resim

1264x712 çözünürlüklü, 16x9 en boy oranında resimler

Başlık İsteğe bağlı: Sağlanmamışsa resim sağlanmalıdır Karttaki Başlık
İşlem Metni İsteğe bağlı CTA'da (ör. Oturum Aç) gösterilen metin
Alt başlık İsteğe bağlı Kartta İsteğe Bağlı Alt Başlık

Kotlin

var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              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(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Java

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

Hizmet isteği aldıktan sonra, bir işlem:

  • Geliştirici iş ortağındaki mevcut UserAccountManagementCluster verileri: emin olun.
  • İstekten elde edilen veriler ayrıştırılır ve güncellenen UserAccountManagementCluster Kümesi.

Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum elde edilir.

updatePublishStatus

Şirket içi işle ilgili herhangi bir nedenle kümelerden hiçbiri yayınlanmazsa yayınlama durumunu, updatePublishStatus API'si. Bu önemlidir, çünkü :

  • İçerik yayınlandığında bile tüm senaryolarda durumu bildirmek (STATUS == YAYINLANDI), bunu kullanan gösterge tablolarının doldurulması için açık durumunu kullanarak entegrasyonunuzun durumunu ve diğer metriklerini aktarın.
  • İçerik yayınlanmadıysa ancak entegrasyon durumu bozuk değilse (STATUS == NOT_PUBLISHED) kullanıyorsanız Google, uygulamada uyarıları tetiklemekten kaçınabilir. sağlık kontrol panelleridir. İçeriğin şu nedenden dolayı yayınlanmadığını onaylar: beklenen durumu ifade eder.
  • Geliştiricilerin verilerin ne zaman yayınlandığı ve ne zaman yayınlandığı değil.
  • Google, kullanıcıları belirli işlemleri yapmaya teşvik etmek için uygulama içeriğini görmelerine veya içeriğin üstesinden gelmelerine yardımcı olur.

Uygun yayınlama durum kodlarının listesi şunlardır :

// 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

İçerik, bir kullanıcının giriş yapmaması nedeniyle yayınlanmazsa Google, Oturum Açma kartını yayınlamanızı önerir. Sağlayıcılar herhangi bir nedenle Oturum Açma kartını yayınlayamazsa updatePublishStatus API'sini çağırmanızı öneririz. NOT_PUBLISHED_REQUIRES_SIGN_IN durum koduyla

Kotlin

client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

Java

client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationClusters

Bu API, Öneri Kümelerinin içeriğini silmek için kullanılır.

Kotlin

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

Hizmet isteği aldıktan sonra, mevcut verileri Öneri Kümeleri. Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum korunur.

deleteFeaturedCluster

Bu API, Öne Çıkan Küme'nin içeriğini silmek için kullanılır.

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

Hizmet isteği aldıktan sonra, mevcut verileri Öne Çıkan Küme. Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum korunur.

deleteContinuationCluster

Bu API, Devam Kümesinin içeriğini silmek için kullanılır.

Kotlin

client.deleteContinuationCluster()

Java

client.deleteContinuationCluster();

Hizmet isteği aldıktan sonra, mevcut verileri Devam Kümesi. Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum korunur.

deleteUserManagementCluster

Bu API, UserAccountManagement Kümesinin içeriğini silmek için kullanılır.

Kotlin

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

Hizmet isteği aldıktan sonra, mevcut verileri UserAccountManagement Kümesi. Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum korunur.

deleteClusters

Bu API, belirli bir küme türünün içeriğini silmek için kullanılır.

Kotlin

client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      ...
      .build())

Java

client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                ...
                .build());

Hizmet isteği aldıktan sonra, tüm hizmetlerden mevcut verileri belirtilen küme türleriyle eşleşen kümeler. Müşteriler, tek bir veya daha fazla bulunur. Bir hata olması durumunda, isteğin tamamı reddedilir ve mevcut durumun sürdürülmesini sağlar.

Hata işleme

Örneğin, yayınlanan API'lerin görev sonucunu dinlemeniz önerilir. bir takip eylemi uygulanarak başarılı bir görevi kurtarıp yeniden gönderin.

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

Hata, nedeni bir AppEngageException olarak döndürülür. hata kodu.

Hata kodu Not
SERVICE_NOT_FOUND Hizmet, belirtilen cihazda kullanılamıyor.
SERVICE_NOT_AVAILABLE Hizmet belirtilen cihazda kullanılabilir ancak kullanılamıyor (örneğin, açıkça devre dışı bırakılmışsa).
SERVICE_CALL_EXECUTION_FAILURE Görev yürütülemedi, ileti dizisi sorunları nedeniyle başarısız oldu. Bu durumda, tekrar deneyin.
SERVICE_CALL_PERMISSION_DENIED Arayanın hizmet çağrısı yapmasına izin verilmiyor.
SERVICE_CALL_INVALID_ARGUMENT İstek, geçersiz veri içeriyor (örneğin, izin verilenden daha fazla) küme sayısı) ekleyebilirsiniz.
SERVICE_CALL_INTERNAL Hizmet tarafında bir hata oluştu.
SERVICE_CALL_RESOURCE_EXHAUSTED Hizmet çağrısı çok sık yapılıyor.

3. Adım: Yayın amaçlarını ele alın

Bir iş üzerinden publish Content API çağrıları yapmanın yanı sıra ayarlamak için gereken Almak için BroadcastReceiver bir içerik yayınlama isteğidir.

Amaca dayalı yayınların amacı, temel olarak uygulamanın yeniden etkinleştirilmesi ve verilerin zorunlu kılınmasıdır. senkronize edin. Yayın amaçları çok sık gönderilecek şekilde tasarlanmamıştır. Yalnızca Etkileşim Hizmeti içeriğin eski olabileceğini belirlediğinde ( örneğin bir hafta önce oluşturulmuş olmalıdır). Bu şekilde kullanıcının uygulama yalnızca bir kez çalıştırılmamış olsa bile, uzun süre korunuyor.

BroadcastReceiver aşağıdaki iki şekilde ayarlanmalıdır:

  • BroadcastReceiver sınıfının bir örneğini Context.registerReceiver(). Bu, uygulamalardan iletişim kurulmasını hale getirebilirsiniz.
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));

}
  • <receiver> AndroidManifest.xml dosya Bu, uygulamanın yayın almasına izin verir amaçlarına ulaşmasını sağlar ve ayrıca uygulamanın, uygulama daha iyi olur.
<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
      </intent-filter>
   </receiver>
</application>

Aşağıdaki amaçlar, hizmet:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION. Aşağıdaki durumlarda publishRecommendationClusters araması başlatmanız önerilir: unutmayın.
  • com.google.android.engage.action.PUBLISH_FEATURED. Bunu alırken publishFeaturedCluster araması başlatmanız önerilir isteyebilirsiniz.
  • com.google.android.engage.action.PUBLISH_CONTINUATION. Alırken publishContinuationCluster araması başlatmanız önerilir daha iyi olur.

Entegrasyon iş akışı

İşlem tamamlandıktan sonra entegrasyonunuzu doğrulamayla ilgili adım adım açıklamalı kılavuz için Etkileşim kurma geliştirici entegrasyonu iş akışı

SSS

Etkileşim SDK'sıyla İlgili Sık Sorulan Sorular bölümüne bakın. SSS

İletişim

İletişim varsa engagement-developers@google.com entegrasyon sürecinde herhangi bir sorunuz olursa Ekibimiz en kısa sürede sizinle iletişime yapmasını sağlar.

Sonraki adımlar

Bu entegrasyonu tamamladıktan sonra şu adımları uygulayabilirsiniz:

  • Şu adrese e-posta gönder: Engage-developers@google.com adresini ziyaret edin ve Google tarafından test edilmeye hazır entegre APK'nızdır.
  • Google, web sitenizin alan adının entegrasyonun beklendiği gibi çalıştığından emin olun. Değişiklik gerekirse Google sizinle iletişime geçer e-posta gönderin.
  • Test tamamlandığında ve değişiklik gerekmiyorsa Google, Güncellenmiş ve entegre APK'yı şurada yayınlamaya başlayabileceğinizi bildirir: Play Store'a gidin.
  • Google, güncellenen APK'nızın Play Store, Öneriniz, Öne Çıkanlar ve Devam kümeler yayınlanacak ve kullanıcılar tarafından görülebilecek.