logoDokumen
Cari

Cara menampilkan pesan tanpa dilipat

Dalam skenario push aplikasi mobile, masalah pesan terlipat secara langsung memengaruhi pengalaman pengguna dan efisiensi pengiriman pesan. Artikel ini, berdasarkan layanan AppPush, menjelaskan secara detail cara menampilkan pesan tanpa lipatan menggunakan tipe Notification dan Custom Message.

Penjelasan tentang masalah pesan terlipat di aplikasi mobile

1. Perbandingan Tipe Pesan dan Aturan Tampilan

Pesan Notifikasi

  • Perilaku Bawaan Sistem:
Status Aplikasi Aturan Tampilan
Latar Depan Dapat mengontrol lipatan menggunakan group_id
Latar Belakang Diatur oleh sistem ponsel; tampil di bar notifikasi dengan opsi kustomisasi terbatas (misal: lipatan, batas jumlah)
  • Kasus Penggunaan: Pesan push standar yang perlu menjangkau pengguna melalui bar notifikasi sistem.

Custom Message

  • Keunggulan Utama:
    Terlepas dari apakah aplikasi berada di latar depan, latar belakang, atau sudah dibersihkan dari memori, kode sisi klien dapat sepenuhnya mengontrol tampilan pesan (misal: posisi pop-up, logika lipatan).

  • Kasus Penggunaan:
    Pesan prioritas tinggi yang membutuhkan interaksi khusus (misal: pembaruan status pesanan, pesan instan).

2. Dua Solusi untuk Mencegah Pesan Terlipat

Solusi 1: Gunakan Pesan Notifikasi

(FCM memerlukan aplikasi di latar depan; EngageLab berfungsi di semua status aplikasi)

Prinsip

Gunakan field group_id untuk mengontrol pengelompokan pesan:

  • Untuk mencegah lipatan: berikan nilai group_id yang unik pada setiap pesan.

Langkah Implementasi

Didukung mulai Android SDK versi V5.0.1 ke atas

Contoh Payload Push API:

{ "notification": { "android": { "group_id": "UNIQUE_GROUP_123" // Nilai unik mencegah lipatan } } }
              
              {
  "notification": {
    "android": {
      "group_id": "UNIQUE_GROUP_123"  // Nilai unik mencegah lipatan
    }
  }
}

            
Tampilkan blok kode ini di jendela mengambang

Catatan Kompatibilitas

  • Hanya mendukung kanal push FCM dan EngageLab.
  • Pesan tetap dapat terpengaruh pembatasan sistem saat aplikasi di latar belakang.

Solusi 2: Gunakan Custom Message (Dukungan Semua Skenario)

Prinsip

Klien secara aktif memanggil API showNotification untuk merender pesan dan melewati pembatasan sistem.

Langkah Implementasi

1. Kirim Custom Message
{ "message": { "msg_content": "Pesanan Anda telah dikirim", "content_type": "text", "extras": { "type": "priority_alert", "style": "popup_bottom" // Gaya tampilan khusus } } }
              
              {
  "message": {
    "msg_content": "Pesanan Anda telah dikirim",
    "content_type": "text",
    "extras": {
      "type": "priority_alert",
      "style": "popup_bottom"  // Gaya tampilan khusus
    }
  }
}

            
Tampilkan blok kode ini di jendela mengambang
2. Klien Menangani Pesan (Contoh Android)
public class UserReceiver extends MTCommonReceiver { @Override public void onCustomMessage(Context context, CustomMessage customMessage) { ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString()); showNotification(context, customMessage); // Memicu tampilan } }
              
              public class UserReceiver extends MTCommonReceiver {
    @Override
    public void onCustomMessage(Context context, CustomMessage customMessage) {
        ExampleLogger.i(TAG, "onCustomMessage:" + customMessage.toString());
        showNotification(context, customMessage); // Memicu tampilan
    }
}

            
Tampilkan blok kode ini di jendela mengambang
3. Logika Tampilan Khusus (Cegah Lipatan)
public void showNotification(Context context, CustomMessage customMessage) { NotificationMessage notificationMessage = new NotificationMessage() .setMessageId(customMessage.getMessageId()) .setNotificationId("ID Anda sendiri; setiap notifikasi harus unik") .setTitle(customMessage.getTitle()) .setContent(customMessage.getContent()) .setgroup_id(customMessage.getMessageId()); // Field kunci untuk mencegah lipatan MTPushPrivatesApi.showNotification(context, notificationMessage); }
              
              public void showNotification(Context context, CustomMessage customMessage) {
    NotificationMessage notificationMessage = new NotificationMessage()
        .setMessageId(customMessage.getMessageId())
        .setNotificationId("ID Anda sendiri; setiap notifikasi harus unik")
        .setTitle(customMessage.getTitle())
        .setContent(customMessage.getContent())
        .setgroup_id(customMessage.getMessageId()); // Field kunci untuk mencegah lipatan

    MTPushPrivatesApi.showNotification(context, notificationMessage);
}

            
Tampilkan blok kode ini di jendela mengambang

Perbandingan Kemampuan

Kemampuan Pesan Notifikasi Custom Message
Dukungan Status App FCM: Hanya latar depan; EngageLab: Semua status Semua skenario (latar depan/belakang)
Fleksibilitas UI Terbatas (tergantung sistem) Sepenuhnya dapat dikustomisasi
Ketergantungan Kanal Perlu kanal khusus (FCM, EngageLab) Tanpa batasan

3. Catatan

  • Kompatibilitas Kanal

    • Fungsi group_id saat ini hanya mendukung kanal FCM dan EngageLab.
  • Optimasi Performa

    • Jika mengirim pesan dengan frekuensi tinggi dan group_id unik, pantau beban cache bar notifikasi (disarankan ≤30 pesan per perangkat per jam).

4. Ringkasan

  • Kebutuhan Sederhana: Sebaiknya gunakan group_id untuk mengontrol lipatan pada pesan Notifikasi — biaya pengembangan rendah.
  • Kebutuhan Kustomisasi Tinggi: Pilih Custom Message — memberi kontrol penuh atas perilaku tampilan melalui logika klien.
  • Strategi Hybrid: Gunakan Custom Message untuk pesan penting (misal: pembayaran berhasil), dan kelola pesan standar melalui group_id.

Dengan memilih strategi yang tepat, Anda dapat meningkatkan visibilitas pesan dan keterlibatan pengguna secara signifikan.

icon
Hubungi Sales