【问题标题】:Swift FIRMessaging push notification token resetSwift FIRMessaging 推送通知令牌重置
【发布时间】:2023-03-30 12:09:01
【问题描述】:

我目前正在我的新项目中处理推送通知,因此我正在尝试生成推送令牌。我的问题是,这些什么时候到期?我将每个用户推送令牌存储在我的 Firebase 数据库中,但我知道这些令牌会自行过期/重新生成。所以我的问题是,保持推送令牌最新的最佳方式是什么?

我是否应该在每次用户导航到他们的个人资料时都这样做?:

let token = FIRInstanceID.instanceID().token()

ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token])

您看,截至目前,我要求用户在注册后立即允许推送通知,但不知何故,即使我拒绝该请求,它似乎仍会生成令牌 ID。所以我的问题是,我怎样才能保持这个令牌 ID 更新?我必须在 AppDelegate 中执行此操作吗?

谢谢。非常感谢您的帮助!

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database firebase-cloud-messaging


    【解决方案1】:

    要在数据库中正确存储令牌,您需要处理两种情况:

    1. 应用启动时
    2. 令牌刷新时

    应用程序/主视图上的第一个 get the current token 首先调用 FirebaseInstFIRInstanceID.instanceID().token(),例如 viewDidLoad

    if let token = FIRInstanceID.instanceID().token() {
      ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":token])
    }
    

    由于当前令牌可能还没有生成,需要在这段代码中处理nil

    然后通过实现monitor for changes to the tokentokenRefreshNotification

    func tokenRefreshNotification(notification: NSNotification) {
      if let refreshedToken = FIRInstanceID.instanceID().token() {
        ref.child("Users").child(id).child(pushToken).updateChildValues(["tokenid":refreshedToken])
      }
    
    }
    

    另请参阅我对 Android 的类似用例给出的答案:Update Firebase Instance ID on app update

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      相关资源
      最近更新 更多