Azure通知中心 - 我应该将设备令牌保存在服务器中吗?

时间:2015-04-16 15:35:51

标签: push-notification apple-push-notifications google-cloud-messaging azure-notificationhub

我正在使用Azure通知中心向Android / iPhone设备发送推送通知。

我的总体流程是:

1.每次用户打开移动应用程序时,都会向PNS发出呼叫     (APNS / GCM)并获取更新的设备令牌 2.然后将设备令牌发送到服务器 3.服务器执行以下代码来注册令牌:

RegistrationDescription reg;

if (deviceType == DeviceType.Iphone)
{
    reg = new AppleRegistrationDescription(deviceToken, new string[] { userId.ToString() });
}
else
{
    reg = new GcmRegistrationDescription(deviceToken, new string[] { userId.ToString() });
}

reg = await hub.CreateRegistrationAsync(reg);

效果很好,但我的问题是,我是否应该出于某种原因在我的服务器中跟踪这些设备令牌?例如,将它们保存在表中供以后使用或我可能面临的其他场景,或者它打算使用这种方式(不将它们保存在表格中)。

1 个答案:

答案 0 :(得分:5)

您的代码会创建大量重复内容,重复内容我指的是具有相同PNS句柄的不同注册(APNS设备令牌或GCM注册ID)。 NH具有重复数据删除逻辑,可防止您的设备接收同一消息的多个副本,但会增加内部存储空间并减慢系统速度。

所以有建议:

  • 在每台设备上,您创建并存储一些类似GUID的标识符;

  • 您将该标识符与PNS句柄一起传递到服务器上;

  • 在服务器上执行hub.GetRegistrationByTagAsync(deviceGuid,100);

  • 如果返回了注册,则使用收到的PNS句柄进行更新 (即使PNS处理相同 - 只是为了防止过期);

  • 如果结果为空,则创建新的注册,将设备GUID指定为标记;

此外,还有新的API,您只需拨打一个电话,如果您不需要,则不会使用任何标签。 https://msdn.microsoft.com/en-us/magazine/dn948105.aspx查看主题案例2:后端管理通知中心中的设备。这可能不是很好的解释,但功能是新的。如果对该API有任何疑问,我可以回答。