Engage SDK Food: Üçü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 yiyeceklerini 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 beş küme türünü içerir: Öneri, Öne Çıkan, Yiyecek Alışveriş Sepeti, Yiyecek Alışveriş Listesi ve Yeniden Sırala.

  • Öneri kümeleri, bağımsız geliştirici iş ortağı olarak kabul edilir. Bu öneriler, veya genel (örneğin, indirimde yeni olan) Tarifleri, içerikleri göstermek ve restoranlar, marketler, marketler vb.

    • Öneri kümesi; ProductEntity, StoreEntity veya RecipeEntity giriş, ancak farklı tüzel kişilik türleri karışık olmaması.
    Şekil : "ProductEntity", "StoreEntity" ve "RecipeEntity". (*Kullanıcı arayüzü yalnızca örnek vermek amacıyla verilmiştir)
  • Öne Çıkanlar kümesi, seçilen kahraman ProductEntity, StoreEntity veya tek kullanıcı arayüzünde birçok geliştirici iş ortağından RecipeEntity gruplandırmadır. Konumların yakınlarında bulunan tek bir Özellik kümesi tüm Öneriler'in üzerinde öncelikli bir yerleşimle, kullanıcı arayüzünün üst kısmında fark edebilirsiniz. Her geliştirici iş ortağının tek bir varlık yayınlamasına izin verilir birçok varlık içeren (potansiyel olarak farklı türler) gösterir.

    Şekil : "RecipeEntity" içeren öne çıkan küme. (*Kullanıcı arayüzü yalnızca örnek vermek amacıyla verilmiştir)
  • Food Shopping Cart kümesi, market alışverişlerine dair ayrıntıları gösteriyor birden fazla geliştirici iş ortağından gelen alışveriş sepetlerini kullanarak tamamlamayı başardı. Tek bir Gıda Alışveriş Sepeti var kümesidir.

    • Yiyecek Alışveriş Sepeti Kümesi, ve kullanıcının sepetindeki X öğenin resimlerini de içerebilir.

      Şekil: Yiyecek Alışveriş Sepeti kümesi tek bir yerden iş ortağı. (*Kullanıcı arayüzü yalnızca örnek vermek amacıyla verilmiştir)
      'nı inceleyin.
  • Gıda Alışveriş Listesi kümesi, market alışverişlerine dair ayrıntıları gösterir birden fazla geliştirici iş ortağından listelerin tek bir kullanıcı arayüzü grubunda gösterilmesi, kullanıcıların listelerini güncellemek ve tamamlamak için ilgili uygulamaya geri dönün. Bir tek bir Yiyecek Alışveriş Listesi kümesi var.

    Şekil: Tek bir noktadan yiyecek Alışveriş Listesi kümesi iş ortağı. (*Kullanıcı arayüzü yalnızca örnek vermek amacıyla verilmiştir)
    'nı inceleyin.
  • Reorder (Yeniden sırala) kümesi, önceki siparişlere ait tek bir kullanıcı arayüzü gruplandırmasında birden çok geliştirici iş ortağı ile, kullanıcıların yeniden sıralamaları istenir. Tek bir Yeniden sıralama kümesi var.

    • Yeniden sıralama kümesi, sipariş ile ilişkilidir ve aşağıdakilerden birini de içermelidir:

      • Kullanıcının bir önceki siparişindeki X öğenin resimleri.
      • Kullanıcının önceki siparişindeki X öğe için etiketler.
    Şekil: Tek bir öğeden yiyecek yeniden sıralama kümesi iş ortağı. (*Kullanıcı arayüzü yalnızca örnek vermek amacıyla verilmiştir)
    '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 çok 25 (ProductEntity, RecipeEntity veya StoreEntity)
Öne Çıkan Küme En fazla 1 En fazla 1 (ProductEntity, RecipeEntity veya StoreEntity)
Yiyecek Alışveriş Sepeti Grubu En fazla 1 En fazla 1 ShoppingCartEntity
Yemek Alışveriş Listesi Kümesi En fazla 1 En fazla 1 ShoppingListEntity
Yiyecek Yeniden Sıralama Kümesi En fazla 1 En fazla 1 ReorderEntity

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 Gıda kategorisi için aşağıdaki varlıklar:

  1. ProductEntity
  2. StoreEntity
  3. RecipeEntity
  4. FoodShoppingCart
  5. FoodShoppingList
  6. FoodReorderCluster

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

ProductEntity

ProductEntity nesnesi, bağımsız bir öğeyi (ör. market) temsil eder. bir ürün, restoran veya tanıtım) gibi şeyler için yayınlayabilirsiniz.

Şekil : ProductEntity Özellikleri

Özellik Şartlar Açıklama Biçim
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Yardım için Resim Özellikleri'ne bakın.
İşlem URI'sı Zorunlu

Uygulamada sizinle ilgili ayrıntıları gösteren sayfanın derin bağlantısı belirler.

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

URI
Başlık İsteğe bağlı Ürünün adı.

Serbest metin

Önerilen metin boyutu: 90 karakterden az ( çok uzunsa üç nokta görüntülenebilir)

Fiyat - geçerli Koşula bağlı olarak gerekli

Ürünün geçerli fiyatı.

Üstü çizili fiyat sağlanmışsa bu değer de belirtilmelidir.

Serbest metin
Fiyat - üstü çizili İsteğe bağlı Tüzel kişinin orijinal fiyatı ( Kullanıcı arayüzü. Serbest metin
Açıklama metni İsteğe bağlı Ürünle ilgili tanıtım, etkinlik veya güncellemeyi öne çıkaran açıklama metni (varsa) kullanılabilir.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Ek bilgi açıklama metni İsteğe bağlı Açıklama metnine ilişkin ayrıntılı metin.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Puan (İsteğe Bağlı) - Not: Tüm puanlar gösterilir .
Puan - Maksimum değer İsteğe bağlı

Derecelendirme ölçeğinin maksimum değeri.

Geçerli puan değeri de şu durumlarda sağlanmalıdır: sağlar.

Sayı >= 0,0
Puan - Geçerli değer İsteğe bağlı

Derecelendirme ölçeğinin mevcut değeri.

Maksimum puan değeri de şu ise sağlanmalıdır: sağlar.

Sayı >= 0,0
Puan - Sayı İsteğe bağlı

Ürün için verilen puan sayısı.

Not: Uygulamanız için bu alanı sağlayın sayımın kullanıcılara nasıl görüntüleneceğini kontrol eder. Kısa ve öz bir dize kullanın. Örneğin, sayı 1.000.000 ise kısaltma kullanabilirsiniz. Örneğin 1 milyon gibi. Böylece daha küçük ekran boyutlarında sayı kısaltılmaz.

Dize
Puan - Sayı Değeri İsteğe bağlı

Ürün için verilen puan sayısı.

Not: Bu alanla ilgili işlem yapmıyorsanız ekran kısaltma mantığını kendiniz çözebilir. Hem Sayım hem de Sayım Değeri varsa kullanıcılara Sayı gösterilir.

Uzun
DisplayTimeWindow (İsteğe bağlı) - Bir zaman aralığı ayarlayın belirli bir süre boyunca
Başlangıç Zaman Damgası İsteğe bağlı

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

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

Milisaniye cinsinden Epoch zaman damgası
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.

Milisaniye cinsinden Epoch zaman damgası

StoreEntity

StoreEntity nesnesi, geliştiricinin iş ortağı olduğu bağımsız bir mağazayı temsil eder yayınlamak istedikleriniz olabilir.

Şekil : StoreEntity Özellikleri

Özellik Şartlar Açıklama Biçim
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Yardım için Resim Özellikleri'ne bakın.
İşlem URI'sı Zorunlu

Uygulamada sizinle ilgili ayrıntıları gösteren sayfanın derin bağlantısı mağaza.

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

URI
Başlık İsteğe bağlı Mağazanın adı.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Konum İsteğe bağlı Mağazanın konumu.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Açıklama metni İsteğe bağlı Mağazayla ilgili tanıtım, etkinlik veya güncellemeyi öne çıkaran açıklama metni (varsa) kullanılabilir.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Ek bilgi açıklama metni İsteğe bağlı Açıklama metnine ilişkin ayrıntılı metin.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Açıklama İsteğe bağlı Mağazayla ilgili açıklama.

Serbest metin

Önerilen metin boyutu: 90 karakterden az ( çok uzunsa üç nokta görüntülenebilir)

Not: Tüm derecelendirmeler standart yıldız derecelendirme sistemi var.
Puan - Maksimum değer İsteğe bağlı

Derecelendirme ölçeğinin maksimum değeri.

Geçerli puan değeri de şu durumlarda sağlanmalıdır: sağlar.

Sayı >= 0,0
Puan - Geçerli değer İsteğe bağlı

Derecelendirme ölçeğinin mevcut değeri.

Maksimum puan değeri de şu ise sağlanmalıdır: sağlar.

Sayı >= 0,0
Puan - Sayı İsteğe bağlı

Mağazaya ait puan sayısı.

Not: Uygulamanız aşağıdaki gibiyse bu alanı sağlayın: ve bunun kullanıcılara nasıl görüntüleneceğini denetleyin. Kısa ve öz bir dize girin. büyük bir kısmıdır. Örneğin, sayı 1.000.000 varsa, 1 milyon gibi kısaltmalar kullanabilirsiniz. daha küçük ekran boyutlarında kısaltılır.

Dize
Puan - Sayı Değeri İsteğe bağlı

Mağazaya ait puan sayısı.

Not: İşlem yapmak istemiyorsanız bu alanı sağlayın. ekran kısaltma mantığını kendiniz çözebilir. Hem Sayım hem de Sayım Değeri kullanıcılara göstermek için Sayı'yı kullanacağız.

Uzun

RecipeEntity

RecipeEntity nesnesi, geliştirici iş ortaklarının istediği bir yemek tarifi öğesini temsil eder tıklayın.

Şekil : RecipeEntity Özellikleri

Özellik Şartlar Açıklama Biçim
Poster resimleri Zorunlu En az bir resim sağlanmalıdır. Yardım için Resim Özellikleri'ne bakın.
İşlem URI'sı Zorunlu

Uygulamada sizinle ilgili ayrıntıları gösteren sayfanın derin bağlantısı yemek tarifi.

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

URI
Başlık İsteğe bağlı Yemek tarifinin adı.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Yazar İsteğe bağlı Yemek tarifinin yazarı.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Pişirme/Hazırlık süresi İsteğe bağlı Tarifin pişme süresi.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Açıklama metni İsteğe bağlı Aşağıdaki durumlarda yemek tarifiyle ilgili tanıtım, etkinlik veya güncellemeyi öne çıkaran açıklama metni kullanılabilir.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Kategori İsteğe bağlı Tarifin kategorisi.

Serbest metin

Önerilen metin boyutu: 45 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Açıklama İsteğe bağlı Yemek tarifinin açıklaması.

Serbest metin

Önerilen metin boyutu: 90 karakterden az ( çok uzunsa üç nokta görüntülenebilir)

Not: Tüm derecelendirmeler standart yıldız derecelendirme sistemi var.
Puan - Maksimum değer İsteğe bağlı

Derecelendirme ölçeğinin maksimum değeri.

Geçerli puan değeri de şu durumlarda sağlanmalıdır: sağlar.

Sayı >= 0,0
Puan - Geçerli değer İsteğe bağlı

Derecelendirme ölçeğinin mevcut değeri.

Maksimum puan değeri de şu ise sağlanmalıdır: sağlar.

Sayı >= 0,0
Puan - Sayı İsteğe bağlı

Yemek tarifine verilen puan sayısı.

Not: Uygulamanız aşağıdaki gibiyse bu alanı sağlayın: ve bunun kullanıcılara nasıl görüntüleneceğini denetleyin. Kısa ve öz bir dize girin. büyük bir kısmıdır. Örneğin, sayı 1.000.000 varsa, 1 milyon gibi kısaltmalar kullanabilirsiniz. daha küçük ekran boyutlarında kısaltılır.

Dize
Puan - Sayı Değeri İsteğe bağlı

Yemek tarifine verilen puan sayısı.

Not: İşlem yapmak istemiyorsanız bu alanı sağlayın. ekran kısaltma mantığını kendiniz çözebilir. Hem Sayım hem de Sayım Değeri varsa kullanıcılara göstermek için Sayı

Uzun

FoodShoppingCart

Şekil: Yiyecek Alışveriş Sepeti küme özellikleri.

Özellik Şartlar Açıklama Biçim
İşlem URI'sı Zorunlu

İş ortağının uygulamasındaki alışveriş sepetinin derin bağlantısı.

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

URI
Ürün sayısı Zorunlu

Alışverişteki öğe sayısı (yalnızca ürün sayısı değil) alışveriş sepeti.

Örneğin: Bir satırda 3 portakal ve 1 elma varsa bu sayı 4'tür.

Tam sayı >= 1
Başlık İsteğe bağlı

Alışveriş sepetinin başlığı (ör. Alışveriş sepetiniz).

Geliştirici herhangi bir başlık sağlamazsa Alışveriş sepetiniz varsayılan değerdir.

Serbest metin

Önerilen metin boyutu: 25 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

İşlem Metni İsteğe bağlı

Alışveriş Sepeti'ndeki düğmenin harekete geçirici mesaj metni (örneğin, Alışveriş Çantanız).

Geliştirici herhangi bir işlem metni sunmazsa Sepeti Görüntüle, varsayılan ayardır.

Bu özellik 1.1.0 ve sonraki sürümlerde desteklenir.

Dize
Alışveriş sepeti resimleri İsteğe bağlı

Alışveriş sepetindeki her ürünün resmi.

Öncelik sırasına göre en fazla 10 resim sağlanabilir; "the" görüntülenen gerçek resim sayısı cihaz formuna bağlıdır faktörü.

Yardım için Resim Özellikleri'ne bakın.
Öğe etiketleri İsteğe bağlı

Alışveriş listesindeki öğelerin etiket listesi.

Görüntülenen gerçek etiket sayısı değişiklik gösterir.

Serbest metin etiketlerinin listesi

Önerilen metin boyutu: 20 karakterden az ( çok uzunsa üç nokta görüntülenebilir)

DisplayTimeWindow (İsteğe bağlı) - Bir zaman aralığı ayarlayın belirli bir süre boyunca
Başlangıç Zaman Damgası İsteğe bağlı

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

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

Milisaniye cinsinden Epoch zaman damgası
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.

Milisaniye cinsinden Epoch zaman damgası

FoodShoppingList

Şekil: Gıda Alışveriş Listesi kümesi.

Özellik Şartlar Açıklama Biçim
İşlem URI'sı Zorunlu

İş ortağının uygulamasındaki alışveriş listesinin derin bağlantısı.

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

URI
Ürün sayısı Zorunlu Alışveriş listesindeki öğelerin sayısı. Tam sayı >= 1
Başlık İsteğe bağlı

Listenin başlığı (örneğin, Alışveriş Listeniz).

Geliştirici herhangi bir başlık sağlamazsa Alışveriş listesi varsayılan değerdir.

Serbest metin

Önerilen metin boyutu: 25 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Öğe etiketleri Zorunlu

Alışveriş listesindeki öğelerin etiket listesi.

En az 1 etiket sağlanmalıdır. En fazla 10 etiket sağlanabilir öncelik sırasına göre sağlanır; görüntülenen gerçek etiket sayısı değişiklik gösterir.

Serbest metin etiketlerinin listesi

Önerilen metin boyutu: 20 karakterden az ( çok uzunsa üç nokta görüntülenebilir)

FoodReorderCluster

Şekil: Gıda yeniden sıralama kümesi.

Özellik Şartlar Açıklama Biçim
İşlem URI'sı Zorunlu

İş ortağının uygulamasında yeniden sipariş vermek için derin bağlantı.

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

URI
İşlem Metni İsteğe bağlı

Yeniden Sırala düğmesindeki düğmenin harekete geçirici mesaj metni (örneğin, Tekrar sipariş verin).

Geliştirici herhangi bir işlem metni sunmazsa Yeniden sırala seçeneği varsayılan ayardır.

Bu özellik 1.1.0 ve sonraki sürümlerde desteklenir.

Dize
Ürün sayısı Zorunlu

Önceki öğedeki öğe sayısı (yalnızca ürün sayısı değil) sipariş.

Örneğin: Yemekte 3 küçük kahve ve 1 kruvasan varsa bu sayı 4 olmalıdır.

Tam sayı >= 1
Başlık Zorunlu Yeniden verilen öğenin başlığı.

Serbest metin

Önerilen metin boyutu: 40 karakterden az ( çok uzunsa üç nokta görüntülenebilir)

Öğe etiketleri

İsteğe bağlı

(Sağlanmamışsa poster resimleri sağlanmalıdır)

Önceki siparişin öğe etiketlerinin listesi.

Öncelik sırasına göre en fazla 10 etiket sağlanabilir; "the" görüntülenen gerçek etiket sayısı cihaz formuna bağlıdır faktörü.

Serbest metin listesi

Etiket başına önerilen metin boyutu: 20 karakterden az (Çok uzun metinde üç nokta gösterilebilir)

Poster resimleri

İsteğe bağlı

(Sağlanmamışsa öğe etiketleri sağlanmalıdır)

Önceki siparişteki öğelerin resimleri.

Öncelik sırasına göre en fazla 10 resim sağlanabilir; "the" görüntülenen gerçek resim sayısı cihaz formuna bağlıdır faktörü.

Yardım için Resim Özellikleri'ne bakın.

Resim özellikleri

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

En boy oranı Minimum piksel sayısı Önerilen piksel sayısı

Kare (1x1)

Tercih edilen

300x300 1.200x1.200
Yatay (1,91x1) 600x314 1.200x628
Dikey (4x5) 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.
  • Resmin ekranda düzgün gösterilebilmesi için şeffaf bir arka plan kullanın. Koyu ve Açık tema ayarları.

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).

AppEngageFoodClient, gıda kümelerini yayınlamaktan sorumludur.

İstemcide küme yayınlamak için aşağıdaki API'lerden yararlanabilirsiniz:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishFoodShoppingCart
  • publishFoodShoppingList
  • publishReorderCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteFoodShoppingCartCluster
  • deleteFoodShoppingListCluster
  • deleteReorderCluster
  • 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 nesnelerinin listesini yayınlamak için kullanılır.

RecommendationCluster nesnesi aşağıdaki özelliklere sahip olabilir:

Özellik Şartlar Açıklama
ProductEntity, StoreEntity veya RecipeEntity listesi Zorunlu Bunun için önerileri oluşturan varlıkların listesi Öneri Kümesi. Tek bir kümedeki varlıklar aynı olmalıdır türü.
Başlık Zorunlu

Öneri Kümesinin başlığı (örneğin, Büyük indirimi).

Önerilen metin boyutu: 25 karakterden kısa ( çok uzunsa üç nokta görüntülenebilir)

Alt başlık İsteğe bağlı Öneri Kümesi alt başlığı.
İşlem URI'sı İsteğe bağlı

İş ortağı uygulamasında kullanıcıların tam listesidir.

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

Kotlin

client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Big savings on Thanksgiving menu")
                        .build())
                .build())

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Big savings on Thanksgiving menu")
                        .build())
                .build());

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

  • Mevcut tüm Öneri Kümesi verileri kaldırılır.
  • İstekten elde edilen veriler ayrıştırılır ve yeni Öneri Kümelerinde depolanır.

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

publishFeaturedCluster

Bu API, FeaturedCluster nesnesi 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.

publishFoodShoppingCart

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

Kotlin

client.publishFoodShoppingCart(
            PublishFoodShoppingCartClusterRequest.Builder()
                .setShoppingCart(
                    FoodShoppingCart.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFoodShoppingCart(
            new PublishFoodShoppingCartClusterRequest.Builder()
                .setShoppingCart(
                    new FoodShoppingCart.Builder()
                        ...
                        .build())
                .build());

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

  • Geliştirici iş ortağındaki mevcut FoodShoppingCart verileri kaldırılır.
  • İstekten elde edilen veriler ayrıştırılır ve güncellenen Alışveriş Sepeti'nde depolanır Küme.

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

publishFoodShoppingList

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

Kotlin

client.publishFoodShoppingList(
            PublishFoodShoppingListRequest.Builder()
                .setFoodShoppingList(
                    FoodShoppingListEntity.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFoodShoppingList(
            new PublishFoodShoppingListRequest.Builder()
                .setFoodShoppingList(
                    new FoodShoppingListEntity.Builder()
                        ...
                        .build())
                .build());

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

  • Geliştirici iş ortağındaki mevcut FoodShoppingList verileri kaldırılır.
  • İstekten elde edilen veriler ayrıştırılır ve güncellenen Alışveriş Listesi'nde depolanır Küme.

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

publishReorderCluster

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

Kotlin

client.publishReorderCluster(
            PublishReorderClusterRequest.Builder()
                .setReorderCluster(
                    FoodReorderCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishReorderCluster(
            new PublishReorderClusterRequest.Builder()
                .setReorderCluster(
                    new FoodReorderCluster.Builder()
                        ...
                        .build())
                .build());

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

  • Geliştirici iş ortağındaki mevcut FoodReorderCluster verileri kaldırılır.
  • İstekten elde edilen veriler ayrıştırılır ve güncellenen Yeniden Sıralama Kümesinde depolanır.

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ığında, 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ığında, mevcut verileri Öne Çıkan Küme. Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum korunur.

deleteFoodShoppingCartCluster

Bu API, Gıda Alışveriş Sepeti Kümesinin içeriğini silmek için kullanılır.

Kotlin

client.deleteFoodShoppingCartCluster()

Java

client.deleteFoodShoppingCartCluster();

Hizmet isteği aldığında, mevcut verileri Yiyecek Alışveriş Sepeti Kümesi. Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum korunur.

deleteFoodShoppingListCluster

Bu API, Gıda Alışveriş Listesi Kümesinin içeriğini silmek için kullanılır.

Kotlin

client.deleteFoodShoppingListCluster()

Java

client.deleteFoodShoppingListCluster();

Hizmet isteği aldığında, mevcut verileri Yemek Alışveriş Listesi Kümesi. Bir hata olması durumunda isteğin tamamı reddedilir ve mevcut durum korunur.

deleteReorderCluster

Bu API, FoodReorderCluster içeriğini silmek için kullanılır.

Kotlin

client.deleteReorderCluster()

Java

client.deleteReorderCluster();

Hizmet isteği aldığında, mevcut verileri Kümeyi Yeniden Sıralayın. 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ığında, 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 içerik yayınlama isteği.

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 İnternet Reklamcılığı Programı, 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 shopping cart cluster publish when PUBLISH_FOOD_SHOPPING_CART
// broadcast is received

// Trigger shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST
// broadcast is received

// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
// received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION));

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED));

// Register Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART));

// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST));

// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER));

}

  • <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.food.PUBLISH_FOOD_SHOPPING_CART" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER" />
      </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.food.PUBLISH_FOOD_SHOPPING_CART. Alırken publishFoodShoppingCart araması başlatmanız önerilir daha iyi olur.
  • com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST. Alırken publishFoodShoppingList araması başlatmanız önerilir daha iyi olur.
  • com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER. Bunu alırken publishReorderCluster araması başlatmanız önerilir isteyebilirsiniz.

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 Çıkan, Alışveriş Sepeti, Alışveriş Listesi ve Yeniden sırala kümeleri yayınlanır ve şu kullanıcılar tarafından görülebilir: yardımcı olur.