android - Twilio 验证 SDK 无法在 Android 7.0 和 8.0 上读取 SMS
问题描述
我一直在使用适用于 Android 的 Twilio 验证 SDK (com.twilio:verification:1.0.9) 使用此 build.gradle 配置:compile_sdk = 26、min_sdk = 23、target_sdk = 26 和 build_tools = '27.0.3'并且我无法让应用程序在 Android 7.0 和 8.0 设备上读取短信;但是,它在 Android 6.0 上运行良好。
这是我的广播接收器:
class PhoneVerificationReceiver: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent) {
RxBus.publish(PhoneVerificationEvent(TwilioVerification.getVerificationStatus(intent).state))
}
}
它以这种方式在 AndroidManifest 上声明:
<receiver
android:name=".service.PhoneVerificationReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.twilio.verification.current_status" />
</intent-filter>
</receiver>
在这里我有订阅:
override fun onResume() {
super.onResume()
disposable.add(
RxBus.listen(PhoneVerificationEvent::class.java)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
when (it.state) {
VerificationStatus.State.STARTED, VerificationStatus.State.AWAITING_VERIFICATION -> {
lockUI()
}
VerificationStatus.State.SUCCESS -> {
savePhoneNumber()
}
VerificationStatus.State.ERROR -> {
unlockUI("Phone couldn\'t be verified")
}
}
}, {
Timber.e(it)
})
)
}
override fun onPause() {
disposable.clear()
super.onPause()
}
获取 JWT 令牌后,验证过程开始,它成功进入onReceive
带有 的方法VerificationStatus.State.STARTED
。之后,收到短信但不再进入该onReceive
功能。
Android SDK Hash Signature 已到位;我遵循了本教程:https ://www.twilio.com/docs/verify/tutorials/android-sdk-register-your-app ;此代码在 Android 6.0 设备上运行良好。
任何帮助将不胜感激。
解决方案
Twilio 开发人员布道者在这里。
我不是 Android 开发人员,但我在内部向团队寻求帮助,这是他们告诉我的。
Manifest 声明的广播接收器对较新版本的 Android 有一些限制。您可以在运行时使用注册广播接收器并使用context.registerReceiver
取消注册吗context.unregisterReceiver
?
这里有更多信息:https ://developer.android.com/guide/components/broadcasts#context-registered-receivers 。
让我知道这是否有帮助。
推荐阅读
- jenkins - Jenkins管道凭证变量未通过
- mongodb - MongoDB仅在请求中存在时才查询不同的字段
- javascript - 使用回调参数获取匿名函数中的值
- vue.js - 如何将流类型与 CDN 包含的对象一起使用?
- php - MySQL:加入两个具有匹配行名的表
- c++ - 是否有推荐的“安全”方法来指定由常量标志值组成的位和弦?
- python - Pyplot 趋势线没有出现在散点图上,而是出现在它的右侧?
- r - 如何在R中没有for循环的情况下将一列与一系列相关的虚拟变量进行比较
- node.js - 如何获得对 IBM Watson Assistance 用户界面的信心?
- java - Web3j Android java Solidity 包装器错误