【问题标题】:"didReceiveRegistrationToken" does not give me the fcmToken?“didReceiveRegistrationToken”没有给我 fcmToken?
【发布时间】:2019-02-10 17:33:01
【问题描述】:

我正在使用 firebase 构建应用程序,并尝试保存 FCM 令牌以用于推送通知(由 firebase 函数发送)。

我尝试这样做的方式是将 deviceToken 存储在 UserDefault 中,以便以后使用。

我需要在用户注册时保存 fcmToken(将其存储在我的数据库中的配置文件下)。

当用户退出时,我需要删除数据库中的 fcmToken。

因此,我在 AppDelegate 中有我的 func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)(也许这是错误的?),我这样存储它:

AppDelegate 代码:

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {

        UserDefaults.standard.setValue("fcmToken", forKey: fcmToken)

}

当我想调用它时,例如在注册视图控制器中,我像这样声明设备令牌:

注册 ViewController 代码:

let deviceToken = UserDefaults.standard.value(forKey:"fcmToken") as? String ?? "not found"

然后我像这样将它保存在我的数据库中

["fcmToken": deviceToken]

但是,这始终会在 Firebase 中返回“未找到”,并且不会保存实际的设备 ID。如果你们能帮我解决这个问题,那就太好了。

【问题讨论】:

  • 不相关但从不将 KVC value(forKey / setValue(_:forKeyUserDefaults 一起使用。有一个通用的 setter set(_:forKey,在这种情况下是一个特定的 getter string(forKey

标签: swift xcode firebase firebase-cloud-messaging devicetoken


【解决方案1】:

保存到 UserDefaults 时,您的 "" 会倒退。您拥有它的方式是在 fcmToken 字符串下保存字符串“fcmToken”

 func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {

    print(fcmToken)
    UserDefaults.standard.set(fcmToken, forKey: "fcmToken")

 }

【讨论】:

  • 使用这个时,在我的数据库中仍然返回“未找到”
  • 立即尝试。我忘记将 setValue 更改为设置。还添加了打印语句以确保您获得令牌
猜你喜欢
  • 2017-11-20
  • 2019-11-19
  • 2012-04-28
  • 2011-03-12
  • 2021-10-03
  • 2022-01-14
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多