我正在尝试获取 FCM 令牌并将其存储在云 Firestore 中:
val user = User(et_email_sign_up_activity.text.toString(), et_name_sign_up_activity.text.toString(),
et_mobile_sign_up_activity.text.toString(), "",
FirebaseAuth.getInstance().currentUser?.uid!!, tv_address.text!!.toString(), getToken())
Firebase().uploadUserSignIn(user, this)//uploads user to cloud firestore
getToken():
private fun getToken(): String{
var token = ""
FirebaseMessaging.getInstance().token.addOnSuccessListener {
token = it
Log.i("token", it)
}.addOnFailureListener {
val dialog = AlertDialog.Builder(this)
dialog.setMessage(it.toString())
dialog.show()
}
return token
}
我在尝试在真实的安卓设备上执行代码时,总是遇到这个错误:
E/FirebaseMessaging: Topic sync or token retrieval failed on hard
failure exceptions: java.util.concurrent.ExecutionException:
java.io.IOException: SERVICE_NOT_AVAILABLE. Won't retry the operation.
我已经安装了Google Play服务并连接到了互联网
我尝试过以下几种解决方案:
- 在清单文件中添加互联网权限。
- 在Firebase中输入SHA1和SHA256后,下载google.json文件。
- 启用Google Cloud中的Android设备验证。
有时候我不会得到错误信息,FCM令牌可以成功返回,但大多数情况下我都会遇到这个错误。
这是什么错误?