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
veyaRecipeEntity
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) - Öneri kümesi;
Öne Çıkanlar kümesi, seçilen kahraman
ProductEntity
,StoreEntity
veya tek kullanıcı arayüzünde birçok geliştirici iş ortağındanRecipeEntity
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)
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) 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 ç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:
ProductEntity
StoreEntity
RecipeEntity
FoodShoppingCart
FoodShoppingList
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.
![](https://cdn.statically.io/img/developer.android.com/static/images/guide/playcore/engage/food-product-entity.png?hl=tr)
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.
![](https://cdn.statically.io/img/developer.android.com/static/images/guide/playcore/engage/food-store-entity.png?hl=tr)
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.
![](https://cdn.statically.io/img/developer.android.com/static/images/guide/playcore/engage/food-recipe-entity.png?hl=tr)
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
![](https://cdn.statically.io/img/developer.android.com/static/images/guide/playcore/engage/food-shopping-cart-attributes.png?hl=tr)
Ö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
![](https://cdn.statically.io/img/developer.android.com/static/images/guide/playcore/engage/food-shopping-list.png?hl=tr)
Ö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
![](https://cdn.statically.io/img/developer.android.com/static/images/guide/playcore/engage/food-reorder-cluster.png?hl=tr)
Ö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ğiniContext.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 durumlardapublishRecommendationClusters
araması başlatmanız önerilir: unutmayın.com.google.android.engage.action.PUBLISH_FEATURED
. Bunu alırkenpublishFeaturedCluster
araması başlatmanız önerilir isteyebilirsiniz.com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_CART
. AlırkenpublishFoodShoppingCart
araması başlatmanız önerilir daha iyi olur.com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST
. AlırkenpublishFoodShoppingList
araması başlatmanız önerilir daha iyi olur.com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER
. Bunu alırkenpublishReorderCluster
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.