使用Android SmsRetrieverClient进行短信验证未解析消息
尝试按照以下步骤实现SMS自动读取以进行验证: 1) 宣布使用Android SmsRetrieverClient进行短信验证未解析消息,android,kotlin,google-play-services,sms-verification,Android,Kotlin,Google Play Services,Sms Verification,尝试按照以下步骤实现SMS自动读取以进行验证: 1) 宣布 lateinit var smsRetrieverClient: SmsRetrieverClient private lateinit var smsReceiver: SmsBrReceiver 2) 在登录活动onCreate中初始化并注册它们 smsRetrieverClient = SmsRetriever.getClient(this) smsReceiver = SmsBrReceiver() val intentF
lateinit var smsRetrieverClient: SmsRetrieverClient
private lateinit var smsReceiver: SmsBrReceiver
2) 在登录活动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()
})
4) 短信是有格式的
\u200b\u200bPlease enter code: 1111 /appKeyXf56
SMS末尾的应用程序密钥与安装的应用程序签名密钥为生成提供的密钥相匹配,如下所述:
收到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个字符后,自动阅读短信,无需其他更改。谢谢!你为我节省了这么多调试时间官方文件说:>不超过140字节140字节是一条欺骗性的短消息。这并不是说我们可以很容易地测量,你需要做一些实验
com.google.android.gms:play-services-auth-api-phone:16.0.0
classpath "com.google.gms:google-services:4.2.0