swift - 返回 FCM 令牌以存储在变量中(带有 Firebase 的 Swift 5)
问题描述
我正在尝试从当前用户获取 FCM 令牌作为变量,以便将其写入他们的 Firestore 文档。这是我用来检索令牌的代码,它有效:
var fcmToken = ""
InstanceID.instanceID().instanceID(handler: { (result, error) in
if let error = error {
print("Error fetching remote instange ID: \(error)")
} else if let result = result {
fcmToken = setFCMToken(result.token)
}
})
//use fcmToken variable here to write data in user document. Value getting sent is just initial declaration of ""
func setFCMToken(_ token:String) -> String{
print(token)
return token
}
但是 fcmToken 变量没有更新。我相信我的问题可能与范围有关。我不知道如何解决这个问题。谢谢您的帮助!
解决方案
我想通了,似乎有点额外,但它有效:
//Initial declaration at top of class above ViewDidLoad
var fcmToken = ""
//In ViewDidLoad
InstanceID.instanceID().instanceID(handler: { (result, error) in
if let error = error {
print("Error fetching remote instange ID: \(error)")
} else if let result = result {
self.fcmToken = result.token
self.setFCMToken(self.fcmToken)
}
})
//Where ever you need to access token as variable
let token = self.getFCMToken()
//bottom of VC
func setFCMToken(_ token:String){
print(token)
self.fcmToken = token
}
func getFCMToken() -> String{
return self.fcmToken
}
推荐阅读
- kdevelop - 如何自定义KDevelop的代码浏览器?
- asp.net - IIS Web 配置问题
- python - 熊猫查找找到字符串的列的名称
- perl - 在 perl 类中没有定义 DESTROY 方法是否存在内存泄漏的风险?
- laravel - Paypal 订阅修订 - 如何使用订阅 API 捕获 onApprove 或 onCancel?
- javascript - jquery中的自定义过滤器列表
- python - 获取上下文底图以填充绘图
- java - 验证日期超出范围
- python - 如何将 2D numpy 的字符串表示形式转换为实际的 2D numpy 数组?
- python - 如何使用正则表达式将缩写与其含义匹配?