Я реализую Firebase на Android с помощью kotlin.
Поскольку значение FirebaseInstanceId.getInstance().token
ограничено, я использую следующую функцию внутри объекта-компаньона моего MyFirebaseMessageService
класса, чтобы получить токен:
companion object
{
fun grabFcmToken():String?
{
var s:String?=null
FirebaseInstanceId.getInstance().
instanceId.addOnCompleteListener {task ->
if (task.isSuccessful)
{
s=task.result!!.token
Log.i("token used is ", s)
}
else
{
throw Exception("Can't get firebase token")
}
}
Log.i("To be returned token ", s)
return s
}
}
Android Studio выделяет s
как Wrapped into a reference object to be modified when captured in a closure
После выполнения grabFcmToken()
первый журнал успешно распечатывает токен, но второй журнал имеет java.lang.NullPointerException: println needs a message
, указывающий, что s имеет значение null
, и, следовательно, его значение не изменяется.
как мне изменить s
так, чтобы захваченный токен отражался в нем?