Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam mulai cepat ini Anda akan membuat aplikasi Windows desktop yang mengirim dan menerima pemberitahuan push menggunakan SDK Aplikasi Windows.
Prerequisites
- Mulai mengembangkan aplikasi Windows
- Baik Buat proyek baru yang menggunakan SDK Aplikasi Windows ATAU Gunakan SDK Aplikasi Windows dalam proyek yang ada
- Akun Azure diperlukan untuk menggunakan pemberitahuan push SDK Aplikasi Windows.
- Baca Gambaran umum pemberitahuan push
Persyaratan pengemasan
Pemberitahuan push di SDK Aplikasi Windows mendukung aplikasi desktop yang dikemas dan sepenuhnya tidak dikemas. Namun, identitas paket diperlukan untuk pengiriman latar belakang dan aktivasi COM — skenario produksi yang paling umum. Tabel berikut ini meringkas apa yang diperlukan berdasarkan model kemasan Anda:
| Model pengemasan | Diperlukan aktivator COM | Pemetaan PFN diperlukan | Didukung tanpa kemasan |
|---|---|---|---|
| MSIX packaged (WinUI 3, paket WPF/WinForms) | Ya — dalam Package.appxmanifest |
Ya — melalui email pemetaan PFN | No |
| Dikemas dengan lokasi di luar | Ya — dalam Package.appxmanifest |
Ya — melalui email pemetaan PFN | No |
| Benar-benar tidak dipaketkan (tidak ada identitas paket) | Tidak (lewati Langkah 3) | No | Ya — fungsionalitas terbatas |
Important
Jika aplikasi Anda dikemas (MSIX atau dikemas dengan lokasi eksternal), Anda harus memetakan Package Family Name (PFN) aplikasi Anda ke Azure AppId sebelum pemberitahuan push akan berfungsi. Permintaan pemetaan dikirimkan melalui email ke Win_App_SDK_Push@microsoft.com dan diproses setiap minggu. Sebelum peluncuran Anda, rencanakan waktu persiapan ini.
Lihat Langkah 4: Petakan Nama Keluarga Paket aplikasi Anda ke AppId Azure untuk informasi lebih lanjut.
Aplikasi sampel
Panduan awal ini menguraikan langkah menambahkan dukungan pemberitahuan push ke aplikasi Anda di SDK Aplikasi Windows 1.7. Anda dapat melihat kode serupa dengan panduan memulai cepat ini di aplikasi contoh yang ditemukan di GitHub. Pastikan untuk memeriksa branch dengan versi SDK Aplikasi Windows pilihan Anda untuk sampel yang paling cocok dengan proyek Anda.
Anda juga dapat menemukan sampel untuk setiap versi SDK Aplikasi Windows dengan memilih cabang versi di repositori sampel.
Referensi Antarmuka Pemrograman Aplikasi (API)
Untuk dokumentasi referensi API untuk pemberitahuan push, lihat Microsoft.Windows. Namespace PushNotifications.
Mengonfigurasi identitas aplikasi Anda di Azure Active Directory (AAD)
Pemberitahuan push di SDK Aplikasi Windows menggunakan identitas dari Azure Active Directory (AAD). Azure kredensial diperlukan saat meminta URI Saluran WNS dan saat meminta token akses untuk mengirim pemberitahuan push. Catatan: Kami tidak mendukung penggunaan pemberitahuan push SDK Aplikasi Windows dengan Pusat Mitra Microsoft.
Langkah 1: Membuat pendaftaran aplikasi AAD
Masuk ke akun Azure Anda dan buat sumber daya Pendaftaran Aplikasi AAD baru. Pilih Pendaftaran baru.
Langkah 2: Berikan nama dan pilih opsi multi-penyewa
Berikan nama aplikasi.
Pemberitahuan push memerlukan opsi multi-tenant, jadi silakan pilih opsi tersebut.
- Untuk informasi selengkapnya tentang penyewa, lihat Siapa yang bisa masuk ke aplikasi Anda?.
Pilih Daftar
Perhatikan ID Application (klien) Anda, karena ini adalah Azure AppId yang akan Anda gunakan selama pendaftaran aktivasi dan permintaan token akses.
Perhatikan ID Directory (penyewa) Anda, karena ini adalah Azure TenantId yang akan Anda gunakan saat meminta token akses.
Important
Perhatikan ID Aplikasi (klien) Anda dan ID Direktori (penyewa) Anda .Perhatikan ID Object, karena ini adalah Azure ObjectId yang akan Anda gunakan saat meminta permintaan saluran. Perhatikan bahwa INI BUKAN ID objek yang tercantum di halaman Esensial . Sebagai gantinya, untuk menemukan ID Objek yang benar, klik nama aplikasi di bidang Aplikasi Terkelola dalam direktori lokal di halaman Essentials .
Note
Perwakilan service diperlukan untuk mendapatkan ID Objek, jika tidak ada yang terkait dengan aplikasi Anda, ikuti langkah-langkah di salah satu artikel berikut untuk membuatnya di portal Azure atau menggunakan baris perintah:
Gunakan Azure PowerShell untuk membuat perwakilan layanan dengan sertifikat
Langkah 3: Buat rahasia untuk pendaftaran aplikasi Anda
Rahasia Anda akan digunakan bersama dengan appId/ClientId Azure Anda saat meminta token akses untuk mengirim pemberitahuan push.
Navigasi ke Sertifikat & rahasia dan pilih Rahasia klien baru.
Important
Pastikan Anda menyalin rahasia Anda setelah dibuat dan menyimpannya di lokasi yang aman, seperti Azure Key Vault. Ini hanya akan dapat dilihat sekali setelah pembuatan.
Langkah 4: Petakan Package Family Name aplikasi Anda ke Azure AppId.
Jika aplikasi Anda dikemas (termasuk dikemas dengan lokasi eksternal), Anda dapat menggunakan alur ini untuk memetakan Nama Keluarga Paket (PFN) aplikasi Anda dan appId Azure.
Jika aplikasi Anda adalah aplikasi Win32 paket, buat permintaan pemetaan Nama Keluarga Paket (PFN) dengan mengirim email Win_App_SDK_Push@microsoft.com dengan baris subjek "SDK Aplikasi Windows Permintaan Pemetaan Pemberitahuan Push" dan isi "PFN: [PFN Anda]", AppId: [APPId Anda], ObjectId: [ObjectId Anda]. Permintaan pemetaan selesai setiap minggu. Anda akan diberi tahu setelah permintaan pemetaan Anda selesai.
Setelah memiliki appId, ObjectId, dan rahasia Azure, Anda dapat menambahkan kredensial tersebut ke kode sampel di bawah ini.
Mengonfigurasi aplikasi Anda untuk menerima pemberitahuan push
Langkah 1: Tambahkan SDK Aplikasi Windows dan paket NuGet yang diperlukan
Selanjutnya, klik kanan pada solusi di Penjelajah Solusi dan pilih Kelola Paket NuGet.
Di Package Manager, tambahkan paket berikut:
- Microsoft. WindowsAppSDK (versi minimum 1.1.0)
- Microsoft. Windows. SDK. BuildTools (versi minimum 10.0.22000.194)
- Microsoft. Windows. CppWinRT, (versi minimum 2.0.210930.14)
- Microsoft. Windows. ImplementationLibrary, (versi minimum 1.0.210930.1)
Jika ini pertama kalinya Anda menggunakan SDK Aplikasi Windows dalam proyek Anda dan dikemas dengan lokasi eksternal atau tidak dikemas, inisialisasi SDK Aplikasi Windows dengan menambahkan properti berikut ke file proyek Anda:
<!-- your .vcxproj or .proj file -->
<PropertyGroup Label="Globals">
<!-- Other properties -->
<WindowsPackageType>None</WindowsPackageType>
</PropertyGroup>
atau gunakan API bootstrapper. Lihat Gunakan runtime SDK Aplikasi Windows untuk aplikasi yang dikemas dengan lokasi eksternal atau tidak dikemas untuk detail selengkapnya.
Note
Jika SDK tidak diinisialisasi, aplikasi akan melemparkan System.Runtime.InteropServices.COMException (0x80040154): Class not registered (0x80040154 (REGDB_E_CLASSNOTREG)) dan tidak akan berjalan.
Langkah 2: Tambahkan namespace
Selanjutnya, tambahkan namespace untuk pemberitahuan push SDK Aplikasi Windows Microsoft.Windows.PushNotifications.
#include <winrt/Microsoft.Windows.PushNotifications.h>
using namespace winrt::Microsoft::Windows::PushNotifications;
Jika Anda mendapatkan kesalahan "Tidak dapat menemukan Microsoft.Windows.PushNotifications", itu kemungkinan berarti file header belum dihasilkan. Untuk mengatasinya, pastikan Anda memiliki paket di atas yang terinstal, beri komentar pada pernyataan "include" dan "using" yang menyebabkan kesalahan, lalu bangun ulang aplikasi untuk menghasilkan file header. Setelah build berhasil, hapus penanda komentar pada pernyataan include dan using, kemudian kompilasi ulang proyek. Ini akan mengatasi kesalahan.
Langkah 3: Tambahkan aktivator COM ke manifes aplikasi Anda
Important
Jika aplikasi Anda tidak dikemas (artinya, aplikasi tidak memiliki identitas paket saat runtime), maka lewati ke Langkah 4: Daftar dan tanggapi pemberitahuan push pada startup aplikasi.
Jika aplikasi Anda dikemas (termasuk yang dikemas dengan lokasi eksternal): Buka Package.appxmanifest. Tambahkan yang berikut ini ke dalam elemen <Application>.
IdGanti nilai , Executable, dan DisplayName dengan nilai khusus untuk aplikasi Anda.
<!--Packaged apps only-->
<!--package.appxmanifest-->
<Package
...
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
...
<Applications>
<Application>
...
<Extensions>
<!--Register COM activator-->
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer Executable="SampleApp\SampleApp.exe" DisplayName="SampleApp" Arguments="----WindowsAppRuntimePushServer:">
<com:Class Id="[Your app's Azure AppId]" DisplayName="Windows App SDK Push" />
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
</Application>
</Applications>
</Package>
Note
Atribut Id di <com:Class> harus diatur ke Azure AppId (ID Aplikasi (klien) dari pendaftaran aplikasi Azure AD Anda). Ini adalah cara SDK Aplikasi Windows menghubungkan aktivasi COM aplikasi Anda ke identitas Azure - ketika WNS mengaktifkan aplikasi Anda untuk memberikan pemberitahuan push latar belakang, aplikasi menggunakan GUID ini untuk menemukan dan meluncurkan server COM yang benar. Gunakan nilai appId Azure yang sama dengan yang Anda catat pada Langkah 1 di atas.
Note
Contoh kelas C++ yang telah selesai untuk contoh ini dapat ditemukan setelah Langkah 5. Langkah 4 dan 5 memberikan panduan langkah demi langkah untuk menambahkan setiap bagian dalam contoh akhir.
Langkah 4: Mendaftar dan merespons pemberitahuan push pada startup aplikasi
Perbarui metode aplikasi main() Anda untuk menambahkan hal berikut:
- Daftarkan aplikasi Anda untuk menerima pemberitahuan push dengan memanggil PushNotificationManager::Default().Register().
- Periksa sumber permintaan aktivasi dengan memanggil AppInstance::GetCurrent(). GetActivatedEventArgs(). Jika aktivasi dipicu dari pemberitahuan push, tanggapi berdasarkan payload pemberitahuan.
Important
Anda harus memanggil PushNotificationManager::D efault(). Daftar sebelum memanggil AppInstance.GetCurrent.GetActivatedEventArgs.
Menambahkan penanganan aktivitas latar depan
Untuk menangani peristiwa di latar depan, daftarkan handler untuk PushNotificationManager.PushReceived.
Important
Anda juga harus mendaftarkan penanganan aktivitas PushNotificationManager.PushReceived sebelum memanggil PushNotificationManager.Register(). Jika tidak, pengecualian runtime berikut akan dilemparkan:
System.Runtime.InteropServices.COMException: Element not found. Must register event handlers before calling Register().
Tambahkan pemeriksaan PushNotificationManager::IsSupported()
Selanjutnya, tambahkan pemeriksaan apakah API PushNotification didukung dengan PushNotificationManager.IsSupported(). Jika tidak, kami sarankan Anda menggunakan polling atau implementasi soket kustom Anda sendiri.
Sekarang setelah ada dukungan pemberitahuan push yang dikonfirmasi, tambahkan perilaku berdasarkan PushNotificationReceivedEventArgs.
Langkah 5: Minta URI Saluran WNS dan daftarkan dengan server WNS
URI Saluran WNS adalah titik akhir HTTP untuk mengirim pemberitahuan push. Setiap klien harus meminta URI Saluran dan mendaftarkannya ke server WNS untuk menerima pemberitahuan push.
Note
URI Saluran WNS kedaluwarsa setelah 30 hari. Minta URI saluran baru pada setiap peluncuran aplikasi daripada menyimpan URI yang sebelumnya. Ketika URI baru berbeda dari apa yang telah disimpan backend Anda, kirim URI yang diperbarui ke layanan cloud Anda sehingga dapat menjaga catatannya tetap terkini. Jangan asumsikan URI akan tetap stabil di antara sesi — memperlakukannya sebagai nilai yang dapat diubah dengan cakupan sesi menghindari kegagalan pengiriman yang tidak terdeteksi yang disebabkan oleh URI saluran yang kedaluwarsa atau usang.
auto channelOperation{ PushNotificationManager::Default().CreateChannelAsync(winrt::guid("[Your app's Azure ObjectID]")) };
Jika Anda mengikuti kode tutorial, tambahkan ID Objek Azure Anda di sini:
// To obtain an AAD RemoteIdentifier for your app,
// follow the instructions on https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app
winrt::guid remoteId{ "00000000-0000-0000-0000-000000000000" }; // Replace this with your own Azure ObjectId
Contoh Kode
#include <iostream>
#include <winrt/Microsoft.Windows.PushNotifications.h>
#include <winrt/Windows.Foundation.h>
#include <winrt/Microsoft.Windows.AppLifecycle.h>
#include <winrt/Windows.ApplicationModel.Background.h>
#include <wil/cppwinrt.h>
#include <wil/result.h>
using namespace winrt::Microsoft::Windows::PushNotifications;
using namespace winrt::Windows::Foundation;
using namespace winrt::Microsoft::Windows::AppLifecycle;
// To obtain an AAD RemoteIdentifier for your app,
// follow the instructions on https://learn.microsoft.com/azure/active-directory/develop/quickstart-register-app
winrt::guid remoteId{ "00000000-0000-0000-0000-000000000000" }; // Replace this with your own Azure ObjectId
winrt::Windows::Foundation::IAsyncOperation<PushNotificationChannel> RequestChannelAsync()
{
auto channelOperation = PushNotificationManager::Default().CreateChannelAsync(remoteId);
// Set up the in-progress event handler
channelOperation.Progress(
[](auto&& sender, auto&& args)
{
if (args.status == PushNotificationChannelStatus::InProgress)
{
// This is basically a noop since it isn't really an error state
std::cout << "Channel request is in progress." << std::endl << std::endl;
}
else if (args.status == PushNotificationChannelStatus::InProgressRetry)
{
LOG_HR_MSG(
args.extendedError,
"The channel request is in back-off retry mode because of a retryable error! Expect delays in acquiring it. RetryCount = %d",
args.retryCount);
}
});
auto result = co_await channelOperation;
if (result.Status() == PushNotificationChannelStatus::CompletedSuccess)
{
auto channelUri = result.Channel().Uri();
std::cout << "channelUri: " << winrt::to_string(channelUri.ToString()) << std::endl << std::endl;
auto channelExpiry = result.Channel().ExpirationTime();
// Caller's responsibility to keep the channel alive
co_return result.Channel();
}
else if (result.Status() == PushNotificationChannelStatus::CompletedFailure)
{
LOG_HR_MSG(result.ExtendedError(), "We hit a critical non-retryable error with channel request!");
co_return nullptr;
}
else
{
LOG_HR_MSG(result.ExtendedError(), "Some other failure occurred.");
co_return nullptr;
}
};
PushNotificationChannel RequestChannel()
{
auto task = RequestChannelAsync();
if (task.wait_for(std::chrono::seconds(300)) != AsyncStatus::Completed)
{
task.Cancel();
return nullptr;
}
auto result = task.GetResults();
return result;
}
void SubscribeForegroundEventHandler()
{
winrt::event_token token{ PushNotificationManager::Default().PushReceived([](auto const&, PushNotificationReceivedEventArgs const& args)
{
auto payload{ args.Payload() };
std::string payloadString(payload.begin(), payload.end());
std::cout << "\nPush notification content received in the FOREGROUND: " << payloadString << std::endl;
}) };
std::cout << "Push notification foreground event handler registered." << std::endl;
}
int main()
{
// Set up an event handler, so we can receive notifications in the foreground while the app is running.
// You must register notification event handlers before calling Register(). Otherwise, the following runtime
// exception will be thrown: System.Runtime.InteropServices.COMException: 'Element not found. Must register
// event handlers before calling Register().'
SubscribeForegroundEventHandler();
// Register the app for push notifications.
PushNotificationManager::Default().Register();
auto args{ AppInstance::GetCurrent().GetActivatedEventArgs() };
switch (args.Kind())
{
case ExtendedActivationKind::Launch:
{
std::cout << "App launched by user or from the debugger." << std::endl;
if (PushNotificationManager::IsSupported())
{
std::cout << "Push notifications are supported on this device." << std::endl;
// Request a WNS Channel URI which can be passed off to an external app to send notifications to.
// The WNS Channel URI uniquely identifies this app for this user and device.
PushNotificationChannel channel{ RequestChannel() };
if (!channel)
{
std::cout << "\nThere was an error obtaining the WNS Channel URI" << std::endl;
if (remoteId == winrt::guid{ "00000000-0000-0000-0000-000000000000" })
{
std::cout << "\nThe ObjectID has not been set. Refer to the readme file accompanying this sample\nfor the instructions on how to obtain and setup an ObjectID" << std::endl;
}
}
std::cout << "\nPress 'Enter' at any time to exit App." << std::endl;
std::cin.ignore();
}
else
{
std::cout << "Push notifications are NOT supported on this device." << std::endl;
std::cout << "App implements its own custom socket here to receive messages from the cloud since Push APIs are unsupported." << std::endl;
std::cin.ignore();
}
}
break;
case ExtendedActivationKind::Push:
{
std::cout << "App activated via push notification." << std::endl;
PushNotificationReceivedEventArgs pushArgs{ args.Data().as<PushNotificationReceivedEventArgs>() };
// Call GetDeferral to ensure that code runs in low power
auto deferral{ pushArgs.GetDeferral() };
auto payload{ pushArgs.Payload() };
// Do stuff to process the raw notification payload
std::string payloadString(payload.begin(), payload.end());
std::cout << "\nPush notification content received in the BACKGROUND: " << payloadString.c_str() << std::endl;
std::cout << "\nPress 'Enter' to exit the App." << std::endl;
// Call Complete on the deferral when finished processing the payload.
// This removes the override that kept the app running even when the system was in a low power mode.
deferral.Complete();
std::cin.ignore();
}
break;
default:
std::cout << "\nUnexpected activation type" << std::endl;
std::cout << "\nPress 'Enter' to exit the App." << std::endl;
std::cin.ignore();
break;
}
}
Langkah 6: Buat dan instal aplikasi Anda
Gunakan Visual Studio untuk membangun dan menginstal aplikasi Anda. Klik kanan pada file solusi di Penjelajah Solusi dan pilih Deploy. Visual Studio akan membangun aplikasi Anda dan menginstalnya di komputer Anda. Anda dapat menjalankan aplikasi dengan meluncurkannya melalui Menu Mulai atau debugger Visual Studio.
Konsol kode tutorial akan terlihat seperti ini:
Anda memerlukan token untuk mengirim pemberitahuan push ke aplikasi Anda.
Mengirim pemberitahuan push ke aplikasi Anda
Pada titik ini, semua konfigurasi selesai dan server WNS dapat mengirim pemberitahuan push ke aplikasi klien. Dalam langkah-langkah berikut, lihat permintaan server pemberitahuan push dan header respons untuk detail selengkapnya.
Langkah 1: Meminta token akses
Untuk mengirim pemberitahuan push, server WNS terlebih dahulu perlu meminta token akses. Kirim permintaan HTTP POST dengan Azure TenantId, Azure AppId, dan rahasia Anda. Untuk informasi tentang mengambil Azure TenantId dan Azure AppId, lihat Get tenant and app ID values for signing in.
Permintaan Sampel HTTP:
POST /{tenantID}/oauth2/v2.0/token Http/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 160
grant_type=client_credentials&client_id=<Azure_App_Registration_AppId_Here>&client_secret=<Azure_App_Registration_Secret_Here>&scope=https://wns.windows.com/.default/
Permintaan Sampel C#:
//Sample C# Access token request
var client = new RestClient("https://login.microsoftonline.com/{tenantID}/oauth2/v2.0");
var request = new RestRequest("/token", Method.Post);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("grant_type", "client_credentials");
request.AddParameter("client_id", "[Your app's Azure AppId]");
request.AddParameter("client_secret", "[Your app's secret]");
request.AddParameter("scope", "https://wns.windows.com/.default");
RestResponse response = await client.ExecutePostAsync(request);
Console.WriteLine(response.Content);
Jika permintaan Anda berhasil, Anda akan menerima respons yang berisi token Anda di bidang access_token .
{
"token_type":"Bearer",
"expires_in":"86399",
"ext_expires_in":"86399",
"expires_on":"1653771789",
"not_before":"1653685089",
"access_token":"[your access token]"
}
Langkah 2. Mengirim pemberitahuan mentah
Buat permintaan HTTP POST yang berisi token akses yang Anda peroleh di langkah sebelumnya dan konten pemberitahuan push yang ingin Anda kirim. Konten pemberitahuan push akan dikirimkan ke aplikasi.
POST /?token=[The token query string parameter from your channel URL. E.g. AwYAAABa5cJ3...] HTTP/1.1
Host: dm3p.notify.windows.com
Content-Type: application/octet-stream
X-WNS-Type: wns/raw
Authorization: Bearer [your access token]
Content-Length: 46
{ Sync: "Hello from the Contoso App Service" }
var client = new RestClient("[Your channel URL. E.g. https://wns2-by3p.notify.windows.com/?token=AwYAAABa5cJ3...]");
var request = new RestRequest();
request.Method = Method.Post;
request.AddHeader("Content-Type", "application/octet-stream");
request.AddHeader("X-WNS-Type", "wns/raw");
request.AddHeader("Authorization", "Bearer [your access token]");
request.AddBody("Notification body");
RestResponse response = await client.ExecutePostAsync(request);");
Langkah 3: Mengirim pemberitahuan aplikasi bersumber cloud
Jika Anda hanya tertarik untuk mengirim pemberitahuan mentah, abaikan langkah ini. Untuk mengirim notifikasi aplikasi yang bersumber dari cloud, juga disebut sebagai notifikasi push toast, pertama-tama ikuti Quickstart: Pemberitahuan aplikasi di SDK Aplikasi Windows. Pemberitahuan aplikasi dapat berupa push (dikirim dari cloud) atau dikirim secara lokal. Mengirim pemberitahuan aplikasi bersumber cloud mirip dengan mengirim pemberitahuan mentah di
Buat permintaan HTTP POST yang berisi token akses Anda dan konten pemberitahuan aplikasi bersumber cloud yang ingin Anda kirim. Konten pemberitahuan push akan dikirimkan ke aplikasi.
POST /?token=AwYAAAB%2fQAhYEiAESPobjHzQcwGCTjHu%2f%2fP3CCNDcyfyvgbK5xD3kztniW%2bjba1b3aSSun58SA326GMxuzZooJYwtpgzL9AusPDES2alyQ8CHvW94cO5VuxxLDVzrSzdO1ZVgm%2bNSB9BAzOASvHqkMHQhsDy HTTP/1.1
Host: dm3p.notify.windows.com
Content-Type: text/xml
X-WNS-Type: wns/toast
Authorization: Bearer [your access token]
Content-Length: 180
<toast><visual><binding template="ToastGeneric"><text>Example cloud toast notification</text><text>This is an example cloud notification using XML</text></binding></visual></toast>
var client = new RestClient("https://dm3p.notify.windows.com/?token=AwYAAAB%2fQAhYEiAESPobjHzQcwGCTjHu%2f%2fP3CCNDcyfyvgbK5xD3kztniW%2bjba1b3aSSun58SA326GMxuzZooJYwtpgzL9AusPDES2alyQ8CHvW94cO5VuxxLDVzrSzdO1ZVgm%2bNSB9BAzOASvHqkMHQhsDy");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "text/xml");
request.AddHeader("X-WNS-Type", "wns/toast");
request.AddHeader("Authorization", "Bearer <AccessToken>");
request.AddParameter("text/xml", "<toast><visual><binding template=\"ToastGeneric\"><text>Example cloud toast notification</text><text>This is an example cloud notification using XML</text></binding></visual></toast>", ParameterType.RequestBody);
Console.WriteLine(response.Content);
Resources
- Windows Push Notification Service (WNS)
- kode sampel notifikasi Push di GitHub
- Rincian API Microsoft.Windows.PushNotifications
- Spesifikasi push notification di GitHub
- Pesan toast
- Skema XML Pemberitahuan
Windows developer