Pertanyaan Umum
Tentang Penjelasan User Unique Identifier
- Saat inisialisasi, string unik harus diisi untuk menghasilkan UID yang unik. UID ini adalah kode identitas untuk push notification dan tidak terkait dengan perangkat.
- Jika seorang pengguna menggunakan
user_stryang sama, mereka akan dikenali sebagai pengguna yang sama. Berlangganan di browser atau perangkat berbeda akan menggantikan informasi langganan dengan yang terbaru untuk pengiriman pesan. Contohnya, Pengguna A berlangganan denganuser_stryang sama di browser a1, a2, dan a3 secara berurutan. Secara teori, hanya a3 (yang terakhir berlangganan) yang dapat menerima pesan, sehingga mencegah pengguna yang sama menerima pesan ganda dan pengiriman berlebihan. Backend hanya menyimpan informasi langganan terbaru untuk UID yang sama. - Langganan pesan dapat dibatalkan, dan SDK menyediakan antarmuka pembatalan langganan. Antarmuka ini hanya membatalkan hubungan antara UID dan informasi langganan, tidak mengubah izin notifikasi browser.
- Secara teori,
user_strseharusnya satu-satu dengan pengguna sebenarnya. Dalam beberapa kasus, pengguna bisa dalam mode pengunjung. Developer perlu secara eksplisit menghasilkanuser_strunik sesuai kebutuhan. SDK tidak otomatis memproses default untuk menghindari kesalahan jika developer belum menangani hubungan antarauser_strdan pengguna sebenarnya dengan benar, sehingga data statistik tetap akurat.Jika pengguna dalam mode pengunjung, developer dapat menggunakan fungsi berikut untuk menghasilkan
user_strunik. Fungsi ini memakai browser pengguna sebagai kode identitas unik. Namun, metode ini akan membuat pengguna yang sama menghasilkanuser_strbaru jika berganti browser, perangkat, atau membersihkan cache.
Contoh fungsi:function randomUid() { const keyStr = 'mtWebPushRandomUid'; let uid = window.localStorage.getItem(keyStr); if (!uid) { uid = new Date().getTime().toString(36) + Math.floor(Math.random() * 10000000).toString(36); window.localStorage.setItem(keyStr, uid); } return uid; } var user_str = randomUid();function randomUid() { const keyStr = 'mtWebPushRandomUid'; let uid = window.localStorage.getItem(keyStr); if (!uid) { uid = new Date().getTime().toString(36) + Math.floor(Math.random() * 10000000).toString(36); window.localStorage.setItem(keyStr, uid); } return uid; } var user_str = randomUid();Tampilkan blok kode ini di jendela mengambang
Platform Apa Saja yang Mendukung WebPush?
Dukungan Browser Berdasarkan Sistem Operasi
| Browser | Windows PC | macOS | Android | iOS (iPhone, iPad) |
|---|---|---|---|---|
| Chrome | Ya | Ya | Ya | Tidak |
| Firefox | Ya | Ya | Ya | Tidak |
| Safari | Tidak | Ya | Tidak | Ya |
| Microsoft Edge | Ya | Ya | Tidak | Tidak |
| Opera | Ya | Ya | Ya | Tidak |
Catatan 1: Microsoft Edge (pembaruan 2019), Opera, Samsung Internet, Yandex, dan UC Browser semuanya berbasis Chromium dan dikenali sebagai Chrome di Engagelab.
Catatan 2: Internet Explorer tidak lagi menerima pembaruan fitur. Microsoft telah mengalihkan pengembangan browser ke platform Edge.
Catatan 3: Mode Incognito, mode penjelajahan pribadi, dan mode tamu browser tidak mendukung notifikasi web push.
Dukungan Berdasarkan Versi Browser
| Browser | Windows | MacOS | Android |
|---|---|---|---|
| Chrome | Chrome 42+ | Chrome 42+ | Chrome 105+ |
| Firefox | Firefox v44+ | Firefox v44+ | Firefox v104+ |
| Apple Safari | / | Safari V11.1+ | / |
| Opera | Opera v29+ | Opera v29+ | Opera mobile v64+ |
| Microsoft Edge | Edge v17+ | Edge v17+ | / |
Pertanyaan Terkait Notifikasi Web Push di Browser Safari
Notifikasi web push pada Safari mendukung macOS (V11.1+) serta iOS/iPadOS 16.4+.
Fitur Apa Saja yang Didukung oleh Notifikasi Push Safari?
| Fitur | macOS (15-) | macOS (16+) | iOS/iPadOS 16.4+ |
|---|---|---|---|
| Gambar | Tidak | Tidak | Tidak |
| Tombol Aksi | Tidak | Tidak | Tidak |
| Launch URL | Ya | Ya | Ya |
| Ikon Situs Kustom | Ya | Tidak | Ya |
Bagaimana Pengguna di iOS dan iPadOS Menerima Notifikasi Web Push Safari?
1. Bagaimana Developer Mengatur Agar Pengguna Bisa Menerima Notifikasi Web di iOS/iPadOS 16.4+?
Di iOS/iPadOS 16.4+, Web Push Notification tersedia. Namun, website harus memiliki file manifest yang sesuai dan diatur dengan atribut yang benar agar notifikasi dapat berjalan. Tambahkan kode berikut pada HTML halaman integrasi:
Sertakan file manifest:
{
"$schema": "https://json.schemastore.org/web-manifest-combined.json",
"display": "standalone",
"start_url": "/webpush/index.html",
"name": "Contoh WebPush Engagelab",
"short_name": "Engagelab",
"icons": [
{
"src": "/icon-large-cb438cac.png",
"type": "image/png",
"sizes": "1024x1024"
}
]
}
2. Agar Pengguna Bisa Berlangganan dan Menerima Notifikasi Web Push Safari di Mobile, Mereka Harus Menambahkan Web App ke Home Screen
Untuk menerima notifikasi Web Push Safari mobile (iOS/iPadOS 16.4+), pengguna harus:
- Mengunjungi website Anda menggunakan Safari di perangkat Apple mobile dengan iOS/iPadOS 16.4+.
- Ketuk tombol bagikan di Safari.
- Pilih “Tambahkan ke Layar Utama”.
- Simpan aplikasi di perangkat.
- Buka aplikasi dari layar utama.
- Berlangganan notifikasi (pengguna harus mengetuk tombol berlangganan sebelum prompt izin asli muncul). Langkah ini wajib agar bisa menerima notifikasi web push mobile. Karena proses ini cukup kompleks bagi pengguna, Anda perlu membimbing mereka memahami manfaat berlangganan notifikasi.
3. Tambahkan Banner Notifikasi di Website Anda untuk Membimbing Pengguna "Tambahkan ke Layar Utama"
Banner dapat ditambahkan di website Anda untuk menginformasikan manfaat notifikasi web push mobile dan mengajarkan cara berlangganan.
Disarankan menambahkan banner di website yang tampil di perangkat Apple mobile, membimbing pengunjung untuk mengetuk tombol bagikan dan opsi "Tambahkan ke Layar Utama".
Terdapat juga proyek open-source yang dapat membantu Anda memberikan panduan ini:
Contoh banner bawah Github: https://github.com/rajatsehgal/add-to-home-screen
Jika Browser Ditutup, Apakah Pengguna Masih Bisa Menerima Notifikasi?
- Jika menggunakan channel EngageLab, website harus dibuka untuk menerima notifikasi.
- Jika menggunakan channel sistem, notifikasi dapat diterima meski browser ditutup. Setiap platform berbeda. Lihat tabel berikut:
| Browser | Windows | MacOS |
|---|---|---|
| Chrome | ya, proses browser harus berjalan di latar belakang | ya, proses browser harus berjalan di latar belakang |
| Firefox | ya, proses browser harus berjalan di latar belakang | ya, proses browser harus berjalan di latar belakang |
| Safari | / | ya |
| Opera | ya, proses browser harus berjalan di latar belakang | ya, proses browser harus berjalan di latar belakang |
| Microsoft Edge | ya, proses browser harus berjalan di latar belakang | ya, proses browser harus berjalan di latar belakang |
Pada Windows, jika semua jendela browser ditutup namun proses browser masih berjalan di latar belakang, notifikasi sistem tetap dapat diterima. Jika proses browser sudah ditutup, notifikasi tidak diterima.
Pada Mac OS X, meski semua jendela ditutup, sebagian besar proses browser tetap berjalan di latar belakang sehingga notifikasi sistem tetap diterima. Jika proses browser dipaksa keluar, notifikasi tidak diterima. Safari dapat menerima notifikasi tanpa dijalankan karena notifikasi dikirim langsung ke sistem operasi. Pengguna perlu mendaftarkan notifikasi Safari terlebih dahulu, lalu tetap dapat menerima notifikasi meski Safari benar-benar ditutup.
Pertanyaan Terkait Prompt Otorisasi Notifikasi
Kapan Prompt Akan Ditampilkan Kembali Setelah Pengguna Menutup Prompt Web Push?
Jika pengguna mengklik "Blokir" (Chrome), "Jangan Izinkan" (Safari), atau "Jangan Pernah Izinkan" (Firefox) pada prompt izin asli, website tidak dapat menampilkan prompt lagi kecuali pengguna mengubah pengaturan browser untuk berlangganan atau mereset izin. Disarankan menggunakan prompt EngageLab (buka pengaturan).
Prompt Izin Asli
Berlangganan web push membutuhkan prompt izin asli browser, dan prompt asli ini tidak dapat dikustomisasi. Bahasa mengikuti pengaturan browser pengguna. Hanya website HTTPS yang dapat menampilkan prompt asli.
Chrome: Anda punya 3 kesempatan untuk meminta pengguna berlangganan. Setelah pengguna mengklik "X" pada prompt asli tiga kali, mereka tidak akan menerima prompt selama seminggu. Info lebih lanjut, lihat di sini.
Firefox: Mulai Firefox 70, setelah pengguna mengklik tombol "tutup", mereka perlu mengklik ikon notifikasi kecil di browser untuk menerima prompt lagi. Untuk Firefox 72+, prompt asli browser telah diblokir agar tidak tampil, detailnya lihat di sini.
Safari: Mirip Firefox, UI lebih tenang untuk pengguna yang sering menolak izin, dan prompt otomatis untuk situs yang telah ditolak push juga disediakan, Safari 12.1+
Prompt Soft EngageLab
Karena pop-up asli hanya punya satu kesempatan, jika ditolak, website tidak bisa lagi memperoleh izin dari pengguna. EngageLab menyarankan menggunakan 'soft prompt' untuk mendapatkan otorisasi pengguna:
Jika pengguna klik "Izinkan" atau "Batal" pada prompt EngageLab (buka panduan pengaturan) dan belum berlangganan via prompt asli, prompt EngageLab bisa muncul lagi.
- Jika pengguna klik "Izinkan" pada prompt EngageLab, pop-up asli akan dipanggil, tapi jika pengguna klik "Batal" pada prompt asli, prompt EngageLab akan tetap muncul lagi saat kunjungan berikutnya.
- Jika pengguna klik "Izinkan" pada prompt EngageLab, pop-up asli akan dipanggil, dan jika pengguna klik "Izinkan" pada prompt asli, pengguna telah mengizinkan website untuk notifikasi web; jika klik "Tolak" pada prompt asli, website tidak bisa memperoleh izin lagi.
- Jika pengguna klik "Batal" pada prompt EngageLab, artinya pengguna tidak ingin menerima notifikasi saat itu, sehingga jika ditanya lagi kemungkinan besar akan ditolak, maka pop-up asli tidak akan dipanggil, dan pada kunjungan berikutnya prompt EngageLab dapat kembali menanyakan keinginan pengguna.
Cara Mengatasi Gagal Menerima Notifikasi
1. Periksa izin pada bilah notifikasi halaman web.

2. Periksa apakah izin notifikasi aplikasi browser sudah diaktifkan.
Pengaturan notifikasi Windows:
- Matikan bantuan fokus. Info lebih lanjut, lihat dokumentasi resmi Microsoft.
- Masuk ke Pengaturan > Notifikasi dan aksi > aktifkan notifikasi dari aplikasi dan pengirim lain. Pastikan situs dan browser Anda juga diaktifkan. Info lebih lanjut, lihat dokumentasi resmi Microsoft.
)
Pengaturan notifikasi macOS:
- Di System Preferences > Notifications > Chrome atau browser pilihan Anda, pastikan izinkan notifikasi aktif.
- Di System Preferences > Notifications > Focus > Do Not Disturb dan sleep, pastikan mode ini tidak aktif atau Anda berada pada jam notifikasi diizinkan.
- macOS juga punya pengaturan "jangan ganggu" sementara di menu pojok kanan atas > gulir ke atas.

3. Browser vendor tidak stabil, disarankan gunakan channel EngageLab.

{
"from":"web_push",
"to":{
"registration_id":[
"xxx"
]
},
"body":{
"platform":"web",
"notification":{
"web":{
"title":"web_push",
"alert":"Hi,MTPush !",
"url":"http://www.google.com",
"extras":{
"web-key1":"web-value1"
}
}
},
"options":{
"time_to_live":30,
"third_party_channel":{
"w3push":{
"distribution":"mtpush"
}
}
},
"request_id":"12345678",
"custom_args":"business info"
}
}
Cara Mengatasi Notifikasi Tidak Muncul di Safari
Langkah 1: Periksa izin browser Safari, pastikan tombol izinkan aktif, kondisi normal seperti gambar berikut:

Langkah 2: Klik Cek status layanan push dan izin Notifikasi browser, kondisi normal seperti gambar:


Langkah 3: Klik Safari - preferensi - website - notifikasi, cek apakah website Notification Center diizinkan, kondisi normal seperti gambar berikut.

Catatan:
- Klik hentikan push, pesan push Aurora tidak akan diterima dan halaman perlu di-refresh.
- Satu domain dikonfigurasi dengan beberapa halaman HTML. Jangan hapus izin website Notification Center. Setelah dihapus, halaman HTML tidak akan menerima notifikasi. (Harus menemukan halaman utama dan mendapatkan izin notifikasi website lagi)
Jika Pengguna yang Sama Menggunakan Beberapa Browser, Bagaimana Pesan Ditampilkan di Perangkat Pengguna Saat Dikirim?
Jika strategi distribusi yang dipilih memprioritaskan channel sistem, maka pesan hanya akan dikirim melalui channel browser vendor terakhir yang digunakan pengguna. Jika opsi hanya mengirim melalui channel Jiguang, maka beberapa pesan akan dikirim.
Jika Pengguna Menghapus Cache dan Cookie Browser, Apakah Masih Bisa Menerima WebPush dari Website Ini?
Saat pengguna online, channel Jiguang masih dapat menerima push notification.
Untuk channel browser vendor, jika pengguna menghapus cookie dan cache browser, mereka akan berhenti berlangganan notifikasi. Data langganan pengguna disimpan di IndexedDB browser. Menghapus data ini akan membuat browser "lupa" pelanggan. Namun, menghapus data ini tidak menghapus izin notifikasi yang sudah diberikan. SDK perlu diinisialisasi ulang agar pengguna otomatis berlangganan kembali saat mengunjungi website.
Jika pengguna mengubah izin notifikasi browser menjadi "Tanya" atau "Blokir", mereka tidak akan otomatis berlangganan ulang.
Jika pengguna menghapus notifikasi dari pengaturan browser, mereka juga tidak akan otomatis berlangganan ulang.
Cara menghapus notifikasi di berbagai browser:
Chrome: chrome://settings/content/notifications

Firefox: about:preferences#privacy > Permissions > Notifications

Safari: Preferences > Websites > Notifications > Remove !

Saat pengguna berlangganan ulang, mereka akan menerima Registration ID baru. Anda dapat menggunakan window.MTpushInterface.getRegistrationID() untuk mendapatkan rid.
Jika Beberapa Pesan Dikirim ke Pengguna yang Sama Secara Bersamaan, Apakah Semua Pesan Akan Ditampilkan?
Mekanisme tampilan pesan berbeda di setiap channel push:
- Channel EngageLab: Tidak ada mekanisme overwrite, jadi jika beberapa pesan dikirim ke pengguna yang sama secara bersamaan, semua pesan akan tampil. Notification center akan menyimpan beberapa pesan; kecuali pesan terbaru, pesan lain akan dirangkum.
- Safari: Tidak ada mekanisme overwrite, jadi semua pesan akan tampil. Notification center akan menyimpan beberapa pesan; kecuali pesan terbaru, pesan lain akan dirangkum.
- Chrome: Ada mekanisme overwrite, jadi setiap notifikasi akan digantikan oleh yang terbaru, hanya pesan terakhir yang tampil.
- Edge: Ada mekanisme overwrite, jadi setiap notifikasi akan digantikan oleh yang terbaru, hanya pesan terakhir yang tampil.
- Firefox: Ada mekanisme overwrite, jadi setiap notifikasi akan digantikan oleh yang terbaru, hanya pesan terakhir yang tampil.
Apakah EngageLab WebPush Mendukung Penggantian Nama Domain?
Browser mengikat pelanggan ke sumber tertentu (nama domain/URL website).
Demi keamanan dan kebijakan same-origin browser, pelanggan tidak bisa dipindahkan ke sumber lain. Ini bukan batasan dari EngageLab; jika ada penyedia layanan yang mengklaim bisa memindahkan pelanggan antar website, pastikan mereka benar-benar berlangganan ke website Anda.
Jika Anda mengganti website, solusi terbaik adalah membuat aplikasi WebPush baru untuk domain baru dan meminta pengguna berlangganan ulang. Anda tidak bisa mengimpor pelanggan dari satu sumber ke sumber lain.
Anda masih bisa mengirim push ke pelanggan website lama, namun pengguna harus berlangganan ulang di website baru untuk menerima push dari domain baru. Langkah migrasi yang direkomendasikan:
- Buat aplikasi WebPush baru untuk domain baru.
- Terus kirim push dari aplikasi lama menggunakan domain lama. Pada "launch URL" notifikasi, gunakan domain baru.
- Setelah 2 minggu hingga 2 bulan (tergantung frekuensi pengiriman dan jumlah pelanggan baru), Anda bisa berhenti menggunakan aplikasi lama dan hanya memakai aplikasi baru.
- Jika mengirim pesan yang sama dari aplikasi lama dan baru, pelanggan di kedua aplikasi akan menerima pesan ganda. Ikuti rentang waktu yang direkomendasikan.
- Kirim notifikasi seperti "Kami telah pindah, klik di sini untuk mengunjungi website baru dan berlangganan ulang agar tetap dapat update." Ini membantu mengingatkan pengguna agar berlangganan ulang. Disarankan mengirim notifikasi seperti ini di awal dan pesan terakhir dari aplikasi lama.
- Setiap website dan audiens berbeda. Bersiaplah kehilangan sebagian pelanggan dalam jangka pendek.
Saat menjalankan langkah migrasi di atas, perhatikan pengalaman pengguna agar tidak merepotkan mereka.
Apakah EngageLab WebPush Mendukung Notifikasi Push PWA?
1. Apa Itu PWA?
Push PWA adalah proses menggunakan Web Push pada Progressive Web Apps (PWA) untuk mengirim notifikasi ke pengguna. PWA adalah aplikasi web yang menawarkan fungsi dan pengalaman mirip aplikasi native, dapat diakses melalui browser tanpa instalasi.
Push PWA menggunakan teknologi Web Push dari browser. Web Push memungkinkan aplikasi web mengirim notifikasi seperti aplikasi native, bahkan saat aplikasi tidak aktif atau ditutup.
Berbeda dengan aplikasi tradisional, PWA tidak perlu diunduh dari app store; cukup diakses di browser melalui URL. Notifikasi push PWA memberikan pesan real-time ke pengguna, meningkatkan pengalaman dan keterlibatan pengguna.
Singkatnya, push PWA adalah metode menggunakan Web Push untuk mengirim notifikasi ke pengguna aplikasi web progresif, meningkatkan engagement dan interaksi, serta memberikan pengalaman pengguna mendekati aplikasi native.
2. Apakah EngageLab WebPush Mendukung Notifikasi Push PWA?
EngageLab WebPush mendukung notifikasi push PWA. Anda perlu mengintegrasikan fungsi Web Push ke dalam PWA menggunakan Web SDK dari EngageLab WebPush, mengikuti contoh kode di dokumentasi untuk mendaftarkan Service Worker dan inisialisasi Web Push. Setelah integrasi, Anda dapat menggunakan API EngageLab WebPush untuk mengirim notifikasi ke pengguna PWA Anda.
Catatan: Syarat utama agar WebSDK mendukung PWA:
1. Program berjalan di browser yang mendukung notifikasi W3C; 2. Memiliki domain khusus dan menggunakan protokol HTTPS.
3. Apakah Service Worker PWA Akan Konflik dengan Service Worker EngageLab WebPush?
Service worker pada PWA dan service worker EngageLab WebPush bisa konflik, karena keduanya berjalan di latar belakang browser, dan untuk origin yang sama, biasanya hanya satu service worker yang aktif.
Service worker adalah skrip yang dipasang website di browser dan mendukung offline, push message, sinkronisasi latar belakang, dll. Karena service worker mengontrol halaman dalam cakupannya, beberapa service worker tidak bisa mengontrol halaman yang sama secara bersamaan.
Jika Anda mendaftarkan beberapa service worker dalam aplikasi/domain yang sama, service worker yang didaftarkan terakhir dapat menggantikan yang sebelumnya, atau terjadi konflik jika cakupan keduanya tumpang tindih. Ini bisa menyebabkan perilaku tidak terduga, seperti push message hanya berjalan di salah satu channel.
Untuk menghindari konflik, Anda bisa:
1. Gunakan hanya satu service worker di aplikasi Anda. Jika fungsi WebPush EngageLab dan fitur PWA bisa digabung, sebaiknya satukan dalam satu skrip service worker.
2. Jika harus dua service worker terpisah, pastikan cakupannya tidak tumpang tindih. Ini bisa diatur dengan path cakupan berbeda saat mendaftarkan service worker.
Sebelum implementasi, baca dokumentasi dan lakukan pengujian menyeluruh di lingkungan pengembangan dan produksi agar kedua service worker bisa berjalan berdampingan tanpa gangguan.
4. Perbedaan Perilaku Popup Izin Notifikasi PWA di iOS dan Android
Pembatasan Sistem iOS (Kebijakan Safari/WebKit): · Demi privasi, iOS mengharuskan gesture pengguna (misal klik) untuk memicu popup izin
· Ini kebijakan wajib WebKit untuk semua PWA dan aplikasi web
· Setelah instalasi PWA awal, interaksi pengguna juga diperlukan untuk meminta izinKarakteristik Sistem Android: · Chrome/WebView mengizinkan permintaan izin otomatis saat pemuatan halaman
· Mengikuti model permintaan izin yang lebih longgar
· Beberapa versi Android bahkan mendukung prompt izin progresif
Mengapa Browser Berbeda Memiliki regid yang Sama?
A: Jika nama domain terintegrasi dikonfigurasi untuk aplikasi yang sama dan userStr oleh pengguna yang sama, maka rid yang sama akan dihasilkan, terlepas dari browser yang digunakan.
// Daftarkan event listener sebelum inisialisasi
// Callback saat channel JPush terputus
MTpushInterface.mtPush.onDisconnect(function () {
console.log("onDisconnect");
});
// Menerima pesan push (web push, channel browser vendor)
MTpushInterface.onMsgReceive((msgData) => {
// Struktur msgData {data:{xxx}, type:0}
// type:0 adalah channel JPush, type:1 adalah channel sistem
console.log("Menerima pesan push:", msgData);
});
// Inisialisasi push
MTpushInterface.init({
appkey: "", // Wajib, lihat informasi aplikasi di atas
user_str: visitorId, // Wajib, pengenal pengguna
fail(err) {
console.log("Pembuatan push online gagal", err);
},
success(data) {
console.log("Pembuatan push online berhasil", data);
},
webPushcallback(code, tip) {
console.log("Pengguna menerima status code dan tip", code, tip);
},
swUrl: '', // Default: "/sw.min." + sdkEnv.version + ".js"
canGetInfo(data) {
// Data konfigurasi notifikasi tersedia di sini
// RegId tersedia setelah callback ini
console.log(data); // Informasi konfigurasi
console.log("Menerima RegId", MTpushInterface.getRegistrationID());
},
custom: (fuc) => {
// Jika menggunakan konfigurasi notifikasi kustom:
// 1. Panggil fuc() secara manual untuk meminta izin
// 2. Hanya bisa didapat melalui callback kustom
// 3. fuc() meminta izin notifikasi
}
});
Jika Anda menemui masalah yang tidak tercantum dalam dokumen ini selama penggunaan, silakan hubungi layanan pelanggan, dan kami akan memberikan dukungan serta solusi profesional untuk Anda.










