Engage SDK Sosial: Petunjuk integrasi teknis pihak ketiga

Google membuat platform di perangkat yang mengatur aplikasi pengguna menurut kategori dan memungkinkan pengalaman imersif baru untuk konsumsi dan penemuan konten aplikasi yang dipersonalisasi. Pengalaman layar penuh ini memberi partner developer kesempatan untuk menampilkan konten lengkap terbaik di saluran khusus di luar aplikasi.

Dokumen ini berisi petunjuk bagi partner developer untuk mengintegrasikan konten sosial mereka menggunakan Engage SDK untuk mengisi area platform baru ini.

Detail integrasi

Bagian berikut menampilkan detail integrasi.

Terminologi

Cluster Rekomendasi menampilkan saran yang dipersonalisasi dari setiap partner developer.

Rekomendasi Anda menggunakan struktur berikut:

Cluster Rekomendasi: Tampilan UI yang berisi kelompok rekomendasi dari partner developer yang sama.

Setiap Cluster Rekomendasi terdiri dari salah satu dari dua jenis entity berikut:

  • PortraitMediaEntity
  • SocialPostEntity

PortraitMediaEntity harus berisi 1 gambar potret untuk postingan. Metadata terkait Profil dan Interaksi bersifat opsional.

  • Postingan

    • Gambar dalam mode potret dan Stempel waktu, atau
    • Gambar dalam mode potret + konten teks dan Stempel waktu
  • Profil

    • Avatar, Nama atau Nama Sebutan Akun, Gambar tambahan
  • Interaksi

    • Hanya jumlah dan label, atau
    • Jumlah dan visual (ikon)

SocialPostEntity berisi metadata terkait profil, postingan, dan interaksi.

  • Profil

    • Avatar, Nama atau Nama Sebutan Akun, teks tambahan, gambar tambahan
  • Postingan

    • Teks dan Stempel Waktu, atau
    • Multimedia (gambar atau URL lengkap) dan Stempel waktu, atau
    • Teks dan multimedia (gambar atau URL lengkap) dan Stempel waktu, atau
    • Pratinjau video (thumbnail dan durasi) dan Stempel waktu
  • Interaksi

    • Hanya jumlah & label, atau
    • Jumlah & visual (ikon)

Persiapan

Level API minimum: 19

Tambahkan library com.google.android.engage:engage-core ke aplikasi Anda:

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

Ringkasan

Desain ini didasarkan pada implementasi layanan terikat.

Data yang dapat dipublikasikan klien tunduk pada batas berikut untuk berbagai jenis cluster:

Jenis cluster Batas cluster Batas entity minimum dalam cluster Batas maksimum entity dalam cluster
Cluster Rekomendasi Maksimal 5 Minimal 5 (PortraitMediaEntity, atau SocialPostEntity) Maksimal 25 (PortraitMediaEntity, atau SocialPostEntity)

Langkah 1: Memberikan data entity

SDK telah menentukan entity yang berbeda untuk mewakili setiap jenis item. SDK mendukung entity berikut untuk kategori Sosial:

  1. PortraitMediaEntity
  2. SocialPostEntity

Diagram di bawah ini menguraikan atribut yang tersedia dan persyaratan untuk setiap jenis.

PortraitMediaEntity

Atribut Persyaratan Deskripsi Format
URI Tindakan Wajib

Deep Link ke entity dalam aplikasi penyedia.

Catatan: Anda dapat menggunakan deep link untuk atribusi. Lihat FAQ ini

URI
Metadata terkait postingan (Wajib)
Gambar Wajib

Gambar harus berada dalam rasio aspek potret.

UI mungkin hanya menampilkan 1 gambar jika beberapa gambar disediakan. Namun, UI dapat memberikan indikasi visual bahwa ada lebih banyak gambar dalam aplikasi.

Jika postingannya adalah video, penyedia harus memberikan thumbnail video yang akan ditampilkan sebagai gambar.

Lihat Spesifikasi Gambar untuk panduan.
Konten teks Opsional Teks utama postingan, update, dll. String (direkomendasikan maksimal 140 karakter)
Stempel waktu Opsional Waktu postingan dipublikasikan. Stempel waktu epoch dalam milidetik
Merupakan konten video Opsional Apakah postingan tersebut berupa video? boolean
Durasi video Opsional Durasi video dalam milidetik. Panjang
Metadata terkait profil (Opsional)
Nama Wajib Nama atau ID profil atau nama sebutan akun, misalnya "Budi Budiman", "@TimPixel" String (disarankan maksimum 25 karakter)
Avatar Wajib

Foto profil atau gambar avatar pengguna.

Gambar persegi 1:1

Lihat Spesifikasi Gambar untuk panduan.
Gambar Tambahan Opsional

Badge profil, misalnya - badge terverifikasi

Gambar persegi 1:1

Lihat Spesifikasi Gambar untuk panduan.
Metadata terkait interaksi (Opsional)
Jumlah Opsional

Tunjukkan jumlah interaksi, misalnya - "3,7 Jt".

Catatan: Jika Count dan Count Value diberikan, Count akan digunakan

String

Ukuran teks yang direkomendasikan: Maksimal 20 karakter untuk jumlah + label yang digabungkan

Nilai Jumlah Opsional

Jumlah interaksi sebagai nilai.

Catatan: Berikan Nilai Jumlah, bukan Jumlah jika aplikasi Anda tidak menangani logika tentang cara jumlah besar harus dioptimalkan untuk berbagai ukuran tampilan. Jika Count dan Count Value diberikan, Count akan digunakan.

Panjang
Label Opsional Tentukan tujuan label interaksi tersebut. Misalnya - "Suka".

String

Ukuran teks yang direkomendasikan: Maksimum 20 karakter untuk jumlah + label yang digabungkan

Visual Opsional

Tentukan tujuan interaksi tersebut. Misalnya - Gambar yang menampilkan ikon Suka, emoji.

Dapat menyediakan lebih dari 1 gambar, meskipun tidak semua gambar dapat ditampilkan di semua faktor bentuk.

Catatan: Harus berupa gambar Persegi 1:1

Lihat Spesifikasi Gambar untuk panduan.
DisplayTimeWindow (Opsional) - Menetapkan periode waktu untuk konten yang akan ditampilkan di platform
Stempel Waktu Awal Opsional

Stempel waktu epoch yang setelahnya konten akan ditampilkan di platform.

Jika tidak disetel, konten akan memenuhi syarat untuk ditampilkan di platform.

Stempel waktu epoch dalam milidetik
Stempel Waktu Akhir Opsional

Stempel waktu epoch yang setelahnya konten tidak lagi ditampilkan di platform.

Jika tidak disetel, konten akan memenuhi syarat untuk ditampilkan di platform.

Stempel waktu epoch dalam milidetik

SocialPostEntity

Atribut Persyaratan Deskripsi Format
URI Tindakan Wajib

Deep Link ke entity dalam aplikasi penyedia.

Catatan: Anda dapat menggunakan deep link untuk atribusi. Lihat FAQ ini

URI

Metadata terkait postingan (Wajib)

Setidaknya salah satu dari TextContent, Gambar, atau WebContent wajib diisi

Gambar Opsional

Gambar harus berada dalam rasio aspek potret.

UI mungkin hanya menampilkan 1 gambar jika beberapa gambar disediakan. Namun, UI dapat memberikan indikasi visual bahwa ada lebih banyak gambar dalam aplikasi.

Jika postingannya adalah video, penyedia harus memberikan thumbnail video yang akan ditampilkan sebagai gambar.

Lihat Spesifikasi Gambar untuk panduan.
Konten teks Opsional Teks utama postingan, update, dll. String (direkomendasikan maksimal 140 karakter)
Konten Video (Opsional)
Durasi Wajib Durasi video dalam milidetik. Panjang
Gambar Wajib Gambar pratinjau konten video. Lihat Spesifikasi Gambar untuk panduan.
Pratinjau Link (Opsional)
Pratinjau Link - Judul Wajib Teks untuk menunjukkan judul konten halaman String
Pratinjau Link - Nama Host Wajib Teks untuk menunjukkan pemilik halaman, misalnya "INSIDER" String
Pratinjau Link - Gambar Opsional Banner besar untuk konten web Lihat Spesifikasi Gambar untuk panduan.
Stempel waktu Opsional Waktu postingan dipublikasikan. Stempel waktu epoch dalam milidetik
Metadata terkait profil (Opsional)
Nama Wajib Nama atau ID profil atau nama sebutan akun, misalnya "Budi Budiman", "@TimPixel." String (disarankan maksimum 25 karakter)
Teks Tambahan Opsional

Dapat digunakan sebagai ID profil atau nama sebutan akun atau metadata tambahan

Misalnya "@Budi-Budiman", "5 juta pengikut", "Anda mungkin suka", "Trending", "5 postingan baru"

String (direkomendasikan maksimum 40 karakter)
Avatar Wajib

Foto profil atau gambar avatar pengguna.

Gambar persegi 1:1

Lihat Spesifikasi Gambar untuk panduan.
Gambar Tambahan Opsional

Badge profil, misalnya - badge terverifikasi

Gambar persegi 1:1

Lihat Spesifikasi Gambar untuk panduan.
Metadata terkait interaksi (Opsional)
Jumlah Wajib Tunjukkan jumlah interaksi, misalnya - "3,7 Jt". String (disarankan maksimum 20 karakter untuk jumlah + label yang digabungkan)
Label

Opsional

Jika tidak disediakan, Visual harus diberikan.

Tentukan tujuan interaksi tersebut. Misalnya - "Suka". String (disarankan maksimum 20 karakter untuk jumlah + label yang digabungkan)
Visual

Opsional

Jika tidak diberikan, Label harus diberikan.

Tentukan tujuan interaksi tersebut. Misalnya - Gambar yang menampilkan ikon Suka, emoji.

Dapat menyediakan lebih dari 1 gambar, meskipun tidak semua gambar dapat ditampilkan di semua faktor bentuk.

Gambar persegi 1:1

Lihat Spesifikasi Gambar untuk panduan.
DisplayTimeWindow (Opsional) - Menetapkan periode waktu untuk konten yang akan ditampilkan di platform
Stempel Waktu Awal Opsional

Stempel waktu epoch yang setelahnya konten akan ditampilkan di platform.

Jika tidak disetel, konten akan memenuhi syarat untuk ditampilkan di platform.

Stempel waktu epoch dalam milidetik
Stempel Waktu Akhir Opsional

Stempel waktu epoch yang setelahnya konten tidak lagi ditampilkan di platform.

Jika tidak disetel, konten akan memenuhi syarat untuk ditampilkan di platform.

Stempel waktu epoch dalam milidetik

Spesifikasi gambar

Gambar harus dihosting di CDN publik agar Google dapat mengaksesnya.

Format file

PNG, JPG, GIF statis, WebP

Ukuran file maksimum

5120 KB

Rekomendasi tambahan

  • Area aman gambar: Tempatkan konten penting Anda di 80% bagian tengah gambar.
  • Gunakan latar belakang transparan agar gambar dapat ditampilkan dengan benar di setelan tema Gelap dan Terang.

Langkah 2: Menyediakan data Cluster

Sebaiknya jalankan tugas publikasi konten di latar belakang (misalnya, menggunakan WorkManager) dan dijadwalkan secara berkala atau berbasis peristiwa (misalnya, setiap kali pengguna membuka aplikasi atau saat pengguna baru saja mengikuti akun baru)

AppEngageSocialClient bertanggung jawab untuk memublikasikan cluster sosial.

Ada API berikut untuk memublikasikan cluster di klien:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

API ini digunakan untuk memeriksa apakah layanan tersedia untuk integrasi, dan apakah konten dapat ditampilkan di perangkat atau tidak.

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

API ini digunakan untuk memublikasikan daftar objek RecommendationCluster.

Objek RecommendationCluster dapat memiliki atribut berikut:

Atribut Persyaratan Deskripsi
Daftar SocialPostEntity, atau PortraitMediaEntity Wajib Daftar entity yang membentuk rekomendasi untuk Cluster Rekomendasi ini. Entity dalam satu cluster harus memiliki jenis yang sama.
Judul Wajib

Judul untuk Cluster Rekomendasi (misalnya, Terbaru dari teman Anda).

Ukuran teks yang direkomendasikan: di bawah 25 karakter (Teks yang terlalu panjang dapat menampilkan elipsis)

Subjudul Opsional Subjudul untuk Cluster Rekomendasi.
URI Tindakan Opsional

Deep link ke halaman di aplikasi partner tempat pengguna dapat melihat daftar rekomendasi lengkap.

Catatan: Anda dapat menggunakan deep link untuk atribusi. Lihat FAQ ini

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

Saat layanan menerima permintaan tersebut, tindakan berikut akan terjadi dalam satu transaksi:

  • Semua data Cluster Rekomendasi yang ada akan dihapus.
  • Data dari permintaan akan diuraikan dan disimpan di Cluster Rekomendasi baru.

Jika terjadi error, seluruh permintaan akan ditolak dan status yang ada dipertahankan.

publishUserAccountManagementRequest

API ini digunakan untuk memublikasikan kartu Login. Tindakan login mengarahkan pengguna ke halaman login aplikasi sehingga aplikasi dapat memublikasikan konten (atau memberikan konten yang lebih dipersonalisasi)

Metadata berikut adalah bagian dari Kartu Login -

Atribut Persyaratan Deskripsi
URI Tindakan Wajib Deeplink ke Tindakan (yaitu membuka halaman login aplikasi)
Gambar Opsional - Jika tidak diberikan, Judul harus diberikan

Gambar Ditampilkan pada Kartu

Gambar rasio aspek 16x9 dengan resolusi 1264x712

Judul Opsional - Jika tidak diberikan, Gambar harus diberikan Judul pada Kartu
Teks Tindakan Opsional Teks yang Ditampilkan pada CTA (yaitu Login)
Subjudul Opsional Subjudul Opsional pada Kartu

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

Saat layanan menerima permintaan tersebut, tindakan berikut akan terjadi dalam satu transaksi:

  • Data UserAccountManagementCluster yang ada dari partner developer akan dihapus.
  • Data dari permintaan akan diuraikan dan disimpan di Cluster UserAccountManagementCluster yang diperbarui.

Jika terjadi error, seluruh permintaan akan ditolak dan status yang ada dipertahankan.

updatePublishStatus

Jika untuk alasan bisnis internal apa pun, tidak ada cluster yang dipublikasikan, sebaiknya perbarui status publikasi menggunakan API updatePublishStatus. Hal ini penting karena:

  • Memberikan status dalam semua skenario, bahkan saat konten dipublikasikan (STATUS == PUBLISHED), sangat penting untuk mengisi dasbor yang menggunakan status eksplisit ini untuk menyampaikan kondisi dan metrik integrasi Anda yang lain.
  • Jika tidak ada konten yang dipublikasikan, tetapi status integrasi tidak rusak (STATUS == NOT_PUBLISHED), Google dapat menghindari pemicuan pemberitahuan di dasbor kondisi aplikasi. Fitur ini mengonfirmasi bahwa konten tidak dipublikasikan karena situasi yang diharapkan dari sudut pandang penyedia.
  • Hal ini membantu developer memberikan analisis tentang kapan data dipublikasikan atau tidak.
  • Google dapat menggunakan kode status untuk mendorong pengguna melakukan tindakan tertentu dalam aplikasi sehingga mereka dapat melihat konten aplikasi atau mengatasinya.

Daftar kode status publikasi yang memenuhi syarat adalah:

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

Jika konten tidak dipublikasikan karena pengguna tidak login, Google merekomendasikan untuk memublikasikan Kartu Login. Jika karena alasan apa pun penyedia tidak dapat memublikasikan Kartu Login, sebaiknya panggil API updatePublishStatus dengan kode status NOT_PUBLISHED_REQUIRES_SIGN_IN

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

API ini digunakan untuk menghapus konten Cluster Rekomendasi.

Kotlin

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

Saat menerima permintaan, layanan akan menghapus data yang ada dari Cluster Rekomendasi. Jika terjadi error, seluruh permintaan akan ditolak dan status yang ada dipertahankan.

deleteUserManagementCluster

API ini digunakan untuk menghapus konten Cluster UserAccountManagement.

Kotlin

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

Saat menerima permintaan, layanan akan menghapus data yang ada dari Cluster UserAccountManagement. Jika terjadi error, seluruh permintaan akan ditolak dan status yang ada dipertahankan.

deleteClusters

API ini digunakan untuk menghapus konten jenis cluster tertentu.

Kotlin

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

Java

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

Saat menerima permintaan tersebut, layanan akan menghapus data yang ada dari semua cluster yang cocok dengan jenis cluster yang ditentukan. Klien dapat memilih untuk meneruskan satu atau beberapa jenis cluster. Jika terjadi error, seluruh permintaan akan ditolak dan status yang ada dipertahankan.

Penanganan error

Sangat disarankan untuk memproses hasil tugas dari API publikasi sehingga tindakan lanjutan dapat diambil untuk memulihkan dan mengirim ulang tugas yang berhasil.

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

Error akan ditampilkan sebagai AppEngageException dengan penyebab disertakan sebagai kode error.

Kode error Nama error Catatan
1 SERVICE_NOT_FOUND Layanan tidak tersedia di perangkat yang ditentukan.
2 SERVICE_NOT_AVAILABLE Layanan tersedia di perangkat tertentu, tetapi tidak tersedia pada saat panggilan (misalnya, dinonaktifkan secara eksplisit).
3 SERVICE_CALL_EXECUTION_FAILURE Eksekusi tugas gagal karena masalah threading. Dalam hal ini, tindakan tersebut dapat dicoba lagi.
4 SERVICE_CALL_PERMISSION_DENIED Pemanggil tidak diizinkan untuk melakukan panggilan layanan.
5 SERVICE_CALL_INVALID_ARGUMENT Permintaan berisi data yang tidak valid (misalnya, lebih dari jumlah cluster yang diizinkan).
6 SERVICE_CALL_INTERNAL Terjadi error di sisi layanan.
7 SERVICE_CALL_RESOURCE_EXHAUSTED Panggilan layanan terlalu sering dilakukan.

Langkah 3: Menangani intent siaran

Selain melakukan panggilan API publikasi konten melalui tugas, Anda juga harus menyiapkan BroadcastReceiver untuk menerima permintaan publikasi konten.

Tujuan intent siaran terutama untuk pengaktifan kembali aplikasi dan memaksa sinkronisasi data. Intent siaran tidak didesain untuk dikirim terlalu sering. Intent itu hanya dipicu jika Layanan Engage menyimpulkan bahwa konten mungkin sudah tidak berlaku (misalnya, seminggu yang lalu). Dengan demikian, pengguna menjadi lebih yakin bahwa mereka dapat memiliki pengalaman konten baru meskipun aplikasi tidak dijalankan dalam waktu yang lama.

BroadcastReceiver harus disiapkan dengan dua cara berikut:

  • Daftarkan instance class BroadcastReceiver secara dinamis menggunakan Context.registerReceiver(). Hal ini memungkinkan komunikasi dari aplikasi yang masih aktif dalam memori.
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));

}

  • Deklarasikan penerapan secara statis dengan tag <receiver> di file AndroidManifest.xml Anda. Hal ini memungkinkan aplikasi menerima intent siaran ketika tidak sedang berjalan, dan juga memungkinkan aplikasi untuk memublikasikan konten.
<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>

Intent berikut akan dikirimkan oleh layanan:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION Sebaiknya mulai panggilan publishRecommendationClusters saat menerima intent ini.

Alur kerja integrasi

Untuk panduan langkah demi langkah cara memverifikasi integrasi Anda setelah selesai, lihat Alur kerja integrasi developer untuk Engage.

FAQ

Lihat Pertanyaan Umum tentang Engage SDK untuk mengetahui FAQ.

Kontak

Hubungi engage-developers@google.com jika ada pertanyaan selama proses integrasi. Tim kami akan membalas sesegera mungkin.

Langkah berikutnya

Setelah menyelesaikan integrasi ini, langkah-langkah Anda berikutnya adalah sebagai berikut:

  • Kirim email ke engage-developers@google.com dan lampirkan APK terintegrasi yang siap diuji oleh Google.
  • Google melakukan verifikasi dan peninjauan secara internal untuk memastikan integrasi berfungsi seperti yang diharapkan. Jika diperlukan perubahan, Google akan menghubungi Anda dengan menyertakan detail yang diperlukan.
  • Setelah pengujian selesai dan tidak ada perubahan yang diperlukan, Google akan menghubungi Anda untuk memberi tahu bahwa Anda dapat mulai memublikasikan APK yang diupdate dan terintegrasi ke Play Store.
  • Setelah Google mengonfirmasi bahwa APK yang diupdate telah dipublikasikan ke Play Store, cluster Rekomendasi akan dipublikasikan dan terlihat oleh pengguna.