Share via


註冊管理

本主題說明如何向通知中樞註冊裝置,以接收推播通知。 本主題描述高階註冊,然後介紹註冊裝置的兩個主要模式:直接從裝置註冊到通知中樞,以及透過應用程式後端註冊。

什麼是裝置註冊

註冊是通知中樞的子實體,並將裝置 PNS 控制碼關聯 (平臺通知服務控制碼,例如 ChannelURI、裝置權杖、GCM registrationId) 標記和可能為範本。 標記是用來將通知路由至一組正確的裝置控制代碼。 如需詳細資訊,請參閱 路由與標記運算式。 範本是用來實作每一註冊的轉換。 如需詳細資訊,請參閱 範本

請務必注意,註冊是暫時性的。 類似于其包含的 PNS 控制碼,註冊會過期。 您可以在通知中樞上設定註冊存留時間,最多 90 天。 此限制表示它們必須定期重新整理,而且不應該是重要資訊的唯一存放區。 當您的行動應用程式卸載時,此自動到期也會簡化清除作業。

註冊必須包含每個裝置/通道的最新 PNS 控制碼。 因為 PNS 控制碼只能在裝置上的用戶端應用程式中取得,所以管理註冊的其中一種方式是直接在該用戶端應用程式上。 另一方面,與標籤相關的安全性考慮和商務邏輯可能需要您在應用程式後端管理註冊。 下一節說明這兩種方法。

從裝置註冊管理

從用戶端應用程式管理註冊時,後端只會負責傳送通知。 用戶端應用程式會將 PNS 控制碼保持在最新狀態,並註冊至標記。 下圖說明這個模式。

Registration Management

裝置會先從 PNS 抓取 PNS 控制代碼,然後直接向通知中心進行註冊。 註冊成功之後,app 後端即可傳送以該註冊為目標的通知。 如需有關如何傳送通知的詳細資訊,請參閱 路由與標記運算式

請注意,在此情況下,您將只使用「接聽」權限從裝置存取通知中樞。 如需詳細資訊,請參閱安全性

下列程式碼會使用通知中樞 API 參考來註冊您的裝置:

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

這些方法會建立或更新其所在呼叫位置的裝置註冊。 這表示為了更新控制代碼或標記,您必須覆寫整個註冊。 請記住,註冊是暫時性的,因此您應該一律擁有可靠的存放區, (裝置上的本機儲存體或應用程式後端) 特定裝置所需的目前標籤。 如需如何更新註冊的詳細範例,請參閱 即時新聞 教學課程。

您也可以使用 REST API 從裝置註冊。 如需詳細資訊,請參閱 如何使用通知中樞 REST 介面

下列案例教學課程提供從用戶端註冊的逐步指引:

範本

如果您想要使用 範本,每個註冊都代表個別範本。 這表示如果您的裝置使用兩個範本,您必須使用自己的 PNS 控制碼和一組標記獨立註冊每個範本。

針對原生註冊 (,也就是若沒有範本) ,範本的註冊方法會建立或更新現有的註冊。 若要以不同的範本為目標,您可以在註冊時提供範本名稱。 如果您想要維護相同裝置的多個範本,您將提供不同的名稱。

重要

使用範本時,您不需要註冊裝置,如上一節所示。 只有在您將原生通知傳送 (以平臺特定格式傳送的通知) 時,才會使用該註冊。

下列程式碼會使用通知中樞 API 參考來註冊您的裝置:

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

請注意,除了 PNS 控制碼和選擇性標記集合之外,每個註冊呼叫都會提供通知本文的範本,以及範本的名稱。 此外,每個平臺都可以有屬於範本一部分的其他屬性。 如果使用 WNS) Windows Microsoft Store (,並使用 MPNS) Windows Phone 8 (,則一組額外的標頭可以是範本的一部分。 如果是 APN,您可以將到期屬性設定為常數或範本運算式。

如需如何修改這些範本欄位的指示,請參閱 API 參考通知中樞 REST API

Windows 市集應用程式的次要磚

就「Windows 市集」用戶端應用程式而言,將通知傳送給次要磚與將通知傳送給主要磚一樣。 支援原生和範本註冊。 唯一的差異在於次要磚有不同的 ChannelUri,而用戶端應用程式上的 SDK 會以透明方式處理。

概括而言,上一節中提供的所有資訊都可以使用次要磚,方法是在字典屬性 Microsoft.WindowsAzure.Messaging.NotificationHub.SecondaryTiles上公開的物件上呼叫對應的方法。 例如:

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

SecondaryTiles字典會使用相同的TileId,用來在Windows Microsoft Store應用程式中建立SecondaryTiles物件。

如同主要 ChannelUri,次要磚的 ChannelUri 也會隨時變更。 若要在通知中樞內保持用戶端應用程式註冊更新,裝置必須使用次要磚的目前 ChannelUris 重新整理它們。

注意

當應用程式處於非使用中狀態時,您可以刪除次要磚。 對應的註冊不會產生任何通知,而且會自動由通知中樞刪除。

從裝置註冊的缺點

從裝置註冊是最簡單的方法,但有一些缺點。

第一個缺點是用戶端 app 只有在 app 處於使用中時,才能更新其標記。 例如,如果使用者有兩個裝置註冊與運動團隊相關的標籤,當第一個裝置註冊額外的標記 (例如 Seahawks) 時,第二個裝置將不會收到有關 Seahawk 的通知,直到第二個裝置上的應用程式第二次執行為止。 更普遍來說,當標記受多個裝置影響時,從後端管理標記是一個較理想的選項。

從用戶端 app 管理註冊的第二個缺點是,由於 app 可能被入侵,因此如<標記層級安全性>一節所述,保護特定標記的註冊必須特別小心。

應用程式後端的註冊管理

從後端管理註冊需要撰寫額外的程式碼。 來自裝置的應用程式必須在每次應用程式啟動時 (提供已更新的 PNS 控制碼給後端,以及標籤和範本) ,而後端必須在服務匯流排上更新此控制碼。 下圖說明這個設計。

Registration Management

從後端管理註冊的優點是即使裝置上的對應應用程式處於非使用中狀態,也能夠將標籤修改為註冊,以及在將標籤新增至其註冊之前驗證用戶端應用程式。

您可以從 app 後端,對註冊執行基本 CRUD 作業。 例如:

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 或 REST API。

重要

後端必須處理註冊更新之間的並行存取。 「服務匯流排」可提供開放式並行存取控制來管理註冊。 在 HTTP 層級,這會在註冊管理作業上使用 ETag 來實作。 Microsoft SDK 會在背景使用這項功能,如果因並行存取而導致更新被拒,將會擲回例外狀況。 App 後端會負責處理這些例外狀況,並視需要重試更新。

其他資源

下列案例教學課程提供從應用程式後端註冊的逐步指引: