windows azure 通知中心标签

Posted

技术标签:

【中文标题】windows azure 通知中心标签【英文标题】:windows azure notifications hub TAGS 【发布时间】:2014-02-12 19:32:01 【问题描述】:

我正在使用 Windows Azure Notification Hub 和 android,通过 GCM 测试通知推送服务。 我正在使用标签,从与 Windows Azure 集成的 Web 应用程序(后端)推送通知,并从 Android 应用程序订阅以收听这些标签。

问题是:我不知道如何取消订阅这些标签。即使我在模拟器中重新启动应用程序并且没有在 GCM 或 Azure 中注册,我也会继续收到我之前订阅的每个标签的通知。

这些标签存储在哪里?我怎样才能停止收听这些标签?

【问题讨论】:

基于构建讨论 (channel9.msdn.com/Events/Build/2014/2-616) 我刚刚听完标签只存储在 Hub 后端并且在每次注册时都会被覆盖,您是否尝试发送空标签列表(我有还没有查看 API,所以不确定你会怎么做)? 【参考方案1】:

您还可以使用 Visual Studio 删除 azure 通知中心注册(服务器资源管理器、azure、集线器、从设备列表中删除)。

如果您的 GCM 重新生成(或过期)通知中心在尝试在不存在的 GCM 上发送消息时删除了注册。

附:每次重新启动应用程序时,都不应在集线器上创建新注册。更好的方法 - 将 regId 存储在设备上并在背面使用它并检查是否存在注册。

【讨论】:

不知道您可以在 Visual Studio 中查看 Hub 注册,谢谢!奇怪的是,使用不同的标签注册相同的设备 ID 有时会创建多个注册(而不是覆盖)。 因为 DeviceId 不是用于 azure 通知中心注册的 UniqId(它有注册 ID)))如果您想覆盖 - 您应该保留注册 ID(例如在移动设备上),并在创建新注册之前 -检查“如果注册存在,则获取并更新,否则生成新ID并创建”。 谢谢 - 我试图寻找一种方法来做到这一点,但只有高级 register/unregister 方法在 Android API 中似乎可用 NotificationHub【参考方案2】:

一旦您从 GCM 收到注册 ID,即使应用程序重新启动,它也可用于随时向您的应用程序发送消息。

基本上,当您调用 NotificationHub.register(...) 时,指定的注册 ID 和标记将发送到您的 Azure 通知中心 (NH)。然后,当您的后端向标记“A”发送消息时,NH 只会扫描其注册列表以查找标记“A”。然后所有带有标签“A”的注册都通过 GCM 端点与消息一起发送。因此,您的应用程序会收到该消息。

要停止接收通知,您只需调用 NotificationHub.unregister(...)。

GCM 也可以在一段时间后使注册 ID 过期,然后 NH 会找出并从其数据库中删除该 ID。

此外,如果应用程序在 90 天内未处于活动状态,则 NH 会自动从数据库中删除已过期的注册 ID。

【讨论】:

以上是关于windows azure 通知中心标签的主要内容,如果未能解决你的问题,请参考以下文章

缺少通知中心设备注册

Azure 通知中心计费

Azure 通知中心 - 从移动应用注册并通过应用后端发送通知

如何在 iOS 的 Azure 移动应用通知中心注册目标推送通知

Azure 通知中心根据标签发送给用户子集

尝试使用 Azure 通知中心批量发送时出现 403 禁止