SMS检索API不从Firebase电话验证调用SMS_RETRIEVED_ACTION [英] SMS Retriever API not calling SMS_RETRIEVED_ACTION from Firebase Phone Auth

查看:122
本文介绍了SMS检索API不从Firebase电话验证调用SMS_RETRIEVED_ACTION的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SmsRetriever.SMS_RETRIEVED_ACTION没有被调用.我正在使用Firebase电话验证:

SmsRetriever.SMS_RETRIEVED_ACTION is not been called. I am using Firebase Phone Auth:

PhoneAuthProvider.getInstance().verifyPhoneNumber(
                mPhoneNumber,        // Phone number to verify
                60,                 // Timeout duration
                TimeUnit.SECONDS,   // Unit of timeout
                activity,               // Activity (for callback binding)
                mCallbacks);        // OnVerificationStateChangedCallbacks

,而我正尝试使用 SMS检索器API

SmsRetrieverClient client = SmsRetriever.getClient(activity);

// Starts SmsRetriever, which waits for ONE matching SMS message until timeout
// (5 minutes). The matching SMS message will be sent via a Broadcast Intent with
// action SmsRetriever#SMS_RETRIEVED_ACTION.

Task<Void> task = client.startSmsRetriever();

task.addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {

            }
        });

        task.addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {

            }
        });

我正在onResume上注册BroadcastReceiver并在暂停时取消注册:

I am registering BroadcastReceiver onResume and unregistering it on Pause:

public class MySMSBroadcastReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    if (SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
        Bundle extras = intent.getExtras();
        Status status = (Status) extras.get(SmsRetriever.EXTRA_STATUS);

        switch(status.getStatusCode()) {
            case CommonStatusCodes.SUCCESS:
                // Get SMS message contents
                String message = (String) extras.get(SmsRetriever.EXTRA_SMS_MESSAGE);

                break;
            case CommonStatusCodes.TIMEOUT:

                break;
        }
    }
}
}

可以是Firebase SMS格式吗?可能与此不兼容吗?

Could be Firebase SMS format? Could be not compatible with that?

谢谢.

推荐答案

请将依赖项更新为:
implementation "com.google.android.gms:play-services-auth-api-phone:17.4.0"
AndroidMaifest.xml 中注册您的广播接收器:

Please update the dependency to:
implementation "com.google.android.gms:play-services-auth-api-phone:17.4.0"
Register your broadcast receiver in AndroidMaifest.xml:

<receiver android:name=".MySMSBroadcastReceiver">
                <intent-filter>
                    <action android:name="com.google.android.gms.auth.api.phone.SMS_RETRIEVED"/>
                </intent-filter>
            </receiver>

就这样!!

这篇关于SMS检索API不从Firebase电话验证调用SMS_RETRIEVED_ACTION的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆