Gambaran umum pemberitahuan mentah

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

Anda dapat menggunakan pemberitahuan mentah untuk berbagai tujuan, termasuk untuk memicu aplikasi Anda untuk 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.

Important

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 notifikasi mentah, aplikasi dan layanan cloud-nya dapat menghemat overhead mempertahankan koneksi persisten selama dokumen terbuka.

Cara kerja notifikasi 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 ketika 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 dilalui oleh pemberitahuan mentah pada klien: pemberitahuan tersebut akan dikirimkan ke aplikasi Anda yang sedang berjalan melalui peristiwa penyampaian pemberitahuan, dikirim ke tugas latar belakang, atau dihilangkan. Oleh karena itu, jika klien offline dan WNS mencoba memberikan pemberitahuan mentah, pemberitahuan akan dihilangkan.

Membuat pemberitahuan mentah

Mengirim pemberitahuan mentah mirip dengan mengirim pemberitahuan push tile, toast, atau badge, dengan perbedaan ini:

  • Header Content-Type HTTP harus diatur ke "application/octet-stream".
  • Header HTTP X-WNS-Type harus disetel 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 untuk dikirimkan, sehingga aplikasi dan layanan cloud Anda harus memperhitungkan kemungkinan bahwa pemberitahuan mentah mungkin tidak menjangkau klien, seperti ketika klien offline.

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

Menerima pemberitahuan mentah

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

  • Melalui pengiriman notifikasi saat aplikasi Anda berjalan.
  • Jika aplikasi Anda diaktifkan untuk menjalankan tugas latar belakang, maka tugas latar belakang dapat dipicu oleh notifikasi mentah melalui .

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 diprioritaskan daripada tugas latar belakang dan aplikasi akan memiliki kesempatan pertama untuk memproses pemberitahuan.
  • Penanganan acara pengiriman notifikasi dapat menentukan, dengan mengatur properti PushNotificationReceivedEventArgs.Cancel ke true, bahwa notifikasi mentah tidak boleh diteruskan ke tugas latar belakangnya setelah pencatat keluar. Jika properti Cancel diatur ke false atau tidak diatur (nilai default false), pemberitahuan mentah akan memicu tugas latar belakang setelah penanganan acara pengiriman pemberitahuan menyelesaikan tugasnya.

Peristiwa pengiriman pemberitahuan

Aplikasi Anda dapat menggunakan peristiwa pengiriman pemberitahuan (PushNotificationReceived) untuk menerima pemberitahuan mentah saat aplikasi sedang digunakan. Saat layanan awan 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 dihapus oleh WNS saat diterima. Untuk menghindari pemborosan sumber daya layanan cloud, 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 memberi tahu layanan cloud bahwa aplikasi aktif di latar depan: Aplikasi dapat menghubungi layanannya untuk memberi tahunya 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 tersebut kemudian mengetahui bahwa ia harus mengirim notifikasi mentah ke instance tertentu dari aplikasi tersebut alih-alih disiarkan.

  • Layanan cloud merespons pesan respons WNS : Layanan aplikasi Anda dapat menggunakan X-WNS-NotificationStatus dan informasi 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 dapat menerima salah satu pesan ini dalam respons:

    • X-WNS-NotificationStatus:dijatuhkan: Ini menunjukkan bahwa pemberitahuan tidak diterima oleh klien. Ini adalah asumsi yang aman bahwa menjatuhkan respons disebabkan oleh aplikasi Anda tidak lagi berada di latar depan di perangkat pengguna.
    • X-WNS-DeviceConnectionStatus: terputus atau X-WNS-DeviceConnectionStatus: terhubung sementara: 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 dalam HTTP POST pemberitahuan.

    Layanan cloud aplikasi Anda dapat menggunakan informasi dalam pesan status ini untuk menghentikan upaya komunikasi melalui pemberitahuan mentah. Layanan 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

Important

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

 

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

Tugas latar belakang yang dipicu oleh notifikasi mentah memungkinkan layanan cloud aplikasi Anda untuk menghubungi aplikasi Anda, bahkan ketika aplikasi tersebut tidak berjalan (meskipun mungkin akan memicu aplikasi untuk berjalan). 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 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 respons, 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 unduhan 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. Jalankan 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 notifikasi 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.

Other resources

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.