我正在使用Firebase构建应用程序,并尝试保存FCM令牌以用于推送通知(由Firebase函数发送)。
我尝试执行此操作的方法是将deviceToken存储在UserDefault中,以备后用。
用户注册时,我需要保存fcmToken(以将其存储在我的数据库中的个人资料下)。
当用户注销时,我需要删除数据库中的fcmToken。
因此,我将func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)
放在了AppDelegate中(也许这是错误的?),我将其存储为:
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。如果你们能帮我解决这个问题,那就太好了。
答案 0 :(得分:1)
保存为UserDefaults时,您的“”会倒退。您将其保存在fcmToken字符串下的字符串“ fcmToken”
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
print(fcmToken)
UserDefaults.standard.set(fcmToken, forKey: "fcmToken")
}