在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阻止传递重复的通知。
答案 0 :(得分:0)
创建或更新安装是完全幂等的。这样你就可以 重试,无需担心重复注册
在这里,installation
是一个术语,用于描述增强的注册(使用Azure的通知中心),以将设备的PNS与标签和/或模板相关联。关于这种installation
的行为,此处使用“同等性”。
这意味着每次您的应用启动或进入前台时,您都可以为此类注册简单地调用相同的代码,而不必担心通过Notification Hub处理PNS的更改或以前的注册状态。
这很好,因为传统的registration
模型可以导致通知中心中同一设备和用户的重复注册。 Installation
模型无法做到这一点。
问。当您在Notification Hub中为一个具有相同标签的多个注册分配了一个PNS并尝试通过定位标签来推送通知时,会发生什么情况?
A。。Azure通知中心具有重复数据删除逻辑,可以防止重复的通知发出。
问。如果您有多个应用程序但只有一个“通知中心”,则可以以任何方式强制执行多个通知(针对同一标签)吗?
A 。如果您可以获得多个设备令牌,则可以。但是,在iOS中,由于APNS一次仅发布一个有效的设备令牌,因此将不可能。此外,iOS应用程序具有自己的捆绑包标识符,因此也具有自己的特定推送证书。而且,通知中心不支持多个证书。但是在Android的情况下,如果您使用registration
模型并使用较旧的GCM注册ID,则可以强制使用该ID,因为它们经常更新并且不那么容易过期。
希望有帮助!干杯!