Bagikan melalui


Gambaran umum pemberitahuan mentah

Pemberitahuan mentah adalah pemberitahuan push tujuan umum yang singkat. Mereka benar-benar instruksi dan tidak menyertakan komponen UI. Seperti halnya pemberitahuan push lainnya, fitur Windows Push Notification Services (WNS) memberikan pemberitahuan mentah dari layanan cloud Anda ke aplikasi Anda.

Anda dapat menggunakan pemberitahuan mentah untuk berbagai tujuan, termasuk untuk memicu aplikasi Anda menjalankan tugas latar belakang jika pengguna telah memberikan izin aplikasi untuk melakukannya. Dengan menggunakan WNS untuk berkomunikasi dengan aplikasi, Anda dapat menghindari overhead pemrosesan pembuatan koneksi soket persisten, mengirim pesan HTTP GET, dan koneksi layanan-ke-aplikasi lainnya.

Penting

Untuk memahami pemberitahuan mentah, yang terbaik adalah memahami konsep yang dibahas dalam gambaran umum Windows Push Notification Services (WNS).

 

Seperti halnya pemberitahuan push toast, petak peta, dan lencana, pemberitahuan mentah didorong dari layanan cloud aplikasi Anda melalui saluran yang ditetapkan Pengidentifikasi Sumber Daya Seragam (URI) ke WNS. WNS, pada gilirannya, mengirimkan pemberitahuan ke perangkat dan akun pengguna yang terkait dengan saluran tersebut. Tidak seperti pemberitahuan push lainnya, pemberitahuan mentah tidak memiliki format tertentu. Konten payload sepenuhnya ditentukan aplikasi.

Sebagai ilustrasi aplikasi yang dapat memperoleh manfaat dari pemberitahuan mentah, mari kita lihat aplikasi kolaborasi dokumen teoritis. Pertimbangkan dua pengguna yang mengedit dokumen yang sama secara bersamaan. Layanan awan, yang menghosting dokumen bersama, dapat menggunakan pemberitahuan mentah untuk memberi tahu setiap pengguna saat perubahan dilakukan oleh pengguna lain. Pemberitahuan mentah tidak akan selalu berisi perubahan pada dokumen, tetapi sebaliknya akan memberi sinyal salinan aplikasi setiap pengguna untuk menghubungi lokasi pusat dan menyinkronkan perubahan yang tersedia. Dengan menggunakan pemberitahuan mentah, aplikasi dan layanan cloudnya dapat menyimpan overhead mempertahankan koneksi persisten sepanjang waktu dokumen terbuka.

Cara kerja pemberitahuan mentah

Semua pemberitahuan mentah adalah pemberitahuan push. Oleh karena itu, pengaturan yang diperlukan untuk mengirim dan menerima pemberitahuan push juga berlaku untuk pemberitahuan mentah:

  • Anda harus memiliki saluran WNS yang valid untuk mengirim pemberitahuan mentah. Untuk informasi selengkapnya tentang memperoleh saluran pemberitahuan push, lihat Cara meminta, membuat, dan menyimpan saluran pemberitahuan.
  • Anda harus menyertakan kemampuan Internet dalam manifes aplikasi Anda. Di editor manifes Microsoft Visual Studio, Anda akan menemukan opsi ini di bawah tab Kemampuan sebagai Internet (Klien). Untuk informasi selengkapnya, lihat Kemampuan.

Isi pemberitahuan dalam format yang ditentukan aplikasi. Klien menerima data sebagai string null-terminated (HSTRING) yang hanya perlu dipahami oleh aplikasi.

Jika klien offline, pemberitahuan mentah akan di-cache oleh WNS hanya jika header X-WNS-Cache-Policy disertakan dalam pemberitahuan. Namun, hanya satu pemberitahuan mentah yang akan di-cache dan dikirimkan setelah perangkat kembali online.

Hanya ada tiga jalur yang mungkin untuk pemberitahuan mentah untuk diambil pada klien: mereka akan dikirimkan ke aplikasi Anda yang sedang berjalan melalui peristiwa pengiriman pemberitahuan, dikirim ke tugas latar belakang, atau dihilangkan. Oleh karena itu, jika klien offline dan WNS mencoba mengirimkan pemberitahuan mentah, pemberitahuan akan dihilangkan.

Membuat pemberitahuan mentah

Mengirim pemberitahuan mentah mirip dengan mengirim pemberitahuan push petak peta, roti panggang, atau lencana, dengan perbedaan berikut:

  • Header Http Content-Type harus diatur ke "application/octet-stream".
  • Header HTTP X-WNS-Type harus diatur ke "wns/raw".
  • Isi pemberitahuan dapat berisi payload string apa pun yang berukuran lebih kecil dari 5 KB, tetapi tidak boleh berupa string kosong.

Pemberitahuan mentah dimaksudkan untuk digunakan sebagai pesan singkat yang memicu aplikasi Anda untuk mengambil tindakan, seperti langsung menghubungi layanan untuk menyinkronkan sejumlah besar data atau untuk melakukan modifikasi status lokal berdasarkan konten pemberitahuan. Perhatikan bahwa pemberitahuan push WNS tidak dapat dijamin akan dikirimkan, sehingga aplikasi dan layanan cloud Anda harus mempertimbangan kemungkinan bahwa pemberitahuan mentah mungkin tidak menjangkau klien, seperti ketika klien offline.

Untuk informasi selengkapnya tentang mengirim pemberitahuan push, lihat Mulai Cepat: Mengirim pemberitahuan push.

Menerima pemberitahuan mentah

Ada dua jalan di mana aplikasi Anda dapat menerima pemberitahuan mentah:

Aplikasi dapat menggunakan kedua mekanisme untuk menerima pemberitahuan mentah. Jika aplikasi menerapkan penanganan aktivitas pengiriman pemberitahuan dan tugas latar belakang yang dipicu oleh pemberitahuan mentah, peristiwa pengiriman pemberitahuan akan diprioritaskan saat aplikasi berjalan.

  • Jika aplikasi berjalan, peristiwa pengiriman pemberitahuan akan lebih diprioritaskan daripada tugas latar belakang dan aplikasi akan memiliki kesempatan pertama untuk memproses pemberitahuan.
  • Penanganan aktivitas pengiriman pemberitahuan dapat menentukan, dengan mengatur properti PushNotificationReceivedEventArgs.Cancel peristiwa ke true, bahwa pemberitahuan mentah tidak boleh diteruskan ke tugas latar belakangnya setelah handler keluar. Jika properti Batal diatur ke false atau tidak diatur (nilai defaultnya false), pemberitahuan mentah akan memicu tugas latar belakang setelah penanganan aktivitas pengiriman pemberitahuan melakukan pekerjaannya.

Peristiwa pengiriman pemberitahuan

Aplikasi Anda dapat menggunakan peristiwa pengiriman pemberitahuan (PushNotificationReceived) untuk menerima pemberitahuan mentah saat aplikasi sedang digunakan. Saat layanan cloud mengirim pemberitahuan mentah, aplikasi yang sedang berjalan dapat menerimanya dengan menangani peristiwa pengiriman pemberitahuan di URI saluran.

Jika aplikasi Anda tidak berjalan dan tidak menggunakan tugas latar belakang), pemberitahuan mentah apa pun yang dikirim ke aplikasi tersebut dihilangkan oleh WNS pada tanda terima. Untuk menghindari pemborosan sumber daya layanan awan, Anda harus mempertimbangkan untuk menerapkan logika pada layanan untuk melacak apakah aplikasi aktif. Ada dua sumber informasi ini: aplikasi dapat secara eksplisit memberi tahu layanan bahwa aplikasi siap untuk mulai menerima pemberitahuan, dan WNS dapat memberi tahu layanan kapan harus berhenti.

  • Aplikasi ini memberi tahu layanan cloud: Aplikasi dapat menghubungi layanannya untuk memberi tahu bahwa aplikasi berjalan di latar depan. Kerugian dari pendekatan ini adalah bahwa aplikasi dapat sering menghubungi layanan Anda. Namun, ia memiliki keuntungan bahwa layanan akan selalu tahu kapan aplikasi siap untuk menerima pemberitahuan mentah yang masuk. Keuntungan lain adalah ketika aplikasi menghubungi layanannya, layanan kemudian tahu untuk mengirim pemberitahuan mentah ke instans tertentu dari aplikasi tersebut daripada siaran.

  • Layanan cloud merespons pesan respons WNS : Layanan aplikasi Anda dapat menggunakan informasi X-WNS-NotificationStatus dan X-WNS-DeviceConnectionStatus yang dikembalikan oleh WNS untuk menentukan kapan harus berhenti mengirim pemberitahuan mentah ke aplikasi. Saat layanan Anda mengirim pemberitahuan ke saluran sebagai HTTP POST, layanan tersebut dapat menerima salah satu pesan ini dalam respons:

    • X-WNS-NotificationStatus: dihilangkan: Ini menunjukkan bahwa pemberitahuan tidak diterima oleh klien. Ini adalah asumsi yang aman bahwa respons yang dihilangkan disebabkan oleh aplikasi Anda tidak lagi berada di latar depan di perangkat pengguna.
    • X-WNS-DeviceConnectionStatus: terputus atau X-WNS-DeviceConnectionStatus: terkoneksi: Ini menunjukkan bahwa klien Windows tidak lagi memiliki koneksi ke WNS. Perhatikan bahwa untuk menerima pesan ini dari WNS, Anda harus memintanya dengan mengatur header X-WNS-RequestForStatus di HTTP POST pemberitahuan.

    Layanan cloud aplikasi Anda dapat menggunakan informasi dalam pesan status ini untuk menghentikan upaya komunikasi melalui pemberitahuan mentah. Layanan ini dapat melanjutkan pengiriman pemberitahuan mentah setelah dihubungi oleh aplikasi, ketika aplikasi beralih kembali ke latar depan.

    Perhatikan bahwa Anda tidak boleh mengandalkan X-WNS-NotificationStatus untuk menentukan apakah pemberitahuan berhasil dikirimkan ke klien.

    Untuk informasi selengkapnya, lihat Permintaan layanan pemberitahuan push dan header respons

Tugas latar belakang yang dipicu oleh pemberitahuan mentah

Penting

Sebelum menggunakan tugas latar belakang pemberitahuan mentah, aplikasi harus diberikan akses latar belakang melalui BackgroundExecutionManager.RequestAccessAsync.

 

Tugas latar belakang Anda harus didaftarkan dengan PushNotificationTrigger. Jika tidak terdaftar, tugas tidak akan berjalan ketika pemberitahuan mentah diterima.

Tugas latar belakang yang dipicu oleh pemberitahuan mentah memungkinkan layanan cloud aplikasi Anda menghubungi aplikasi Anda, bahkan saat aplikasi tidak berjalan (meskipun mungkin memicunya untuk dijalankan). Ini terjadi tanpa aplikasi harus mempertahankan koneksi berkelanjutan. Pemberitahuan mentah adalah satu-satunya jenis pemberitahuan yang dapat memicu tugas latar belakang. Namun, sementara pemberitahuan toast, petak, dan lencana push tidak dapat memicu tugas latar belakang, tugas latar belakang yang dipicu oleh pemberitahuan mentah dapat memperbarui petak peta dan memanggil pemberitahuan toast melalui panggilan API lokal.

Sebagai ilustrasi tentang cara kerja tugas latar belakang yang dipicu oleh pemberitahuan mentah, mari kita pertimbangkan aplikasi yang digunakan untuk membaca e-book. Pertama, pengguna membeli buku secara online, mungkin di perangkat lain. Sebagai tanggapan, layanan cloud aplikasi dapat mengirim pemberitahuan mentah ke setiap perangkat pengguna, dengan payload yang menyatakan bahwa buku dibeli dan aplikasi harus mengunduhnya. Aplikasi kemudian langsung menghubungi layanan cloud aplikasi untuk memulai pengunduhan latar belakang buku baru sehingga nantinya, ketika pengguna meluncurkan aplikasi, buku sudah ada dan siap untuk dibaca.

Untuk menggunakan pemberitahuan mentah untuk memicu tugas latar belakang, aplikasi Anda harus:

  1. Minta izin untuk menjalankan tugas di latar belakang (yang dapat dicabut pengguna kapan saja) dengan menggunakan BackgroundExecutionManager.RequestAccessAsync.
  2. Menerapkan tugas latar belakang. Untuk informasi selengkapnya, lihat Mendukung aplikasi Anda dengan tugas latar belakang

Tugas latar belakang Anda kemudian dipanggil sebagai respons terhadap PushNotificationTrigger, setiap kali pemberitahuan mentah diterima untuk aplikasi Anda. Tugas latar belakang Anda menginterpretasikan payload khusus aplikasi pemberitahuan mentah dan bertindak di atasnya.

Untuk setiap aplikasi, hanya satu tugas latar belakang yang dapat berjalan pada satu waktu. Jika tugas latar belakang dipicu untuk aplikasi yang tugas latar belakangnya sudah berjalan, tugas latar belakang pertama harus diselesaikan sebelum yang baru dijalankan.

Sumber daya lainnya

Anda dapat mempelajari lebih lanjut dengan mengunduh sampel Pemberitahuan mentah untuk Windows 8.1, dan sampel pemberitahuan Push dan berkala untuk Windows 8.1, dan menggunakan kembali kode sumbernya di aplikasi Windows 10 Anda.