1

我正在尝试将 Azure 通知中心用于推送通知。根据MSDN 文章,注册管理有两种方法。在教程中,它解释了第一种方法 - 客户端应用程序中的注册管理。但是,它看起来更适合我的需要第二种方法 - 应用后端中的注册管理。

我找不到任何文档或示例如何做到这一点。具体来说,我对与 iOS 移动应用程序的集成感兴趣。
据我了解,注册流程应该是这样的:

  1. 原生应用程序在启动期间向后端发送 HTTP 请求,传递设备 ID 和应用程序名称。
  2. 后端假设在通知中心注册设备(我猜使用 CreateAppleTemplateRegistration 进行模板通知)
  3. 一旦注册过期,后端负责更新注册

这是正确的吗?有人知道后端注册管理的示例或文档吗?

4

1 回答 1

2

更新

该方案现在已在以下位置进行了充分解释: http: //www.windowsazure.com/en-us/manage/services/notification-hubs/notify-users-aspnet/

下面的解决方案不再起作用,因为通知中心不在预览版中,并且 .NET SDK 中有一些重大更改。

旧答案

您概述的解决方案是正确的。需要注意的是,从应用程序后端进行注册管理时,您必须将当前注册的令牌存储在某处(通常在设备应用程序中,但在后端的安装表中也可以)。

假设您将“旧”令牌存储在设备上,您必须实现以下逻辑。

在后端

一个接受两个参数的端点:“oldToken”、“newToken”。基本上,这要么创建一个新注册(根据需要更改模板/本机或标签),要么更新当前注册。

var hubClient = NotificationHubClient.CreateClientFromConnectionString(connectionString, "<notification hub name>");
if (hubClient.RegistrationExists("oldDeviceToken"))
{
    hubClient.UpdateRegistrationsWithNewPnsHandle("oldDeviceToken", "newDeviceToken");
} else
{
    hubClient.CreateAppleNativeRegistration("newDeviceToken", new string[] {"myTag"});
}

在您修改当前注册、添加标签、修改模板的情况下,可能会有更多场景……在 hubClient 上,您拥有所有这些方法,它们是不言自明的。本文末尾提供了一些高级信息。

在设备应用程序中

实现以下逻辑:

  • 如果没有存储旧令牌,则使用新令牌(backendEndpoint(newToken,newToken))联系后端,当它返回时将令牌存储在本地
  • 如果有旧令牌,并且它与新令牌不同,请使用新旧令牌(backendEndpoint(oldToken,newToken))联系后端,当调用完成时将新令牌存储在本地。
  • 如果有旧token和新token没有区别,但最后一次注册发生在30多天前,用旧token调用后端(backendEndpoint(oldToken, oldToken))。

我们将尽快为此场景添加一个示例。

于 2013-02-27T18:52:35.763 回答