Firebase 取消通知权限vs匿名FCM令牌

Firebase 取消通知权限vs匿名FCM令牌,firebase,push-notification,notifications,firebase-cloud-messaging,Firebase,Push Notification,Notifications,Firebase Cloud Messaging,我很想知道应用程序代码应该如何处理撤销通知权限令牌以及Firebase云消息(FCM)。问题部分类似于,尽管他们的案例不包括FCM 因此,我们有以下场景: 应用程序不要求用户登录(因此,我们存储在数据库中的令牌是匿名的,与任何uid都没有关联) 该应用程序提供了一组选择加入/选择退出按钮,用于授予和撤销通知权限 应用程序在数据库中收集令牌,供firebase函数中的sendToDevice(令牌、通知)稍后使用 应用程序在令牌发出(getToken)或刷新(onTokenRefresh)后,通过

我很想知道应用程序代码应该如何处理撤销通知权限令牌以及Firebase云消息(FCM)。问题部分类似于,尽管他们的案例不包括FCM

因此,我们有以下场景:

  • 应用程序不要求用户登录(因此,我们存储在数据库中的令牌是匿名的,与任何
    uid
    都没有关联)

  • 该应用程序提供了一组选择加入/选择退出按钮,用于授予和撤销通知权限

  • 应用程序在数据库中收集令牌,供firebase函数中的
    sendToDevice(令牌、通知)
    稍后使用

  • 应用程序在令牌发出(
    getToken
    )或刷新(
    onTokenRefresh
    )后,通过使用
    localStorage
    将令牌持久化,以便稍后将其提供给
    deleteToken(令牌)
    ,并在UI中指示通知订阅的当前状态

  • 现在,用户选择撤销曾经授予的权限-如果他们干净地这样做(通过选择退出按钮),则调用
    deleteToken(token)
    方法并清除相应的本地存储项。所有内容都应同步,FCM将不再发送给此用户

  • 问题如果用户在全局浏览器范围内以更具管理性/批量的方式清除所有权限或本地存储,该怎么办。然后事情就不同步了。该令牌从浏览器中消失,UI将显示opted out,但该令牌尚未从数据库中删除,因此它仍然有效,用户将继续收到通知。发送的结果不会包含此用户的任何错误,因此我们将无法识别情况并删除令牌


  • 这里最常见的做法是什么?不鼓励匿名通知吗?我对通知和FCM的理解是否遗漏了任何内容?

    令牌最终将失效。您将能够知道,因为向该令牌发送消息将产生“error:notregisted”的错误。从链接的文档中:

    现有注册令牌可能在以下情况下失效: 情景,包括:

    • 如果客户端应用程序向FCM注销
    • 如果客户端应用程序自动取消注册,则在用户卸载应用程序时会发生这种情况。例如,在iOS上,如果 APNS反馈服务报告APNS令牌无效
    • 如果注册令牌过期(例如,Google可能决定刷新注册令牌,或者APNS令牌已过期) 对于iOS设备)
    • 如果客户端应用程序已更新,但新版本未配置为接收消息
    对于所有这些情况,请从应用程序中删除此注册令牌 服务器并停止使用它发送消息

    如果您使用ADMINSDK或FCMServerAPI的不同版本发送消息,则情况类似


    虽然您可能不会立即收到有关此问题的反馈,但您最终会收到此错误消息,这是您将其从数据库中删除的线索。

    谢谢您的回答。您认为将令牌(或数据库密钥)保存在本地存储中是一种可靠/安全的方法吗?我不确定您的意思。潜在的问题是什么?