Cara Mencegah Pesan Digabungkan

Dalam skenario push notification aplikasi seluler, penggabungan pesan secara langsung memengaruhi pengalaman pengguna dan efisiensi pengiriman pesan. Berdasarkan produk AppPush, artikel ini menjelaskan secara rinci cara mewujudkan tampilan pesan yang tidak digabungkan melalui konfigurasi teknis, mencakup tipe Notification dan Custom Message.

alt text

1. Perbandingan Tipe Pesan dan Aturan Tampilan

Notification

  • Perilaku default sistem:
App Status Display Rule
Running in foreground Logika penggabungan dapat dikontrol melalui group_id
Running in background Ditangani oleh sistem operasi seluler. Secara default, pesan muncul di bilah notifikasi, dan format tampilannya dibatasi (seperti penggabungan, batas jumlah, dan sebagainya), sehingga sulit untuk menyesuaikan gaya tampilannya.
  • Skenario yang berlaku: Notifikasi push standar yang perlu menjangkau pengguna melalui bilah notifikasi sistem.

Custom Message

  • Keunggulan utama:
    Baik aplikasi berada di foreground, background, maupun telah dibersihkan dengan sekali ketuk, format tampilan pesan dapat dikontrol sepenuhnya melalui kode sisi klien, termasuk posisi popup dan logika penggabungan.

  • Skenario yang berlaku:
    Pesan prioritas tinggi yang memerlukan interaksi yang disesuaikan, seperti pengingat status pesanan dan pesan chat instan.

2. Dua Solusi untuk Mencegah Pesan Digabungkan

Solusi 1: Menggunakan Notification

(Untuk channel FCM, aplikasi harus berada di foreground; channel EngageLab tidak membedakan foreground dan background.)

Prinsip implementasi

Gunakan field group_id untuk mengontrol logika pengelompokan pesan:

  • Tanpa penggabungan: tetapkan group_id yang unik untuk setiap pesan.

Langkah-langkah

Versi yang didukung: Android SDK V5.0.1 atau yang lebih baru

Contoh konfigurasi parameter push API (request body):

{ "notification": { "android": { "group_id": "UNIQUE_GROUP_123" // Gunakan nilai unik untuk mencegah penggabungan } } }
              
              {
  "notification": {
    "android": {
      "group_id": "UNIQUE_GROUP_123"  // Gunakan nilai unik untuk mencegah penggabungan
    }
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Catatan kompatibilitas

  • Hanya channel push FCM dan EngageLab yang didukung.
  • Jika aplikasi berjalan di background, tampilan pesan tetap tunduk pada pembatasan sistem.

Solusi 2: Menggunakan Custom Message (Didukung di Semua Skenario)

Prinsip implementasi

Panggil API showNotification secara aktif di sisi klien untuk mengontrol sepenuhnya logika rendering pesan dan menghindari pembatasan sistem.

Langkah-langkah

1. Kirim custom message
{ "message": { "msg_content": "Your order has been shipped", "content_type": "text", "extras": { "type": "priority_alert", "style": "popup_bottom" // Gaya tampilan kustom } } }
              
              {
  "message": {
    "msg_content": "Your order has been shipped",
    "content_type": "text",
    "extras": {
      "type": "priority_alert",
      "style": "popup_bottom"  // Gaya tampilan kustom
    }
  }
}

            
Tampilkan blok kode ini di jendela mengambang
2. Proses pesan di sisi klien (contoh Android)
public class UserReceiver extends MTCommonReceiver { @Override public void onCustomMessage(Context context, CustomMessage customMessage) { ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString()); showNotification(context, customMessage); // Panggil logika tampilan } }
              
              public class UserReceiver extends MTCommonReceiver {
    @Override
    public void onCustomMessage(Context context, CustomMessage customMessage) {
        ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
        showNotification(context, customMessage); // Panggil logika tampilan
    }
}

            
Tampilkan blok kode ini di jendela mengambang
3. Contoh logika tampilan kustom (untuk mencegah penggabungan)
public void showNotification(Context context, CustomMessage customMessage) { NotificationMessage notificationMessage = new NotificationMessage() .setMessageId(customMessage.getMessageId()) .setNotificationId("Define this yourself, but make sure each notification is different") .setTitle(customMessage.getTitle()) .setContent(customMessage.getContent()) .setgroup_id(customMessage.getMessageId()); // Field kunci untuk mencegah penggabungan MTPushPrivatesApi.showNotification(context, notificationMessage); }
              
              public void showNotification(Context context, CustomMessage customMessage) {
    NotificationMessage notificationMessage = new NotificationMessage()
        .setMessageId(customMessage.getMessageId())
        .setNotificationId("Define this yourself, but make sure each notification is different")
        .setTitle(customMessage.getTitle())
        .setContent(customMessage.getContent())
        .setgroup_id(customMessage.getMessageId()); // Field kunci untuk mencegah penggabungan

    MTPushPrivatesApi.showNotification(context, notificationMessage);
}

            
Tampilkan blok kode ini di jendela mengambang

Perbandingan Keunggulan

Capability Notification Custom Message
Supported app status FCM: hanya foreground; EngageLab: foreground dan background Semua skenario (foreground/background)
Style flexibility Terbatas (bergantung pada sistem) Sepenuhnya dapat disesuaikan
Channel dependency Memerlukan channel tertentu (FCM, EngageLab) Tanpa batasan

3. Catatan

  1. Kompatibilitas channel

    • Fitur group_id saat ini hanya mendukung channel FCM dan EngageLab. Channel lain belum didukung.
  2. Optimasi performa

    • Saat sering mengirim pesan dengan nilai group_id yang independen, pantau tekanan cache bilah notifikasi di sisi sistem (disarankan: ≤30 pesan per perangkat per jam).

4. Ringkasan

  • Kebutuhan ringan: Prioritaskan penggunaan group_id untuk mengontrol logika penggabungan notifikasi, karena biaya pengembangannya lebih rendah.
  • Kebutuhan dengan kustomisasi tinggi: Pilih solusi custom message untuk mewujudkan tampilan yang sepenuhnya dapat dikontrol di semua skenario melalui kode sisi klien.
  • Strategi hibrida: Gunakan custom message untuk notifikasi penting (seperti konfirmasi pembayaran), dan gunakan pengelolaan group_id untuk notifikasi reguler.

Dengan memilih solusi yang sesuai, Anda dapat secara signifikan meningkatkan tingkat pengiriman pesan penting dan pengalaman interaksi pengguna.

Icon Solid Transparent White Qiyu
Hubungi Sales