【问题标题】:Using SMS Retriever API with Instant Apps将 SMS Retriever API 与即时应用程序一起使用
【发布时间】:2019-11-19 00:56:10
【问题描述】:

我有一个运行良好的即时应用程序,并且我已成功地将 SMS Retriever API 集成到多个应用程序中,但两者似乎不能一起运行。有没有办法让它们一起发挥作用,或者是否存在不支持这方面的文档?

public class SmsClient {

    private SmsReceiver smsReceiver;

    public interface GoogleTaskListener extends OnSuccessListener<Void>, OnFailureListener {
    }

    public SmsClient(@NonNull VerificationCodeListener verificationCodeListener,
                     int codeLength) {
        this.smsReceiver = new SmsReceiver(verificationCodeListener, codeLength);
    }

    public void attach(Context context) {
        SmsRetrieverClient client = SmsRetriever.getClient(context);
        Task<Void> startSmsReceiverTask = client.startSmsRetriever();

        GoogleTaskListener googleTaskListener = new GoogleTaskListener() {
            @Override
            public void onSuccess(Void v) {
                Timber.i("Sms task succeeded!");
            }

            @Override
            public void onFailure(@NonNull Exception e) {
                Timber.e("Sms task failed."); //Message "17: API: SmsRetriever.API is not available on this device."
            }
        };

        startSmsReceiverTask.addOnSuccessListener(googleTaskListener);
        startSmsReceiverTask.addOnFailureListener(googleTaskListener);

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION);
        context.registerReceiver(smsReceiver, intentFilter);
    }

    public void detach(Context context) {
        context.unregisterReceiver(smsReceiver);
    }
}

在常规应用中使用 startSmsRetriever() 启动 SMS Retriever 时,会调用 onSuccess。

当尝试在作为即时应用程序运行的同一应用程序中启动 SMS Retriever 时,会调用 onFailure 并显示错误消息 17: API: SmsRetriever.API 在此设备上不可用。

最终,我们希望通过 SMS 发送的一次性密码由正在运行的免安装应用自动处理以验证会话。有关该主题的任何信息都会有所帮助。

我目前正在 Pixel 3 (API 28) 模拟器中运行它。

【问题讨论】:

  • 这里没有问题,我从developers.google.com/identity/sms-retriever/… 复制了示例并在 Pixel 3 API 28 模拟器上运行(对于真实设备也可以,Pixel 2 API 29)。尝试重新创建你的模拟器。
  • @TWL 请确认您在模拟器中将 SMS 检索器作为 Instant App 运行;该应用程序并未实际安装。我在新创建的模拟器中试过这个,没有任何变化。
  • 是的,我检查了Deploy as instant app 并且应用程序设置也确认了instant app。你在真机上试过吗?

标签: android sms android-instant-apps


【解决方案1】:

正如 TWL 所说,它确实有效。它只是在模拟器中不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-15
    • 2020-10-04
    • 1970-01-01
    • 2019-07-26
    • 2019-08-08
    • 2019-07-21
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多