Android SmsRetrieverClient 的短信验证不解析消息

2024-04-08

尝试按照此处的步骤实现短信自动读取以进行验证:https://developers.google.com/identity/sms-retriever/request https://developers.google.com/identity/sms-retriever/request

1)声明

lateinit var smsRetrieverClient: SmsRetrieverClient
private lateinit var smsReceiver: SmsBrReceiver

2)在登录Activity onCreate中初始化并注册它们

smsRetrieverClient = SmsRetriever.getClient(this)
smsReceiver = SmsBrReceiver()

val intentFilter = IntentFilter()
intentFilter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION)
applicationContext.registerReceiver(smsReceiver, intentFilter)

val task = smsRetrieverClient.startSmsRetriever()
task.addOnSuccessListener(OnSuccessListener<Void> {
    smsReceiver.setTimeout()
})
task.addOnFailureListener(OnFailureListener { e ->
    showCodeInput()
})

3)为SmsRetriever制作BroadcastReceiver

inner class SmsBrReceiver : BroadcastReceiver() {
    var h = Handler()
    var r: Runnable = Runnable { doTimeout() }

    fun setTimeout() {
        h.postDelayed(r, 600000)
    }

    override fun onReceive(context: Context, intent: Intent?) {

        val action = intent.action

        if (SmsRetriever.SMS_RETRIEVED_ACTION == action) {

            cancelTimeout()
            val extras = intent.extras
            val status = extras!!.get(SmsRetriever.EXTRA_STATUS) as Status
            when (status.statusCode) {
                CommonStatusCodes.SUCCESS -> { // not called

4)短信格式

\u200b\u200bPlease enter code: 1111 /appKeyXf56

短信末尾的应用程序密钥与已安装的应用程序签名密钥所提供的生成密钥相匹配,如下所述:https://developers.google.com/identity/sms-retriever/verify#computing_your_apps_hash_string https://developers.google.com/identity/sms-retriever/verify#computing_your_apps_hash_string

收到 SMS 后不会调用 CommonStatusCodes.SUCCESS,但 5 分钟后会调用 CommonStatusCodes.TIMEOUT。

缺什么?以防万一,电话身份验证的 gradle 声明如下:

com.google.android.gms:play-services-auth-api-phone:16.0.0
classpath "com.google.gms:google-services:4.2.0

解决方案是缩短消息,尽管它似乎不超过 140 个字节。将短信文本设置为约 30 个字符后,无需进行其他更改即可自动读取短信。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android SmsRetrieverClient 的短信验证不解析消息 的相关文章

随机推荐