2. SMS verification APIs
“Verify your users by SMS without making them deal with
verification codes. By using the SMS Retriever API, your app
can automatically retrieve verification codes intended for
your app, without having to request full SMS reading
permissions.”
• SMS permission is dangerous
https://developers.google.com/identity/sms-retriever/
7. Request consent
(1/2)
class MySMSBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (SmsRetriever.SMS_RETRIEVED_ACTION == intent.action) {
val extras = intent.extras
val status = extras!!.get(SmsRetriever.EXTRA_STATUS) as Status
when (status!!.statusCode) {
CommonStatusCodes.SUCCESS -> {
val consentIntent = extras.getParcelable<Intent>(
SmsRetriever.EXTRA_CONSENT_INTENT)
startActivityForResult(consentIntent, SMS_CONSENT_REQUEST)
}
…
}
}
9. Hande SMS
(if user is OK about it)
override fun onActivityResult(requestCode: Int, resultCode: Int, data:
Intent?) {
…
if (requestCode == SMS_CONSENT_REQUEST) {
// full text of message
data.getStringExtra(SmsRetriever.EXTRA_SMS_MESSAGE)
}
}
13. Retrive SMS
(1/2)
class MySMSBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (SmsRetriever.SMS_RETRIEVED_ACTION == intent.action) {
val extras = intent.extras
val status = extras!!.get(SmsRetriever.EXTRA_STATUS) as Status
when (status!!.statusCode) {
CommonStatusCodes.SUCCESS -> {
val message = extras.get(
SmsRetriever.EXTRA_SMS_MESSAGE) as String // full text of SMS
}
…
}
}
16. Broadcast receiver(s)
class MySMSBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (SmsRetriever.SMS_RETRIEVED_ACTION == intent.action) {
val extras = intent.extras
val message = extras.get(SmsRetriever.EXTRA_SMS_MESSAGE) as String
}
}
class MySMSBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (SmsRetriever.SMS_RETRIEVED_ACTION == intent.action) {
val extras = intent.extras
val consentIntent = extras.getParcelable<Intent>(
SmsRetriever.EXTRA_CONSENT_INTENT)
startActivityForResult(consentIntent, SMS_CONSENT_REQUEST)
}
Request user consent if app use SMS consent API
Retrieve SMS immediately if app use SMS retriever API