Mendiagnosis pemberitahuan yang dihentikan di Microsoft Azure Notification Hubs
Pertanyaan umum terkait Microsoft Azure Notification Hubs adalah cara memecahkan masalah saat pemberitahuan dari aplikasi tidak muncul di perangkat klien. Pelanggan ingin tahu letak masalah dan mengapa pemberitahuan dihentikan, dan bagaimana memperbaiki masalah tersebut. Artikel ini mengidentifikasi sejumlah alasan yang mungkin menyebabkan pemberitahuan dihentikan atau tidak diterima oleh perangkat. Artikel ini juga menjelaskan cara menentukan akar masalahnya.
Sangat penting untuk terlebih dahulu memahami cara Notification Hubs mendorong pemberitahuan ke perangkat.
Dalam alur pemberitahuan kirim umum, pesan dikirim dari ujung belakang aplikasi ke Notification Hubs. Notification Hubs memproses semua pendaftaran. Notification Hubs memperhitungkan tag yang dikonfigurasi dan ekspresi tag untuk menentukan target. Target adalah pendaftaran yang perlu menerima pemberitahuan push. Pendaftaran ini dapat mencakup salah satu platform kami yang didukung: Android, Baidu (perangkat Android di Cina), Fire OS (Amazon) iOS, Windows, dan Windows Phone.
Dengan target yang ditetapkan, Notification Hubs mendorong pemberitahuan ke layanan pemberitahuan push untuk platform perangkat. Contohnya termasuk layanan Apple Push Notification (APN) untuk iOS dan macOS, serta Firebase Cloud Messaging (FCM) untuk perangkat Android. Notification Hubs mendorong pemberitahuan yang dibagi di beberapa batch pendaftaran. Notification Hubs mengautentikasi dengan layanan pemberitahuan push masing-masing, berdasarkan info masuk yang Anda tetapkan di portal Microsoft Azure, pada Konfigurasi Notification Hub. Layanan pemberitahuan push kemudian meneruskan pemberitahuan ke perangkat klien masing-masing.
Bagian terakhir dari pengiriman pemberitahuan adalah antara layanan pemberitahuan push platform dan perangkat. Pengiriman pemberitahuan dapat gagal pada salah satu dari empat tahap dalam proses pemberitahuan push (klien, aplikasi ujung belakang, Notification Hubs, dan layanan pemberitahuan push platform). Untuk informasi lebih lanjut tentang arsitektur Notification Hubs, lihat Gambaran umum Notification Hubs.
Kegagalan untuk mengirimkan pemberitahuan mungkin terjadi selama fase pengujian/penahapan awal. Pemberitahuan yang dihentikan pada tahap ini mungkin menunjukkan masalah konfigurasi. Jika kegagalan untuk mengirimkan pemberitahuan terjadi dalam produksi, beberapa atau semua pemberitahuan mungkin akan dihentikan. Masalah pola aplikasi atau pesan yang lebih mendalam ditunjukkan dalam kasus ini.
Bagian berikutnya melihat skenario di mana pemberitahuan mungkin dihentikan, mulai dari umum hingga jarang.
Kesalahan konfigurasi Notification Hubs
Untuk mengirim pemberitahuan ke layanan pemberitahuan push masing-masing, Notification Hubs harus mengautentikasi dirinya sendiri dalam konteks aplikasi Anda. Anda harus membuat akun pengembang dengan layanan pemberitahuan platform target (Microsoft, Apple, Google, dll.). Kemudian, Anda harus mendaftarkan aplikasi Anda dengan OS di mana Anda mendapatkan token atau kunci yang Anda gunakan untuk bekerja dengan PNS target.
Anda harus menambahkan info masuk platform ke portal Microsoft Azure. Jika tidak ada pemberitahuan yang mencapai perangkat, langkah pertama adalah memastikan bahwa info masuk yang benar telah dikonfigurasi di Notification Hubs. Info masuk harus sesuai dengan aplikasi yang dibuat pada akun pengembang khusus platform.
Untuk mengetahui instruksi langkah demi langkah guna menyelesaikan proses ini, lihat Mulai menggunakan Azure Notification Hubs.
Berikut adalah beberapa kesalahan konfigurasi umum untuk diperiksa:
Lokasi nama hub pemberitahuan
Pastikan bahwa nama hub pemberitahuan Anda (tanpa kesalahan ketik) sama di setiap lokasi berikut:
- Tempat Anda mendaftar dari klien
- Tempat Anda mengirim pemberitahuan dari ujung belakang
- Tempat Anda mengonfigurasi info masuk layanan pemberitahuan push
Pastikan Anda menggunakan string konfigurasi tanda tangan akses bersama yang benar pada klien dan ujung belakang aplikasi. Umumnya, Anda harus menggunakan DefaultListenSharedAccessSignature pada klien dan DefaultFullSharedAccessSignature pada ujung belakang aplikasi. Proses ini memberi izin untuk mengirim pemberitahuan ke Notification Hubs.
Konfigurasi APN
Anda harus mempertahankan dua hub yang berbeda: satu untuk produksi dan satu lainnya untuk pengujian. Anda harus mengunggah sertifikat yang Anda gunakan di lingkungan kotak pasir ke hub terpisah dari sertifikat/hub yang akan Anda gunakan dalam produksi. Jangan mencoba mengunggah jenis sertifikat yang berbeda ke hub yang sama. Hal tersebut akan menyebabkan kegagalan pemberitahuan.
Jika Anda secara tidak sengaja mengunggah jenis sertifikat yang berbeda ke hub yang sama, Anda harus menghapus hub dan memulai dari awal dengan hub baru. Jika karena alasan tertentu Anda tidak dapat menghapus hub, Anda setidaknya harus menghapus semua pendaftaran yang ada dari hub.
Konfigurasi FCM
Catatan
Untuk informasi tentang langkah-langkah penghentian dan migrasi Firebase Cloud Messaging, lihat migrasi Google Firebase Cloud Messaging.
Pastikan bahwa kunci server yang Anda peroleh dari Firebase cocok dengan kunci server yang Anda daftarkan di portal Microsoft Azure.
Pastikan Anda telah mengonfigurasi ID Proyek pada klien. Anda bisa mendapatkan nilai untuk ID Proyek dari dasbor Firebase.
Masalah aplikasi
Tag dan ekspresi tag
Jika Anda menggunakan tag atau ekspresi tag untuk membagi peserta Anda, ada kemungkinan bahwa saat Anda mengirim pemberitahuan, tidak ada target yang ditemukan. Kesalahan ini didasarkan pada tag atau ekspresi tag yang ditentukan dalam panggilan kirim Anda.
Tinjau pendaftaran Anda untuk memastikan tag sudah sesuai ketika Anda mengirim pemberitahuan. Kemudian, verifikasi tanda terima pemberitahuan hanya dari klien yang memiliki pendaftaran tersebut.
Contohnya, misalkan semua pendaftaran Anda dengan Notification Hubs menggunakan tag "Politik". Jika Anda kemudian mengirim pemberitahuan dengan tag "Olahraga", notifikasi tidak akan dikirim ke perangkat apa pun. Kasus kompleks mungkin melibatkan ekspresi tag tempat Anda mendaftar dengan menggunakan "Tag A" atau "Tag B," tetapi Anda menargetkan "Tag A && Tag B." Bagian tips diagnosis mandiri nanti dalam artikel menunjukkan kepada Anda cara meninjau pendaftaran dan tag mereka.
Masalah templat
Jika Anda menggunakan templat, pastikan Anda mengikuti panduan yang dijelaskan dalam Templat.
Pendaftaran tidak sah
Jika hub pemberitahuan dikonfigurasi dengan benar dan tag atau ekspresi tag digunakan dengan benar, target yang valid akan ditemukan. Pemberitahuan harus dikirim ke target ini. Notification Hubs kemudian menjalankan beberapa batch pemrosesan secara paralel. Setiap batch mengirim pesan ke serangkaian pendaftaran.
Catatan
Karena Notification Hubs memproses batch secara paralel, urutan pengiriman pemberitahuan tidak dijamin.
Notification Hubs dioptimalkan untuk model pengiriman pesan "paling banyak". Kita mencoba deduplikasi, sehingga tidak ada pemberitahuan yang dikirimkan lebih dari sekali ke perangkat. Pendaftaran diperiksa untuk memastikan bahwa hanya satu pesan yang dikirim per pengidentifikasi perangkat sebelum dikirim ke layanan pemberitahuan push.
Setiap batch dikirim ke layanan pemberitahuan push, yang pada gilirannya menerima dan memvalidasi pendaftaran. Selama proses ini, ada kemungkinan bahwa layanan pemberitahuan push akan mendeteksi kesalahan dengan satu atau beberapa pendaftaran dalam batch. Layanan pemberitahuan push kemudian mengembalikan kesalahan ke Notification Hubs, dan proses akan berhenti. Layanan pemberitahuan push menghentikan batch tersebut sepenuhnya. Hal ini terutama berlaku dengan APN, yang menggunakan protokol aliran TCP.
Dalam hal ini, pendaftaran yang salah dihapus dari database. Kemudian, kita mencoba lagi pengiriman pemberitahuan untuk sisa perangkat pada batch tersebut.
Untuk mendapatkan informasi kesalahan lainnya tentang upaya pengiriman pendaftaran yang gagal, Anda dapat menggunakan REST API Notification Hubs Per Telemetri Pesan: Telemetri pesan Dapatkan Pemberitahuan dan umpan balik PNS. Untuk contoh kode, lihat contoh Kirim REST.
Masalah layanan pemberitahuan push
Setelah layanan pemberitahuan push menerima pemberitahuan, layanan pemberitahuan push mengirimkan pemberitahuan ke perangkat. Pada titik ini, Notification Hubs tidak memiliki kontrol atas pengiriman pemberitahuan ke perangkat.
Karena layanan pemberitahuan platform kuat, pemberitahuan cenderung menjangkau perangkat dalam beberapa detik. Jika layanan pemberitahuan push mengalami pelambatan, Notification Hubs menerapkan strategi back-off eksponensial. Jika layanan pemberitahuan push tetap tidak dapat dijangkau selama 30 menit, ada kebijakan yang berlaku untuk kedaluwarsa dan menghentikan pesan secara permanen.
Jika layanan pemberitahuan push mencoba mengirimkan pemberitahuan tetapi perangkat offline, pemberitahuan disimpan oleh layanan pemberitahuan push. Pemberitahuan disimpan hanya untuk jangka waktu terbatas. Pemberitahuan dikirimkan ke perangkat saat perangkat tersedia.
Setiap aplikasi hanya menyimpan satu pemberitahuan terbaru. Jika beberapa pemberitahuan dikirim saat perangkat offline, setiap pemberitahuan baru menyebabkan pemberitahuan terakhir dibuang. Hanya menyimpan pemberitahuan terbaru disebut penggabungan di APN dan runtuhan di FCM. (FCM menggunakan kunci runtuhan.) Saat perangkat tetap offline untuk waktu yang lama, pemberitahuan yang disimpan untuk perangkat akan dibuang. Untuk informasi lebih lanjut, lihat Gambaran Umum APN dan Tentang pesan FCM.
Dengan Notification Hubs, Anda dapat meneruskan kunci penggabungan melalui header HTTP dengan menggunakan API SendNotification generik. Misalnya, untuk .NET SDK, Anda akan menggunakan SendNotificationAsync
. API SendNotification juga mengambil header HTTP yang diteruskan sebagaimana adanya ke layanan pemberitahuan push masing-masing.
Tips diagnosis mandiri
Berikut adalah jalur untuk mendiagnosis akar masalah pemberitahuan yang dihentikan di Notification Hubs.
Verifikasi info masuk
Portal pengembang layanan pemberitahuan push
Verifikasi info masuk di portal pengembang layanan pemberitahuan push masing-masing (APN, FCM, Layanan Pemberitahuan Windows, dan sebagainya). Untuk informasi lebih lanjut, lihat Tutorial: Mengirim pemberitahuan ke aplikasi Platform Windows Universal dengan menggunakan Azure Notification Hubs.
Portal Azure
Untuk meninjau dan mencocokkan info masuk dengan info masuk yang Anda peroleh dari portal pengembang layanan pemberitahuan push, buka tab Kebijakan Akses di portal Microsoft Azure.
Verifikasi pendaftaran
Visual Studio
Di Visual Studio, Anda bisa menyambungkan ke Azure melalui Penjelajah Server untuk menampilkan dan mengelola beberapa layanan Azure, termasuk Notification Hubs. Pintasan ini terutama berguna untuk lingkungan pengembangan/pengujian Anda.
Anda dapat melihat dan mengelola semua pendaftaran di hub Anda. Pendaftaran dapat dikategorikan berdasarkan platform, pendaftaran asli atau templat, tag, pengidentifikasi layanan pemberitahuan push, ID pendaftaran, dan tanggal kedaluwarsa. Anda juga dapat mengedit pendaftaran di halaman ini. Fitur ini sangat berguna untuk mengedit tag.
Klik kanan hub pemberitahuan Anda di Penjelajah Server dan pilih Diagnosa.
Anda akan melihat halaman berikut:
Beralih ke halaman Pendaftaran Perangkat:
Anda dapat menggunakan laman Pengiriman Uji untuk mengirim pesan pemberitahuan uji:
Catatan
Gunakan Visual Studio untuk mengedit pendaftaran hanya selama pengembangan/pengujian, dan dengan jumlah pendaftaran yang terbatas. Jika Anda perlu mengedit pendaftaran secara massal, pertimbangkan untuk menggunakan fungsi ekspor dan impor pendaftaran yang dijelaskan dalam Cara: Mengekspor dan Memodifikasi Pendaftaran secara Massal.
Azure Service Bus Explorer
Banyak pelanggan menggunakan Penjelajah Bus Layanan untuk melihat dan mengelola hub pemberitahuan mereka. Penjelajah Bus Layanan adalah proyek sumber terbuka.
Memverifikasi pemberitahuan pesan
Portal Azure
Untuk mengirim pemberitahuan uji ke klien Anda tanpa harus menjalankan dan menjalankan kembali layanan, pada SUPPORT + TROUBLESHOOTING, pilih Pengiriman Uji.
Visual Studio
Anda juga dapat mengirim pemberitahuan uji dari Visual Studio.
Pemberitahuan debug gagal dan meninjau hasil pemberitahuan
Properti EnableTestSend
Saat Anda mengirim pemberitahuan melalui Notification Hubs, pemberitahuan tersebut awalnya diantrekan. Notification Hubs menentukan target yang benar, lalu mengirim pemberitahuan ke layanan pemberitahuan push. Jika Anda menggunakan REST API atau salah satu SDK klien, kembalinya panggilan kirim Anda hanya berarti bahwa pesan diantrekan dengan Notification Hubs. Hal ini tidak memberikan wawasan tentang apa yang terjadi ketika Notification Hubs akhirnya mengirim pemberitahuan ke layanan pemberitahuan push.
Jika pemberitahuan Anda tidak sampai di perangkat klien, kesalahan mungkin terjadi saat Notification Hubs mencoba mengirimkannya ke layanan pemberitahuan push. Misalnya, ukuran payload mungkin melebihi batas maksimum yang diizinkan oleh layanan pemberitahuan push, atau info masuk yang dikonfigurasi di Notification Hubs mungkin tidak valid.
Untuk mendapatkan wawasan tentang kesalahan layanan pemberitahuan push, Anda dapat menggunakan properti EnableTestSend. Properti ini diaktifkan secara otomatis saat Anda mengirim pesan uji dari portal atau klien Visual Studio. Anda dapat menggunakan properti ini untuk melihat informasi penelusuran kesalahan terperinci dan juga melalui API. Saat ini, Anda dapat menggunakannya di SDK .NET. Properti ini akan ditambahkan ke semua SDK klien pada akhirnya.
Untuk menggunakan properti EnableTestSend
dengan panggilan REST, tambahkan parameter string kueri yang disebut uji pada akhir panggilan kirim Anda. Misalnya:
https://mynamespace.servicebus.windows.net/mynotificationhub/messages?api-version=2013-10&test
Contoh SDK .NET
Berikut adalah contoh penggunaan SDK .NET untuk mengirim pemberitahuan pop-up (toast) asli:
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(connString, hubName);
var result = await hub.SendWindowsNativeNotificationAsync(toast);
Console.WriteLine(result.State);
Di akhir eksekusi, result.State
cukup menyatakan Enqueued
. Hasilnya tidak memberikan wawasan tentang apa yang terjadi pada pemberitahuan push Anda.
Selanjutnya, Anda dapat menggunakan properti Boolean EnableTestSend
. Gunakan properti EnableTestSend
saat Anda menginisialisasi NotificationHubClient
untuk mendapatkan status terperinci tentang kesalahan layanan pemberitahuan push yang terjadi saat pemberitahuan dikirim. Panggilan kirim membutuhkan waktu tambahan untuk kembali karena pertama-tama membutuhkan Notification Hubs untuk mengirimkan pemberitahuan ke layanan pemberitahuan push.
bool enableTestSend = true;
NotificationHubClient hub = NotificationHubClient.CreateClientFromConnectionString(connString, hubName, enableTestSend);
var outcome = await hub.SendWindowsNativeNotificationAsync(toast);
Console.WriteLine(outcome.State);
foreach (RegistrationResult result in outcome.Results)
{
Console.WriteLine(result.ApplicationPlatform + "\n" + result.RegistrationId + "\n" + result.Outcome);
}
Sampel output
DetailedStateAvailable
windows
7619785862101227384-7840974832647865618-3
The Token obtained from the Token Provider is wrong
Pesan ini menunjukkan bahwa info masuk yang dikonfigurasi di Notification Hubs tidak valid atau ada masalah dengan pendaftaran di hub. Hapus pendaftaran ini dan biarkan klien membuat ulang pendaftaran sebelum mengirim pesan.
Catatan
Penggunaan properti EnableTestSend
sangat dibatasi. Gunakan opsi ini hanya di lingkungan pengembangan/pengujian dan dengan set pendaftaran terbatas. Pemberitahuan debug hanya dikirim ke 10 perangkat. Ada juga batasan untuk memproses pengiriman debug, yaitu 10 per menit. Pemberitahuan debug juga dikecualikan dari SLA Azure Notification Hubs.
Meninjau telemetri
Portal Azure
Di portal, Anda bisa mendapatkan gambaran umum singkat tentang semua aktivitas di hub pemberitahuan Anda.
Pada tab Gambaran Umum, Anda dapat melihat tampilan agregat pendaftaran, pemberitahuan, dan kesalahan berdasarkan platform.
Pada tab Log aktivitas , Anda dapat menambahkan metrik khusus platform lainnya untuk tampilan yang lebih dalam. Anda dapat melihat secara khusus kesalahan yang dikembalikan saat Notification Hubs mencoba mengirim pemberitahuan ke layanan pemberitahuan push.
Pada tab Gambaran Umum , mulailah dengan meninjau Pesan Masuk, Operasi Pendaftaran, dan Pemberitahuan Yang Berhasil. Kemudian, buka tab per platform untuk meninjau kesalahan yang khusus untuk layanan pemberitahuan push tersebut.
Jika pengaturan autentikasi untuk hub pemberitahuan Anda salah, pesan Kesalahan Autentikasi PNS akan muncul. Pesan ini adalah indikasi yang baik untuk memeriksa info masuk layanan pemberitahuan push.
Akses terprogram
Untuk mengetahui informasi tentang akses terprogram selengkapnya, lihat Akses terprogram.
Catatan
Beberapa fitur terkait telemetri, seperti mengekspor dan mengimpor pendaftaran dan akses telemetri melalui API, hanya tersedia pada tingkat layanan Standar. Jika Anda mencoba menggunakan fitur-fitur ini dari tingkat layanan Gratis atau Dasar, Anda akan mendapatkan pesan pengecualian jika Anda menggunakan SDK. Anda akan mendapatkan kesalahan HTTP 403 (Dilarang) jika Anda menggunakan fitur langsung dari API REST.
Untuk menggunakan fitur terkait telemetri, pertama-tama pastikan di portal Microsoft Azure bahwa Anda menggunakan tingkat layanan Standar.