Engage SDK Social: Üçü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 deneyim, geliştirici iş ortaklarının En iyi zengin içeriklerini YouTube dışındaki özel bir kanalda sergileme fırsatı en iyi yoludur.

Bu belge, geliştirici iş ortaklarının Engage SDK'sını kullanarak sosyal medya içeriğini kullanarak yeni bir alan oluşturun.

Entegrasyon ayrıntıları

Aşağıdaki bölümde entegrasyon ayrıntıları açıklanmaktadır.

Terminoloji

Öneri kümeleri, bir kullanıcıdan gelen kişiselleştirilmiş önerileri gösterir. geliştirici iş ortağınız.

Önerileriniz aşağıdaki yapıya göre yapılır:

Öneri Kümesi: Bir öneri grubu içeren kullanıcı arayüzü görünümü aynı geliştirici iş ortağından gelir.

Her Öneri Kümesi, aşağıdaki iki öneri kümesinden varlıklar :

  • DikeyMedyaVarlıkı
  • SosyalYayınÖğesi

PortraitMediaEntity, yayın için 1 dikey resim içermelidir. Profil ve Etkileşimle ilgili meta veriler isteğe bağlıdır.

  • Gönderi

    • Resim dikey modda ve Zaman Damgası'nda veya
    • Dikey modda resim + metin içeriği ve Zaman Damgası
  • Profil

    • Avatar, ad veya herkese açık kullanıcı adı, ek resim
  • Etkileşim

    • Yalnızca sayı ve etiket ya da
    • Sayı ve görsel (simge)

SocialPostEntity; profil, yayın ve etkileşimle ilgili meta verileri içerir.

  • Profil

    • Avatar, ad veya herkese açık kullanıcı adı, ek metin, ek resim
  • Gönderi

    • Metin ve Zaman Damgası veya
    • Rich media (resim veya zengin URL) ve Timestamp veya
    • Metin ve rich media (resim veya zengin URL) ve Zaman Damgası veya
    • Video önizlemesi (küçük resim ve süre) ve Zaman Damgası
  • Etkileşimler

    • Sayı ve etiket veya
    • Sayı ve görsel (simge)

Ö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 minimum varlık sınırları Bir kümedeki maksimum varlık sınırları
Öneri Kümeleri En çok 5 En az 5 (PortraitMediaEntity veya SocialPostEntity) En fazla 25 (PortraitMediaEntity veya SocialPostEntity)

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

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

  1. PortraitMediaEntity
  2. SocialPostEntity

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

PortraitMediaEntity

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

Sağlayıcı uygulamasındaki varlığa derin bağlantı.

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

URI
İlgili meta verileri yayınlayın (zorunlu)
Resimler Zorunlu

Resimler dikey en boy oranında olmalıdır.

Birden fazla resim sağlandığında kullanıcı arayüzünde yalnızca 1 resim gösterilebilir. Ancak, kullanıcı arayüzü, doğru olan sayfada daha fazla görüntü olduğuna dair uygulamasını indirin.

Yayın bir videoysa sağlayıcı, yayının video resim olarak gösterilir.

Yardım için Resim Özellikleri'ne bakın.
Metin içeriği İsteğe bağlı Bir yayının, güncellemenin vb. ana metni Dize (en fazla 140 karakter önerilir)
Zaman damgası İsteğe bağlı Yayının yayınlandığı zaman. Milisaniye cinsinden Epoch zaman damgası
Video içeriği İsteğe bağlı Yayın bir video mu? Boole
Video süresi İsteğe bağlı Videonun milisaniye cinsinden süresi. Uzun
Profille ilgili meta veriler (İsteğe bağlı)
Ad Zorunlu Profil adı veya kimliği ya da herkese açık kullanıcı adı, ör. "Can Doğru", "@TeamPixel" Dize(en fazla 25 karakter önerilir)
Avatar Zorunlu

Kullanıcının profil resmi veya avatar resmi.

Kare 1:1 resim

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

Profil rozeti. örneğin, doğrulama rozeti

Kare 1:1 resim

Yardım için Resim Özellikleri'ne bakın.
Etkileşimlerle ilgili meta veriler (İsteğe bağlı) 'nı inceleyin.
Sayı İsteğe bağlı

Etkileşimlerin sayısını belirtin (ör. "3, 7 M.").

Not: Hem Sayı hem de Sayı Değeri sağlanırsa Adet kullanılacak

Dize

Önerilen metin boyutu: Sayı + etiket için maksimum 20 karakter birleşik

Sayı Değeri İsteğe bağlı

Değer olarak etkileşimlerin sayısı.

Not: Sayı yerine Sayı Değerini sağlayın uygulamanız, büyük bir sayının ne kadar büyük bir sayı farklı ekran boyutları için optimize edilmelidir. İkisi de Sayıysa ve Sayı Değeri sağlanır, Sayı kullanılır.

Uzun
Etiket İsteğe bağlı Etkileşim etiketinin ne için olduğunu belirtin. Örneğin - "Beğenilenler".

Dize

Önerilen metin boyutu: Sayı + etiket için maksimum 20 karakter birleşik

Görsel İsteğe bağlı

Etkileşimin ne için olduğunu belirtin. Örneğin - Gösterilen resim Beğenme simgesi, emoji.

1'den fazla resim eklenebilir ancak bunların tümü, tüm resimlerde gösterilmeyebilir olabilir.

Not: Kare 1:1 resim olmalıdır.

Yardım için Resim Özellikleri'ne bakın.
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ı

SocialPostEntity

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

Sağlayıcı uygulamasındaki varlığa derin bağlantı.

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

URI

İlgili meta verileri yayınlayın (zorunlu)

TextContent, Image veya WebContent özelliklerinden en az biri gereklidir

Resimler İsteğe bağlı

Resimler dikey en boy oranında olmalıdır.

Birden fazla resim sağlandığında kullanıcı arayüzünde yalnızca 1 resim gösterilebilir. Ancak, kullanıcı arayüzü, doğru olan sayfada daha fazla görüntü olduğuna dair uygulamasını indirin.

Yayın bir videoysa sağlayıcı, yayının video resim olarak gösterilir.

Yardım için Resim Özellikleri'ne bakın.
Metin içeriği İsteğe bağlı Bir yayının, güncellemenin vb. ana metni Dize (en fazla 140 karakter önerilir)
Video İçeriği (İsteğe bağlı)
Süre Zorunlu Videonun milisaniye cinsinden süresi. Uzun
Resim Zorunlu Video içeriğinin önizleme resmi. Yardım için Resim Özellikleri'ne bakın.
Bağlantı Önizleme (İsteğe Bağlı)
Bağlantı Önizlemesi - Başlık Zorunlu Web sayfası içeriğinin başlığını belirten metin Dize
Bağlantı Önizleme - Ana Makine Adı Zorunlu Web sayfası sahibini belirten metin, ör. "INSIDER" Dize
Bağlantı Önizleme - Resim İsteğe bağlı Web içeriği için hero resim Yardım için Resim Özellikleri'ne bakın.
Zaman damgası İsteğe bağlı Yayının yayınlandığı zaman. Milisaniye cinsinden Epoch zaman damgası
Profille ilgili meta veriler (İsteğe bağlı)
Ad Zorunlu Profil adı veya kimliği ya da herkese açık kullanıcı adı. Ör. "Can Doğru", "@TeamPixel". Dize(en fazla 25 karakter önerilir)
Ek Metin İsteğe bağlı

Profil kimliği, herkese açık kullanıcı adı veya ek meta veri olarak kullanılabilir

Örneğin, "@John-Doe", "5 milyon takipçi", "İlginizi çekebilecekler", "Trendler", "5 yeni yayın"

Dize(en fazla 40 karakter önerilir)
Avatar Zorunlu

Kullanıcının profil resmi veya avatar resmi.

Kare 1:1 resim

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

Profil rozeti (ör. doğrulama rozeti)

Kare 1:1 resim

Yardım için Resim Özellikleri'ne bakın.
Etkileşimlerle ilgili meta veriler (İsteğe bağlı) 'nı inceleyin.
Sayı Zorunlu Etkileşimlerin sayısını belirtin (ör. "3, 7 M"). Dize (sayı + etiket toplamı için en fazla 20 karakter önerilir)
Etiket

İsteğe bağlı

Sağlanmamışsa Visual sağlanmalıdır.

Etkileşimin ne için olduğunu belirtin. Örneğin - "Beğenilenler". Dize (sayı + etiket toplamı için en fazla 20 karakter önerilir)
Görsel

İsteğe bağlı

Sağlanmamışsa Etiket sağlanmalıdır.

Etkileşimin ne için olduğunu belirtin. Örneğin, Beğeniler simgesi ve emojinin gösterildiği resim.

1'den fazla resim eklenebilir ancak bunların tümü, tüm resimlerde gösterilmeyebilir olabilir.

Kare 1:1 resim

Yardım için Resim Özellikleri'ne bakın.
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ı

Resim özellikleri

Google'ın erişebilmesi için resimlerin herkese açık CDN'lerde barındırılması gerekir. oluşturabilirsiniz.

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ı yeni bir hesabı takip ettiğinde)

AppEngageSocialClient, sosyal kümeleri yayınlamaktan sorumludur.

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

  • isServiceAvailable
  • publishRecommendationClusters
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • 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
SocialPostEntity veya PortraitMediaEntity 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, En yeni ekleyebilirsiniz).

Ö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'ye bakın 'nı inceleyin.

Kotlin


client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Latest from your friends")
                        .build())
                .build())

Java


client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Latest from your friends")
                        .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.

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.

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_RECOMMENDATION)
      ...
      .build())

Java


client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .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
}

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

}

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

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 entegrasyonun beklendiği gibi çalıştığından emin olun. Değişiklik gerekirse Google sizinle 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 Öneriniz için kümeler yayınlanacak ve şu kullanıcılar tarafından görülebilecek: yardımcı olur.