Azure 通知中心 - 安装是不是可以防止重复通知?

Posted

技术标签:

【中文标题】Azure 通知中心 - 安装是不是可以防止重复通知?【英文标题】:Azure Notification Hub - do installations prevent duplicate notifications?Azure 通知中心 - 安装是否可以防止重复通知? 【发布时间】:2019-04-02 16:00:28 【问题描述】:

在描述注册管理的article 中声明:

以下是使用安装的一些主要优势:

创建或更新安装是完全幂等的。这样你就可以 重试,不用担心重复注册

这到底是什么意思?我认为这并不意味着安装具有与注册不同的“CreateOrUpdate”,因为那里也存在类似的方法 - “CreateOrUpdateRegistrationAsync”。

假设我创建了两个具有不同安装 ID 但相同 PNS 句柄(pushChannel 属性)和相同标签“foo”的安装。我将使用 SendTemplateNotificationAsync 方法发送通知,使用 'foo' 标签来选择我的通知目标。

它将与我的两个安装相匹配,因为它们都包含标签“foo”并且都具有相同的 PNS 句柄。在这种情况下,设备会收到两个通知,还是 Azure 会阻止发送重复的通知?

在同一篇文章中,我链接了代码示例,使用即将注册的 PNS 句柄检查现有注册:

// make sure there are no existing registrations for this push handle (used for ios and android)    
    string newRegistrationId = null;
    var registrations = await hub.GetRegistrationsByChannelAsync(pushChannel.Uri, 100);

但他们没有在安装示例中检查这一点,这再次表明 Azure 阻止了重复通知的传递。

【问题讨论】:

【参考方案1】:

创建或更新安装是完全幂等的。这样你就可以 重试,不用担心重复注册

这里,installation 是一个术语,用于描述增强注册(使用 Azure 的通知中心)以将设备的 PNS 与标签和/或模板相关联。这里的“幂等性”用于installation 的行为。 这意味着您可以在每次应用程序启动或进入前台时简单地为此类注册调用相同的代码,而无需担心处理 PNS 的更改或以前在通知中心的注册状态。 这很好,因为经典的registration 模型会导致在通知中心重复注册同一设备和用户。 Installation 模型不这样做。

问。如果您将一个 PNS 分配给通知中心中具有相同标签的多个注册,并且您尝试通过定位标签来推送通知,会发生什么情况? A. Azure 通知中心具有重复数据删除逻辑,可防止重复通知发出。

问。如果您有多个应用程序但只有一个通知中心,您能否以任何方式强制多个通知(针对同一个标签)? A. 如果您可以获得多个设备令牌,则可以。但是,对于 iOS,由于 APNS 一次只发出一个有效的设备令牌,因此这是不可能的。此外,iOS 应用程序有自己的包标识符,因此有自己的特定推送证书。而且,通知中心不支持多个证书。但在 Android 的情况下,如果您使用 registration 模型并使用较旧的 GCM 注册 ID,则可以强制它,因为它们经常更新并且不会那么容易过期。

希望对您有所帮助!干杯!

【讨论】:

以上是关于Azure 通知中心 - 安装是不是可以防止重复通知?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 通知中心:集线器之间的安装 ID 是唯一的吗?

Xamarin iOS 在 Azure 中是不是可以为同一个 Web API 提供两个通知中心,一个处于生产模式,另一个处于开发模式?

Azure 通知中心:SendTemplateNotificationAsync 是不是适用于 .net Core

Azure 通知中心包是不是与 .NET Core 兼容?

Azure 服务总线通知中心是不是与 websockets 和 javascript 一起使用?

Azure 通知中心:安装 ID 以及如何处理应用程序的卸载