Bagikan melalui


Manajemen Pendaftaran

Topik ini menjelaskan cara mendaftarkan perangkat ke hub pemberitahuan untuk menerima pemberitahuan push. Topik ini menjelaskan pendaftaran pada tingkat tinggi, kemudian memperkenalkan dua pola utama untuk mendaftarkan perangkat: mendaftar dari perangkat langsung ke hub pemberitahuan, dan mendaftar melalui backend aplikasi.

Apa itu Pendaftaran Perangkat

Pendaftaran adalah sub-entitas hub pemberitahuan, dan mengaitkan handel PNS perangkat (handel Layanan Pemberitahuan Platform, misalnya, ChannelURI, token perangkat, registrationId GCM) dengan tag dan mungkin templat. Tag digunakan untuk merutekan pemberitahuan ke kumpulan handel perangkat yang benar. Untuk informasi selengkapnya, lihat Perutean dan Ekspresi Tag. Templat digunakan untuk mengimplementasikan transformasi per pendaftaran. Untuk informasi selengkapnya, lihat Templat.

Penting untuk dicatat bahwa pendaftaran bersifat sementara. Mirip dengan pegangan PNS yang dikandungnya, pendaftaran kedaluwarsa. Anda dapat mengatur waktu hidup untuk pendaftaran di Notification Hub, hingga maksimum 90 hari. Batas ini berarti bahwa mereka harus di-refresh secara berkala, dan juga bahwa mereka seharusnya bukan satu-satunya penyimpanan untuk informasi penting. Kedaluwarsa otomatis ini juga menyederhanakan pembersihan ketika aplikasi seluler Anda dihapus instalasinya.

Pendaftaran harus berisi handel PNS terbaru untuk setiap perangkat/saluran. Karena handel PNS hanya dapat diperoleh di aplikasi klien pada perangkat, salah satu cara untuk mengelola pendaftaran adalah langsung di aplikasi klien tersebut. Di sisi lain, pertimbangan keamanan dan logika bisnis yang terkait dengan tag mungkin mengharuskan Anda mengelola pendaftaran di back-end aplikasi. Bagian berikut menjelaskan kedua pendekatan ini.

Manajemen Pendaftaran Dari Perangkat

Saat mengelola pendaftaran dari aplikasi klien, backend hanya bertanggung jawab untuk mengirim pemberitahuan. Aplikasi klien selalu memperbarui handel PNS, dan mendaftar ke tag. Gambar berikut mengilustrasikan pola ini.

Registration Management

Perangkat tersebut terlebih dahulu mengambil handel PNS dari PNS, kemudian mendaftar ke pusat pemberitahuan secara langsung. Setelah pendaftaran berhasil, backend aplikasi dapat mengirim pemberitahuan yang menargetkan pendaftaran tersebut. Untuk informasi selengkapnya tentang cara mengirim pemberitahuan, lihat Perutean dan Ekspresi Tag.

Perhatikan bahwa dalam hal ini, Anda hanya akan menggunakan hak Dengar untuk mengakses hub pemberitahuan Anda dari perangkat. Untuk informasi selengkapnya, lihat Keamanan.

Kode berikut mendaftarkan perangkat Anda menggunakan Referensi API Notification Hubs:

await hub.RegisterNativeAsync(channelUri, tags);
[hub registerNativeWithDeviceToken:deviceToken tags:nil completion:^(NSError* error) {
    if (error != nil) {
        NSLog(@"Error registering for notifications: %@", error);
    }
}];

hub.register(regid, tags);

Metode ini membuat atau memperbarui pendaftaran untuk perangkat tempat mereka dipanggil. Ini berarti bahwa untuk memperbarui handel atau tag, Anda harus menimpa seluruh pendaftaran. Ingatlah bahwa pendaftaran bersifat sementara, jadi Anda harus selalu memiliki penyimpanan yang dapat diandalkan (baik penyimpanan lokal di perangkat atau di back-end aplikasi Anda) dengan tag saat ini yang dibutuhkan perangkat tertentu. Lihat tutorial Breaking News untuk contoh lebih rinci tentang cara memperbarui pendaftaran.

Anda juga dapat menggunakan REST API untuk mendaftar dari perangkat. Untuk informasi selengkapnya, lihat Cara Menggunakan Notification Hubs REST Interface.

Tutorial skenario berikut memberikan panduan langkah demi langkah tentang mendaftar dari klien Anda:

Templat

Jika Anda ingin menggunakan Templat, setiap pendaftaran mewakili templat individual. Ini berarti bahwa jika perangkat Anda menggunakan dua templat, Anda harus mendaftarkan setiap templat secara independen dengan handel PNS dan kumpulan tagnya sendiri.

Untuk pendaftaran asli (yaitu, tanpa templat), metode pendaftaran untuk templat membuat atau memperbarui pendaftaran yang ada. Untuk menargetkan templat yang berbeda, Anda menyediakan nama templat saat mendaftar. Anda akan memberikan nama yang berbeda jika Anda ingin mempertahankan beberapa templat untuk perangkat yang sama.

Penting

Saat menggunakan templat, Anda tidak perlu mendaftarkan perangkat seperti yang ditunjukkan di bagian sebelumnya. Pendaftaran tersebut hanya digunakan jika Anda mengirim pemberitahuan asli (pemberitahuan yang dikirim dalam format khusus platform).

Kode berikut mendaftarkan perangkat Anda menggunakan Referensi API Notification Hubs:

await hub.RegisterTemplateAsync(channelUri, template, templateName, tags);
[hub registerTemplateWithDeviceToken:deviceToken name:templateName jsonBodyTemplate: template expiryTemplate:nil tags:nil completion:^(NSError* error) {
    if (error != nil) {
        NSLog(@"Error registering for notifications: %@", error);
    }
}];

hub.registerTemplate(regId, templateName, template, tags);

Perhatikan bahwa setiap panggilan pendaftaran menyediakan, selain handel PNS dan sekumpulan tag opsional, templat untuk isi pemberitahuan dan nama untuk templat. Selain itu, setiap platform dapat memiliki properti tambahan yang merupakan bagian dari templat. Dalam kasus Windows Store (menggunakan WNS) dan Windows Phone 8 (menggunakan MPNS), sekumpulan header tambahan dapat menjadi bagian dari templat. Dalam kasus APN, Anda dapat mengatur properti kedaluwarsa ke konstanta atau ke ekspresi templat.

Untuk petunjuk tentang cara mengubah bidang templat ini, lihat Referensi API atau API REST Notification Hubs.

Petak Sekunder untuk Aplikasi Windows Store

Untuk aplikasi klien Windows Store, mengirim pemberitahuan ke petak sekunder sama dengan mengirimnya ke yang utama. Pendaftaran asli dan templat didukung. Satu-satunya perbedaan adalah bahwa petak sekunder memiliki ChannelUri yang berbeda, yang ditangani SDK pada aplikasi klien Anda secara transparan.

Pada tingkat tinggi, semua informasi yang diberikan di bagian sebelumnya berfungsi dengan petak sekunder dengan memanggil metode yang sesuai pada objek yang terekspos pada properti kamus Microsoft.WindowsAzure.Messaging.NotificationHub.SecondaryTiles. Contohnya:

await hub.SecondaryTiles["myTileId"].RegisterNativeAsync(new string[] {"Yankees"});
await hub.SecondaryTiles["myTileId"].RegisterTemplateAsync(buildToastTemplate(), "toastTemplate", new string[] {"RedSox"});

Kamus SecondaryTiles menggunakan TileId yang sama yang digunakan untuk membuat objek SecondaryTiles di aplikasi Windows Store Anda.

Seperti halnya ChannelUri utama, ChannelUri petak sekunder dapat berubah kapan saja. Untuk menjaga pendaftaran aplikasi klien di hub pemberitahuan diperbarui, perangkat harus merefreshnya dengan ChannelUris ubin sekunder saat ini.

Catatan

Anda dapat menghapus petak sekunder saat aplikasi tidak aktif. Pendaftaran yang sesuai tidak akan menghasilkan pemberitahuan apa pun dan akan secara otomatis dihapus oleh hub pemberitahuan.

Kelemahan Mendaftar dari Perangkat

Mendaftar dari perangkat adalah metode paling sederhana, tetapi memiliki beberapa kelemahan.

Kelemahan pertama adalah bahwa aplikasi klien hanya dapat memperbarui tagnya saat aplikasi aktif. Misalnya, jika pengguna memiliki dua perangkat yang mendaftarkan tag yang terkait dengan tim olahraga, ketika perangkat pertama mendaftar untuk tag tambahan (misalnya, Seahawks), perangkat kedua tidak akan menerima pemberitahuan tentang Seahawks sampai aplikasi pada perangkat kedua dijalankan untuk kedua kalinya. Lebih umum, ketika tag dipengaruhi oleh beberapa perangkat, Anda disarankan untuk mengelola tag dari backend.

Kelemahan kedua manajemen pendaftaran dari aplikasi klien adalah bahwa, karena aplikasi dapat diretas, mengamankan pendaftaran ke tag tertentu memerlukan perawatan ekstra, seperti yang dijelaskan di bagian "Keamanan tingkat tag."

Manajemen Pendaftaran dari Back-end Aplikasi

Mengelola pendaftaran dari backend memerlukan penulisan kode tambahan. Aplikasi dari perangkat harus menyediakan handel PNS yang diperbarui ke backend setiap kali aplikasi dimulai (bersama dengan tag dan templat), dan backend harus memperbarui handel ini pada Bus Layanan. Gambar berikut mengilustrasikan desain ini.

Registration Management

Keuntungan mengelola pendaftaran dari backend adalah kemampuan untuk memodifikasi tag ke pendaftaran bahkan ketika aplikasi yang sesuai pada perangkat tidak aktif, dan untuk mengautentikasi aplikasi klien sebelum menambahkan tag ke pendaftarannya.

Dari backend aplikasi, Anda dapat melakukan operasi CRUDS dasar pada pendaftaran. Contohnya:

var hub = NotificationHubClient.CreateClientFromConnectionString("{connectionString}", "hubName");
            
// create a registration description object of the correct type, e.g.
var reg = new WindowsRegistrationDescription(channelUri, tags);

// Create
await hub.CreateRegistrationAsync(reg);

// Get by id
var r = await hub.GetRegistrationAsync<RegistrationDescription>("id");

// update
r.Tags.Add("myTag");

// update on hub
await hub.UpdateRegistrationAsync(r);

// delete
await hub.DeleteRegistrationAsync(r);

Anda juga dapat menggunakan Node atau REST API.

Penting

Backend harus menangani konkurensi antara pembaruan pendaftaran. Service Bus menawarkan kontrol konkurensi optimis untuk manajemen pendaftaran. Pada tingkat HTTP, ini diimplementasikan dengan penggunaan ETag pada operasi manajemen pendaftaran. Fitur ini secara transparan digunakan oleh Microsoft SDK, yang memberikan pengecualian jika pembaruan ditolak karena alasan konkurensi. Backend aplikasi bertanggung jawab untuk menangani pengecualian ini dan mencoba kembali pembaruan jika diperlukan.

Sumber Daya Tambahan

Tutorial skenario berikut memberikan panduan langkah demi langkah tentang mendaftar dari back-end aplikasi Anda: