【发布时间】:2017-08-14 08:21:12
【问题描述】:
SmsRetriever.SMS_RETRIEVED_ACTION 未被调用。我正在使用 Firebase 电话身份验证:
PhoneAuthProvider.getInstance().verifyPhoneNumber(
mPhoneNumber, // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
activity, // Activity (for callback binding)
mCallbacks); // OnVerificationStateChangedCallbacks
我正在尝试使用SMS Retriever 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) {
}
});
我正在注册 BroadcastReceiver onResume 并在暂停时取消注册:
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 短信格式吗?不兼容吗?
提前致谢。
【问题讨论】:
-
嘿,你有没有得到这个工作?
-
否,因为 Firebase Auth SMS 格式不可编辑,并且 SMS 检索器 API 需要特定格式。幸运的是,Firebase Auth SDK 在内部使用类似的方式来识别 SMS 代码,因此在 Android 手机中它通常会自动识别。
-
谢谢。我尝试了我朋友的新华为,但它似乎没有工作,虽然我没有将它插入我的笔记本电脑以查看任何日志记录。
标签: android firebase firebase-authentication