【问题标题】:azure notification hubs - app uninstall天蓝色通知中心 - 应用程序卸载
【发布时间】:2014-03-28 02:01:04
【问题描述】:

我想使用 Azure 通知中心向在 iOS、Android 和 Windows Phone 上运行的我的应用程序的用户发送推送通知。

我已设法使基础工作正常,但我不知道如何管理应用卸载故事。

启动时,移动应用程序将调用我的 Identity Svc 以获取 Auth Token。 然后它调用其平台通知服务(例如 Google Cloud Messaging、APNS)以获取 PNS 令牌。 将令牌保存到本地存储后,它将调用后端 Contact Svc 来注册客户的设备。此服务将为设备创建对 Azure 通知中心的订阅。

如下图所示:

稍后,后端发布服务将调用联系服务,请求针对特定用户 ID 的推送通知。联系服务将在通知中心查找分配给标签的 Id 并发送推送请求。

有哪些选项可用于确定客户何时卸载应用?在通知中心调用“发送”时是否只是捕获错误的问题?我想如果只发送给单个用户,这可能会起作用,但我的意图是将某些消息类型发布给多个订阅者。在设备初始注册时,将为用户 ID 的标签创建订阅,但也会为更通用的标签(例如“新促销”)创建订阅。发布服务稍后会希望向所有设备发出“新促销”通知。

【问题讨论】:

  • 您好 - 我也有同样的问题。当我在 ios 上卸载应用程序时,推送注册会自动从我的通知中心注册中删除。虽然当我在 android 上卸载应用程序时,通知中心会出于某种原因保留注册 - 真的不知道为什么(可能是因为我的应用程序处于测试模式并且没有运行或者还有其他原因???)。现在的问题是第二次安装从谷歌获得了一个新的句柄(deviceToken),因此我的服务器发出了一个新的注册,这导致了多个推送消息。任何想法如何解决这个问题?欢迎! @eliodamaggio

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


【解决方案1】:

为什么需要了解应用卸载情况?

通知中心会自动使已卸载设备的注册过期。 此外,我会完全避免在您的服务中保留 PNSHandles。

当前使用集线器的指南如下:

将与设备关联的注册的registrationId存储在本地存储中。这使您能够通过单个更新调用来更新标签和通道信息。 由于移动连接并不总是可靠的,因此最好避免在无法将registrationId 存储在本地存储中的情况下创建新注册。这可能会导致设备多次注册,从而导致重复通知。您可以通过使用创建注册 ID 和创建或更新注册 REST API 来实现此目的。 第一个 API 返回一个registrationId,而不实际创建注册。当 ID 已安全存储在设备存储中后,设备可以调用创建或更新注册 API。

所以我会让您的 ContactSvc 公开两个功能: a)创建注册ID(只需调用集线器即可) b) 创建或更新给定的注册(registrationId、pnsHandle、标签?)

然后您的设备将 regId 保存在其存储中,在从 PNS 获取句柄后进行广告,如果 regId 不存在,则使用端点 a) 创建一个新的,然后使用 pnsHandle 和标签更新注册。

请注意,通过这种方式,您的服务无需保留句柄或 UUID,也无需担心应用卸载。

如果您要跟踪用户,一种方法是定期(每月一次?)检查您的中心是否仍然存在注册...

如果不清楚,您可以通过@eliodamaggio 与我联系。

【讨论】:

  • 感谢您的 cmets Elio,我发现它们很有帮助。我不清楚通知中心如何“自动过期注册”,请您详细说明。
  • 我知道了 - 在集线器上注册最多可以存活 90 天。不确定如何设置 ttl?
  • 我刚卸载了一个应用,注册ID还在通知中心。
  • 嗨,从我的安卓设备卸载应用程序后,我也遇到了同样的问题。我已经将 xamarin android 与 azure 推送通知中心一起使用。我该如何解决这个问题。
  • 2020 和相同的交易 - 使用 Firebase 令牌注册。重新安装后会有一个新的,但旧的注册不会从 Azure 中消失。我们可以对存储中的某些 ID 进行手动清理,但许多 ID 都消失了,因此无法以编程方式取消注册,也无法通过我可以看到的 Azure 站点进行注销。所以有很多死/没有意义的设备。微软似乎忽略了一个有利可图的问题,因为他们根据设备数量销售等级计划。
猜你喜欢
  • 2015-09-25
  • 2019-09-28
  • 2015-01-21
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2021-03-28
  • 2012-08-26
  • 2016-11-08
相关资源
最近更新 更多