Я работал с Twilio Verification SDK для Android (com.twilio: проверка: 1.0.9) с этой конфигурацией build.gradle: compile_sdk = 26, min_sdk = 23, target_sdk = 26 и build_tools = '27 .0 .3 'и я не смог заставить приложение читать SMS на устройствах Android 7.0 и 8.0; тем не менее, он отлично работает на Android 6.0.
Это мой BroadcastReceiver:
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
. После этого SMS получено, но больше не входит в функцию onReceive
.
Отладчик
Хэш-подпись Android SDK установлена; Я следовал этому руководству: https://www.twilio.com/docs/verify/tutorials/android-sdk-register-your-app; этот код отлично работает на устройствах Android 6.0.
Любая помощь будет принята с благодарностью.