問題分享
華為開發者論壇上有開發者向我們咨詢:想要實作應用自動填寫短信驗證碼,但如果將手機短信"驗證碼保護"功能打開,app就不能自動填寫驗證碼,有沒有什么方法能獲取到短信驗證碼?問題鏈接:
https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202342491084740374&fid=18?ha_source=hms1

我們知道,華為對隱私保護高度重視,用戶的隱私安全一直是華為的首要關注,為了保護用戶的支付安全和帳號安全,華為EMUI系統提供了驗證碼短信的保護功能,該功能可以阻止第三方應用獲取用戶收到的驗證碼短信,那么正如開發者提問的那樣,開啟短信驗證碼保護后app不能自動填寫驗證碼,華為有沒有提供什么方法在開啟短信驗證碼保護的狀態下,仍然可以自動獲取到驗證碼并自動填寫的呢?
解決方案
華為帳號服務(HUAWEI Account Kit)為開發者提供了一項短信自動讀取能力,可以幫助應用自動讀取驗證碼,實作應用自動或者被授權讀取短信驗證碼,提高驗證效率,優化用戶體驗,

以下是短信自動讀取能力的一種場景:
如果應用需要用戶輸入手機號并通過短信驗證碼核實用戶身份,可以通過集成ReadSmsManager服務,使應用在無需申請短信讀取權限的前提下,具備自動讀取針對該應用的短信驗證碼的能力,用戶在驗證程序中可以省去手動輸入短信驗證碼的操作,整個獲取短信驗證碼的流程可簡化成:用戶點擊獲取驗證碼→收到短信→自動填充→用戶點擊,將會更加優化用戶體驗,
自動讀取短信驗證碼功能關鍵開發操作指導
1.應用呼叫ReadSmsManager.start(Activity activity)方法請求開啟短信讀取服務,
Task<Void> task = ReadSmsManager.start(MainActivity.this);
task.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(Task<Void> task) {
if (task.isSuccessful()) {
// 開啟服務成功,可以繼續后續流程
doSomethingWhenTaskSuccess();
}
}
});
2. 應用客戶端將手機號發送給應用服務器,應用服務器生成一條驗證訊息,并通過SMS將其發送到用戶的手機號,此部分由開發者自行完成,
3. 當用戶的設備接收到驗證訊息時,HMS Core(APK)會顯式地向應用客戶端發送廣播,intent里面包含訊息的文本,應用客戶端可以使用廣播接收此驗證訊息,應用客戶端讀取到驗證訊息的文本后,可以使用正則運算式或其他邏輯從訊息中獲得驗證碼,驗證碼的格式由應用客戶端和服務器自行定義,
public class MySMSBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null && ReadSmsConstant.READ_SMS_BROADCAST_ACTION.equals(intent.getAction())) {
Status status = bundle.getParcelable(ReadSmsConstant.EXTRA_STATUS);
if (status.getStatusCode() == CommonStatusCodes.TIMEOUT) {
// 服務已經超時,未讀取到符合要求的短信,服務關閉
doSomethingWhenTimeOut();
} else if (status.getStatusCode() == CommonStatusCodes.SUCCESS) {
if (bundle.containsKey(ReadSmsConstant.EXTRA_SMS_MESSAGE)) {
// 服務讀取到了符合要求的短信,服務關閉
doSomethingWhenGetMessage(bundle.getString(ReadSmsConstant.EXTRA_SMS_MESSAGE));
}
}
}
}
}
除了以上自動讀取短信驗證碼能力以外,華為帳號服務還提供了授權讀取短信驗證碼的能力,使應用在無需申請短信讀取權限的前提下,可以通過用戶授權方式來自動獲取針對應用的短信驗證碼,用戶在驗證程序中可以省去手動輸入短信驗證碼的操作,優化用戶體驗,

欲了解更多詳情,請參閱:
>>華為賬號服務官網
>>自動讀取短信驗證碼開發指導檔案
>>授權讀取短信驗證碼開發指導檔案
華為賬號服務開源倉庫地址:GitHub、Gitee
>>訪問華為開發者聯盟官網,了解更多相關內容
>>獲取開發指導檔案
>>華為移動服務開源倉庫地址:GitHub、Gitee
關注我們,第一時間了解華為移動服務最新技術資訊~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276976.html
標籤:其他
