繁体   English   中英

天蓝色通知中心-应用程序卸载

[英]azure notification hubs - app uninstall

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

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

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

如下图所示:

在此处输入图片说明

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

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

为什么您需要知道应用程序卸载?

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

当前使用集线器的准则如下:

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM