服务器中的Firebase令牌管理

时间:2016-11-16 09:46:57

标签: android firebase android-notifications firebase-cloud-messaging

我还是新的firebase和android通知。我希望能够根据某些规则向单个用户发送通知。到目前为止我一直在阅读的是,可以使用以下内容生成令牌:

FirebaseInstanceId.getInstance().getToken()

然后,令牌需要在到期时的某个时刻刷新。

如果可能的话,如何设置这些令牌的到期日期?如果有一千个用户让他们的令牌在同一时间刷新,那么我需要为我的应用服务器做一千次这些令牌的写入。是否存在针对此问题的已知扩展解决方案(例如,保留相同的令牌但仅刷新其到期时间)?

2 个答案:

答案 0 :(得分:3)

Firebase documentation on monitoring the token列举了原因:

  

注册令牌可能会在以下情况下发生变化:

     
      
  • 该应用删除实例ID
  •   
  • 该应用已在新设备上恢复
  •   
  • 用户卸载/重新安装应用
  •   
  • 用户清除应用数据。
  •   

除了删除令牌(上面的第一个选项)之外,您无法控制何时刷新令牌。但与Firebase身份验证令牌不同,Firebase云消息传递的实例ID令牌不会按固定时间表刷新。实例ID令牌刷新相对较少,只需考虑在最大的用例中进行扩展即可。

答案 1 :(得分:1)

不。没有办法只刷新注册令牌的到期

当注册令牌刷新时,令牌值将会更改。注册令牌本身将过期的事件也是无限期的,并且只能发生在FirebaseInstanceId docs中指定的特定事件:

  

除以下情况外,实例ID是稳定的:

     
      
  • 应用删除实例ID
  •   
  • 应用程序已在新设备上恢复
  •   
  • 用户卸载/重新安装应用
  •   
  • 用户清除应用数据
  •   
     

在上述情况下,会生成一个新的实例ID,并且应用程序需要重新创建以前生成的授权令牌onTokenRefresh()

如上所述,如果刷新令牌,将调用protected void Page_Load(object sender, EventArgs e) { string draw = Request.QueryString["draw"]; //it works object columns1 = Request.QueryString["columns"]; //null object columns2 = Request["columns"]; //null var columns3 = Request["columns"]; //null } ,并且您应该处理将其发送到App Server并删除过期的旧令牌的后续步骤。其他一些东西。