Android 在FCM(Firebase云消息传递)中,在通知中包含令牌是否安全?

Android 在FCM(Firebase云消息传递)中,在通知中包含令牌是否安全?,android,firebase,google-cloud-messaging,firebase-cloud-messaging,token,Android,Firebase,Google Cloud Messaging,Firebase Cloud Messaging,Token,当使用FCM向Android设备发送推送通知时,在通知正文中包含令牌是否安全? 这是否会违反安全/隐私或GDPR 在firebase文档()中,他们的示例在 通知: { "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification":{ "title":"Portugal vs. Denmark", "body":"great match!"

当使用FCM向Android设备发送推送通知时,在通知正文中包含令牌是否安全? 这是否会违反安全/隐私或GDPR

在firebase文档()中,他们的示例在 通知:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}
相反,我们可以这样做吗

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}
如果在通知中包含令牌没有问题,我希望我可以在客户端检查的通知中包含令牌,以过滤来自过期令牌的接收通知(令牌并不总是立即失效。至少在GCM中不是这样)


注意:我这样做的原因是,当用户卸载并重新安装应用程序时,旧令牌仍然可以处于活动状态。在Firebase的cron作业执行并删除旧令牌之前,旧令牌仍然可以使用。如果您有一个单独的服务器维护令牌,那么这就是一个问题。所以我希望我可以在通知中包含令牌,以过滤无效通知并使我们的私有服务器上的旧令牌无效。

在示例中,令牌是在消息中发送的,而不是在通知中发送的。通知也是消息的一部分

消息被发送到FCM服务器,在该服务器上,使用令牌,它将知道通知的对象

关于在通知中包含令牌,我不会这样做

此外,移动设备已经具有在设备向FCM注册时发送给它的令牌。 如果设备由于任何原因(如卸载)没有注册,那么即使您将令牌添加到通知中,它也不会到达设备

编辑I

您将无法以这种方式在通知中添加令牌(作为附加属性)。 查看fcm文档中必须如何形成
json
消息。如果有一个地方可以设置它(我不建议这样做),它是
数据的一部分

不包括的原因是没有理由这样做:

令牌不是由您的应用程序管理的,而是由FCM服务器管理的。您只需要在令牌更改时更新服务器,在这种情况下,FCM api通过触发应用程序中的回调(onTokenRefresh())让您的应用程序知道。 执行此操作时,您将在共享首选项中保留令牌的副本

在最后一点之后,应用程序已经具有令牌。在每次通知中发送它,如果它到达移动设备,这是因为它仍然有效,所以您已经在共享首选项中拥有它。
另一方面,如果令牌无效,那么消息将不会被接收,应用程序将永远不会意识到这一点。当FCM服务器向应用程序提供新令牌时,一切将恢复正常。在这种情况下,应用程序会收到回调通知,您的应用程序会替换共享首选项中的令牌并更新服务器。

在本例中,令牌是在消息中发送的,而不是在通知中发送的。通知也是消息的一部分

消息被发送到FCM服务器,在该服务器上,使用令牌,它将知道通知的对象

关于在通知中包含令牌,我不会这样做

此外,移动设备已经具有在设备向FCM注册时发送给它的令牌。 如果设备由于任何原因(如卸载)没有注册,那么即使您将令牌添加到通知中,它也不会到达设备

编辑I

您将无法以这种方式在通知中添加令牌(作为附加属性)。 查看fcm文档中必须如何形成
json
消息。如果有一个地方可以设置它(我不建议这样做),它是
数据的一部分

不包括的原因是没有理由这样做:

令牌不是由您的应用程序管理的,而是由FCM服务器管理的。您只需要在令牌更改时更新服务器,在这种情况下,FCM api通过触发应用程序中的回调(onTokenRefresh())让您的应用程序知道。 执行此操作时,您将在共享首选项中保留令牌的副本

在最后一点之后,应用程序已经具有令牌。在每次通知中发送它,如果它到达移动设备,这是因为它仍然有效,所以您已经在共享首选项中拥有它。
另一方面,如果令牌无效,那么消息将不会被接收,应用程序将永远不会意识到这一点。当FCM服务器向应用程序提供新令牌时,一切将恢复正常。在这种情况下,应用程序会收到回调通知,而您的应用程序会替换共享首选项中的令牌并更新您的服务器。

谢谢您的回答,但我们有理由不应该或不应该在通知中包含令牌吗?我已经根据你的回答更新了我的问题。感谢您的解释消息与通知!将设备令牌存储在某个数据库中,以便定期向特定设备发送消息。这是否会影响GDPR/隐私?每次从firebase api获取设备的令牌时,我都要存储该设备的设备令牌。是否也可以获取以前的无效令牌以使用刷新的令牌更新数据库?我想这样做是为了在服务器上为iOS设备创建“新消息”标记推送通知。由于iOS不支持在后台获取api以发送带有badge的本地通知。感谢您的回答,但是有没有理由不应该或不应该在通知中包含令牌?我已经根据你的回答更新了我的问题。感谢您的解释消息与通知!将设备令牌存储在某个数据库中,以便定期向特定设备发送消息。这对GDP有什么影响吗