Share via


Kayıt Yönetimi

Bu konuda, anında iletme bildirimleri almak için cihazların bildirim hub'larına nasıl kaydedilecekleri açıklanmaktadır. Bu konu başlığı altında üst düzeydeki kayıtlar açıklanır ve ardından cihazları kaydetmek için iki ana desen tanıtılır: cihazdan doğrudan bildirim hub'ına kaydolma ve uygulama arka ucu aracılığıyla kaydetme.

Cihaz Kaydı nedir?

Kayıt, bir bildirim hub'ının alt varlığıdır ve cihaz PNS tanıtıcısını (ChannelURI, cihaz belirteci, GCM registrationId gibi bir Platform Bildirim Hizmeti tanıtıcısı) etiketler ve büyük olasılıkla bir şablonla ilişkilendirir. Etiketler, bildirimleri doğru cihaz tanıtıcılarına yönlendirmek için kullanılır. Daha fazla bilgi için bkz . Yönlendirme ve Etiket İfadeleri. Şablonlar kayıt başına dönüştürme uygulamak için kullanılır. Daha fazla bilgi için bkz. Şablonlar.

Kayıtların geçici olduğunu unutmayın. İçerdikleri PNS tanıtıcılarına benzer şekilde kayıtların süresi dolar. Bildirim Hub'ına kayıt için yaşam süresini en fazla 90 gün olacak şekilde ayarlayabilirsiniz. Bu sınır, bunların düzenli aralıklarla yenilenmesi ve ayrıca önemli bilgiler için tek depo olmaması gerektiği anlamına gelir. Bu otomatik süre sonu, mobil uygulamanız kaldırıldığında temizlemeyi de basitleştirir.

Kayıtlar, her cihaz/kanal için en son PNS tanıtıcısını içermelidir. PNS tanıtıcıları yalnızca cihazdaki istemci uygulamasından alınabildiğinden, kayıtları yönetmenin bir yolu doğrudan bu istemci uygulamasındadır. Öte yandan, etiketlerle ilgili güvenlik konuları ve iş mantığı, uygulama arka ucunda kaydı yönetmenizi gerektirebilir. Aşağıdaki bölümde bu iki yaklaşım açıklanmaktadır.

Cihazdan Kayıt Yönetimi

İstemci uygulamalarından kayıtları yönetirken arka uç yalnızca bildirim göndermekten sorumludur. İstemci uygulamaları PNS tanıtıcılarını güncel tutar ve etiketlere kaydolabilir. Aşağıdaki resimde bu desen gösterilmektedir.

Registration Management

Cihaz önce PNS tanıtıcısını PNS'den alır, ardından doğrudan bildirim hub'ına kaydeder. Kayıt başarılı olduktan sonra, uygulama arka ucu bu kaydı hedefleyen bir bildirim gönderebilir. Bildirim gönderme hakkında daha fazla bilgi için bkz . Yönlendirme ve Etiket İfadeleri.

Bu durumda, cihazdan bildirim hub'larınıza erişmek için yalnızca Dinleme haklarını kullanacağınızı unutmayın. Daha fazla bilgi için bkz . Güvenlik.

Aşağıdaki kod Notification Hubs API Başvurularını kullanarak cihazınızı kaydeder:

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);

Bu yöntemler, çağrıldıkları cihaz için bir kayıt oluşturur veya güncelleştirir. Bu, tanıtıcıyı veya etiketleri güncelleştirmek için kaydın tamamının üzerine yazmanız gerektiği anlamına gelir. Kayıtların geçici olduğunu unutmayın, bu nedenle her zaman belirli bir cihazın ihtiyaç duyduğu geçerli etiketleri içeren güvenilir bir deponuz (cihazdaki yerel depolama alanı veya uygulama arka ucunuz) olmalıdır. Kayıtları güncelleştirme hakkında daha ayrıntılı örnekler için Son Dakika Haberleri öğreticisine bakın.

Cihazdan kaydolmak için REST API'lerini de kullanabilirsiniz. Daha fazla bilgi için bkz. Notification Hubs REST Arabirimini Kullanma.

Aşağıdaki senaryo öğreticileri, istemcinizden kaydolma konusunda adım adım yönergeler sağlar:

Şablonlar

Şablonları kullanmak istiyorsanız, her kayıt tek bir şablonu temsil eder. Bu, cihazınızda iki şablon kullanılıyorsa her şablonu kendi PNS tanıtıcısı ve etiket kümesiyle bağımsız olarak kaydetmeniz gerektiği anlamına gelir.

Yerel kayıtlar için (yani şablon olmadan), şablonlar için kayıt yöntemleri mevcut kayıtları oluşturur veya güncelleştirir. Farklı şablonları hedeflemek için, kayıt sırasında bir şablon adı sağlarsınız. Aynı cihaz için birden çok şablon bulundurmak istiyorsanız farklı adlar sağlayacaksınız.

Önemli

Şablonları kullanırken, önceki bölümde gösterildiği gibi cihazınızı kaydetmeniz gerekmez. Bu kayıt yalnızca yerel bildirimler (platforma özgü biçimde gönderilen bildirimler) gönderdiğinizde kullanılır.

Aşağıdaki kod Notification Hubs API Başvurularını kullanarak cihazınızı kaydeder:

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);

Her kayıt çağrısının PNS tanıtıcısına ve isteğe bağlı etiket kümesine ek olarak bildirimin gövdesi için bir şablon ve şablon için bir ad sağladığını unutmayın. Ayrıca, her platform şablonun parçası olan ek özelliklere sahip olabilir. Windows Store (WNS kullanarak) ve Windows Phone 8 (MPNS kullanılarak) durumunda, şablonun bir parçası ek bir üst bilgi kümesi olabilir. APN'ler söz konusu olduğunda, bir süre sonu özelliğini sabit veya şablon ifadesi olarak ayarlayabilirsiniz.

Bu şablon alanlarını değiştirme yönergeleri için bkz. API Başvuruları veya Notification Hubs REST API'leri.

Windows Store Uygulamaları için İkincil Kutucuklar

Windows Store istemci uygulamaları için, ikincil kutucuklara bildirim göndermek, bunları birincil kutucuklara göndermekle aynıdır. Hem yerel hem de şablon kayıtları desteklenir. Tek fark, ikincil kutucukların farklı bir ChannelUri'ye sahip olması ve istemci uygulamanızdaki SDK'nın saydam bir şekilde işlemesidir.

Üst düzeyde, önceki bölümlerde sağlanan tüm bilgiler, Microsoft.WindowsAzure.Microsoft Mesajlaşma sözlük özelliğinde kullanıma sunulan nesnelerde ilgili yöntemleri çağırarak ikincil kutucuklarla çalışır. NotificationHub.SecondaryTiles. Örnek:

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

SecondaryTiles sözlüğü, Windows Store uygulamanızda SecondaryTiles nesnesini oluşturmak için kullanılan TileId değerini kullanır.

Birincil ChannelUri'de olduğu gibi, ikincil kutucukların ChannelUri'leri her an değişebilir. Bildirim hub'ında istemci uygulama kayıtlarını güncel tutmak için cihazın bunları ikincil kutucukların geçerli ChannelUri'leriyle yenilemesi gerekir.

Not

Uygulama etkin olmadığında ikincil kutucukları silebilirsiniz. İlgili kayıtlar hiçbir bildirimle sonuçlanmaz ve bildirim hub'ları tarafından otomatik olarak silinir.

Cihazdan Kaydetmenin Dezavantajları

Cihazdan kaydolmak en basit yöntemdir ancak bazı dezavantajları vardır.

İlk dezavantajı, bir istemci uygulamasının etiketlerini yalnızca uygulama etkin olduğunda güncelleştirebiliyor olmasıdır. Örneğin, bir kullanıcının spor takımları ile ilgili etiketleri kaydeden iki cihazı varsa, ilk cihaz ek bir etikete (örneğin Seahawks) kaydolduğunda ikinci cihaz, ikinci cihazdaki uygulama ikinci kez yürütülene kadar Seahawks hakkındaki bildirimleri almaz. Daha genel olarak, etiketler birden çok cihazdan etkilendiğinde, etiketleri arka uçtan yönetmek tercih edilen bir seçenektir.

İstemci uygulamasından kayıt yönetiminin ikinci dezavantajı, uygulamaların ele geçirilebildiği için kaydın belirli etiketlerle güvenli hale getirilmesinin "Etiket düzeyi güvenlik" bölümünde açıklandığı gibi ek özen gerektirmesidir.

Uygulama Arka Ucundan Kayıt Yönetimi

Kayıtların arka uçtan yönetilmesi için ek kod yazılması gerekir. Cihazdaki uygulama, uygulama her başlatıldığında arka uçta güncelleştirilmiş PNS tanıtıcısını sağlamalıdır (etiketler ve şablonlarla birlikte) ve arka uç Service Bus bu tanıtıcıyı güncelleştirmelidir. Aşağıdaki resimde bu tasarım gösterilmektedir.

Registration Management

Kayıtları arka uçtan yönetmenin avantajları, cihazdaki ilgili uygulama etkin olmadığında bile etiketleri kayıtlarda değiştirebilme ve kaydına etiket eklemeden önce istemci uygulamasının kimliğini doğrulayabilme özelliğidir.

Uygulama arka ucunuzdan, kayıtlar üzerinde temel CRUDS işlemleri gerçekleştirebilirsiniz. Örnek:

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);

Node veya REST API'lerini de kullanabilirsiniz.

Önemli

Arka uç, kayıt güncelleştirmeleri arasındaki eşzamanlılığı işlemelidir. Service Bus, kayıt yönetimi için iyimser eşzamanlılık denetimi sunar. HTTP düzeyinde bu, kayıt yönetimi işlemlerinde ETag kullanımıyla uygulanır. Bu özellik, eşzamanlılık nedeniyle bir güncelleştirme reddedilirse özel durum oluşturan Microsoft SDK'ları tarafından saydam olarak kullanılır. Uygulama arka ucu bu özel durumları işlemek ve gerekirse güncelleştirmeyi yeniden denemekle sorumludur.

Ek Kaynaklar

Aşağıdaki senaryo öğreticileri, uygulama arka ucunuzdan kaydolma konusunda adım adım yönergeler sağlar: