You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新Firebase SDK后PhoneCallbacks类未实现抽象成员报错如何解决

错误信息中文释义:PhoneCallBacks.kt 第6行第1列:类 PhoneCallbacks 不是抽象类,且未实现抽象基类成员方法 public abstract fun onVerificationCompleted(p0: PhoneAuthCredential): Unit(该方法定义在 com.google.firebase.auth.PhoneAuthProvider.OnVerificationStateChangedCallbacks 中)

问题根因

这是Firebase Auth SDK版本升级带来的不兼容变更:新版SDK中OnVerificationStateChangedCallbacks的三个回调方法参数全部改为非空类型,你现有代码里重写的方法参数都添加了可空标记?,导致方法签名和父类的抽象方法不匹配,编译器判定你没有实现对应抽象方法,因此抛出编译错误。

修复方案

方案1:同步修改为非空参数(推荐)

新版Firebase Auth的回调参数不会为空,直接调整所有相关方法的参数类型即可:

class PhoneCallbacks(private val listener : PhoneCallbacksListener) : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    interface PhoneCallbacksListener {
        fun onVerificationCompleted(credential: PhoneAuthCredential)
        fun onVerificationFailed(exception: FirebaseException)
        fun onCodeSent(
                verificationId: String,
                token: PhoneAuthProvider.ForceResendingToken
        )
    }

    override fun onVerificationCompleted(phoneAuthCredential: PhoneAuthCredential) {
        listener.onVerificationCompleted(phoneAuthCredential)
    }

    override fun onVerificationFailed(exception: FirebaseException) {
        listener.onVerificationFailed(exception)
    }

    override fun onCodeSent(verificationId: String, token: PhoneAuthProvider.ForceResendingToken) {
        listener.onCodeSent(verificationId,token)
    }
}

方案2:兼容原有可空逻辑

如果不想修改原有Listener的调用逻辑,只需要调整重写方法的参数签名,保持Listener的可空定义即可:

class PhoneCallbacks(private val listener : PhoneCallbacksListener) : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {

    interface PhoneCallbacksListener {
        fun onVerificationCompleted(credential: PhoneAuthCredential?)
        fun onVerificationFailed(exception: FirebaseException?)
        fun onCodeSent(
                verificationId: String?,
                token: PhoneAuthProvider.ForceResendingToken?
        )
    }

    override fun onVerificationCompleted(phoneAuthCredential: PhoneAuthCredential) {
        listener.onVerificationCompleted(phoneAuthCredential)
    }

    override fun onVerificationFailed(exception: FirebaseException) {
        listener.onVerificationFailed(exception)
    }

    override fun onCodeSent(verificationId: String, token: PhoneAuthProvider.ForceResendingToken) {
        listener.onCodeSent(verificationId,token)
    }
}

内容的提问来源于stack exchange,提问作者DB_cont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:06:03