注冊(cè)會(huì)員時(shí)APP如何自動(dòng)獲取短信驗(yàn)證碼
2018-05-15 00:00:00
來(lái)源:
點(diǎn)擊:5212
喜歡:0
在APP會(huì)員注冊(cè)
時(shí),手機(jī)短信驗(yàn)證碼自動(dòng)獲取,能給客戶帶來(lái)很大的方便,增加客戶體驗(yàn)。目前好多APP都有手機(jī)驗(yàn)證碼自動(dòng)填寫(xiě)功能,但還是有一部分技術(shù)不知道怎么實(shí)現(xiàn),這里就簡(jiǎn)單介紹一下
實(shí)現(xiàn)思路很簡(jiǎn)單:1、在需要輸入驗(yàn)證碼的Activity代碼注冊(cè)監(jiān)聽(tīng)短信的廣播 2、攔截短信,獲取其中的驗(yàn)證碼 3、回寫(xiě)到EditText
- private SmsReciver smsReciver = new SmsReciver();
-
- String ACTION_SMS_RECIVER = "android.provider.Telephony.SMS_RECEIVED";
-
-
-
- private void registSmsReciver() {
- IntentFilter filter = new IntentFilter();
- filter.addAction(ACTION_SMS_RECIVER);
-
- filter.setPriority(1000);
- registerReceiver(smsReciver, filter);
- }
-
-
-
-
- private class SmsReciver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Object[] objs = (Object[]) intent.getExtras().get("pdus");
- for (Object obj : objs) {
- yte[] pdu = (byte[]) obj;
- SmsMessage sms = SmsMessage.createFromPdu(pdu);
-
- String message = sms.getMessageBody();
- Log.d("log", "message " + message);
-
- String from = sms.getOriginatingAddress();
- Log.d("log", "from " + from);
- analysisVerify(message);
-
- }
- }
-
- }
-
-
-
-
-
-
- private void analysisVerify(String message) {
- char[] msgs = message.toCharArray();
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < msgs.length; i++) {
- if ('0' <= msgs[i] && msgs[i] <= '9') {
- sb.append(msgs[i]);
- }
- }
-
- mEtVerifyCode.setText(sb.toString());
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
-
- if (smsReciver != null) {
- unregisterReceiver(smsReciver);
- smsReciver = null;
- }
- }
可以看到代碼邏輯比較簡(jiǎn)單,需要注意的有幾點(diǎn)。我們這里用的代碼注冊(cè)廣播,之所以不采取全局廣播的形式原因有兩天,在高版本的api,注冊(cè)全局的短信監(jiān)聽(tīng)會(huì)失效。而且就業(yè)務(wù)而言,我們監(jiān)聽(tīng)短信只會(huì)在輸入驗(yàn)證碼的Activity里面才會(huì)用到,采用代碼注冊(cè)的形式,在當(dāng)前Activity銷(xiāo)毀的時(shí)候取消廣播注冊(cè),更符合我們的預(yù)期,提高應(yīng)用的性能。第二個(gè)需要注意的問(wèn)題是優(yōu)先級(jí)的問(wèn)題- filter.setPriority(1000);
可以看到,我們這里把優(yōu)先級(jí)設(shè)置成了最大。保證我們的應(yīng)用能夠盡可能的接受到短信。注意,我使用的是“盡可能”,也就是說(shuō)我們不能保證短信自動(dòng)填寫(xiě)一定能執(zhí)行成功,有個(gè)小伙伴可能會(huì)問(wèn),我們不是把優(yōu)先級(jí)設(shè)置成了最高了嗎?為什么還不能保證了? 原因其實(shí)很簡(jiǎn)單,你能把監(jiān)聽(tīng)短信的優(yōu)先級(jí)設(shè)置成最大,同樣的,其他的應(yīng)用也能把短信監(jiān)聽(tīng)的優(yōu)先級(jí)設(shè)置成最大。比如說(shuō),你的手機(jī)安裝有360安全衛(wèi)士,把你們公司的驗(yàn)證碼視為垃圾短信攔截了,這個(gè)時(shí)候短信攔截就失效了。
嘉之元云通信為客戶提短信驗(yàn)證碼、短信營(yíng)銷(xiāo)、國(guó)際短信、智能外呼機(jī)器人等服務(wù)!其在互聯(lián)網(wǎng)行業(yè)深耕近10年,在短信接口平臺(tái)、營(yíng)銷(xiāo)短信、國(guó)際短信、智能語(yǔ)音機(jī)器人方面與業(yè)內(nèi)資深企業(yè)強(qiáng)強(qiáng)聯(lián)合,產(chǎn)品服務(wù)水平一直處于行業(yè)領(lǐng)先水平,深受廣大客戶的認(rèn)可,嘉之元云通信將一如既往的為您提供一流的服務(wù)。
上一篇:小云智能電話機(jī)器人--如何提升人工智能的用戶體驗(yàn)
下一篇:嘉之元云通訊行業(yè)短信業(yè)務(wù)介紹