2

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

我已经设法让基础工作,但我不知道如何管理应用程序卸载故事。

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

如下图所示:

在此处输入图像描述

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

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

4

1 回答 1

4

为什么您需要了解应用程序卸载?

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

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

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

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

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

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

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

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

于 2014-03-27T18:01:04.140 回答