首页 > 解决方案 > 如何停止在 Azure 通知中心为同一个 DeviceToken 生成多个 RegistrationId?

问题描述

使用通知中心时:

var registration1 = await hub.CreateAppleNativeRegistrationAsync(cordovaDeviceToken);
var registration2 = await hub.CreateAppleNativeRegistrationAsync(cordovaDeviceToken);

当它是相同的 deviceToken 时,为什么会在集线器中创建两个不同的注册?

我如何知道设备令牌是否已经注册?

我可以自己保存 cordovaDeviceToken 并检查它,但我认为 NotificationHub 正在为我安排。

为什么要为同一设备提供两个registrationId?

我正在寻找一个简单的例子来实现 RegisterOrUpdate 而无需创建自己的数据库?

标签: azurepush-notificationnotificationsazure-notificationhub

解决方案


var registration1 = await hub.CreateAppleNativeRegistrationAsync(cordovaDeviceToken);

根据您的代码,我假设您在后端管理注册。

我如何知道设备令牌是否已经注册?

您可以利用GetRegistrationsByChannelAsync根据您cordovaDeviceToken检查当前 deviceToken 是否已注册来获取注册。或者,您可以在创建新注册之前使用DeleteRegistrationsByChannelAsync根据您的 deviceToken 删除注册。

注意:top for 参数GetRegistrationsByChannelAsync表示单个请求返回的注册数,最大为 100,您可以使用fromcontinuationToken响应获取下一页注册。

为什么要为同一设备提供两个registrationId?

根据我的理解,一个 deviceToken 的单个注册就足够了,相关的 SDK 不会检查是否存在相同的 pnsHandle,您需要在代码中明确检查它。

我正在寻找一个简单的例子来实现 RegisterOrUpdate 而无需创建自己的数据库?

您可以按照教程:使用 Azure 通知中心向特定用户发送通知以获取相关代码片段。


推荐阅读