每台设备都有RegistrationId吗?

时间:2016-03-03 02:05:34

标签: push-notification azure-mobile-services azure-notificationhub

我正在使用this tutorial作为指南,从我的后端实现Azure Notification Hub的注册。我的应用程序将需要身份验证,但用户可以注销并使用其他帐户重新登录。 RegistrationId应该基于独特设备还是用户和设备的组合?换句话说,每次注销时我应该清除RegistrationId吗?用户何时注销,以另一个用户身份重新登录,然后以原始用户身份重新登录,我们是否应该创建新的RegistrationId或者仍然使用原始用户?

1 个答案:

答案 0 :(得分:2)

GCM documentation for registering client apps声明如下:

  

开发人员永远不应该注销客户端应用程序作为注销或机制   用于在用户之间切换,原因如下:

     
      
  • 注册令牌与特定登录无关   用户。如果客户端应用程序取消注册然后重新注册,则应用程序可以   收到相同的注册令牌或不同的注册令牌。
  •   
  • 取消注册和重新注册每个最多可能需要五分钟   传播。在此期间,由于此消息可能会被拒绝   未注册的状态,消息可能会转到错误的用户。
  •   
     

确保邮件发送给目标用户:

     
      
  • 应用服务器可以维护当前用户与用户之间的映射   注册令牌。
  •   
  • 然后客户端应用可以检查以确保这一点   它收到的消息与登录用户匹配。
  •   

这也适用于其他推送通知服务,例如的iOS。

推送通知服务注册可识别单个设备上的特定应用。

使用Azure通知中心,您可以在单个设备上为特定应用程序进行技术上的多个Azure Notification HUb注册,甚至可以在登录和注销时注册和取消注册(仅限Azure通知中心,而不是平台特定的推送通知系统),但这容易出错,有更好的方法:

  • 如果您希望能够接收推送通知,请立即在Azure通知中心注册您的应用,如果您希望一般停止接收推送通知,则只取消注册。实际上你可以在app start注册,永远不会注销。
  • 如果用户登录,请在注册时添加带有用户ID的标签(例如“user:123”),如果他退出,请再次删除该标签。
  • 这样,您只需使用代码来处理某个用户登录的设备,请参阅Azure Notification Hubs Routing and Tag Expressions

修改标签也在the tutorial you linked中描述。