Android-12 Kotlin集成Mob的短信驗(yàn)證碼

一直想自己做點(diǎn)小玩意,有希望能夠用戶參與進(jìn)來蝴猪,于是乎就怎么都避不開注冊(cè)登錄這個(gè)環(huán)節(jié)调衰,人呢,比較懶自阱,就希望一步到位嚎莉,思前想后,決定不要注冊(cè)這步沛豌,直接采用短信驗(yàn)證碼的進(jìn)行登錄趋箩,這樣,既安全又簡(jiǎn)潔琼懊,當(dāng)然了阁簸,主要還是人懶;網(wǎng)上搜了很多的短信驗(yàn)證哼丈,都要收費(fèi)启妹,我哭,后來終于發(fā)現(xiàn)了http://www.mob.com/ 醉旦,提供免費(fèi)的短信驗(yàn)證碼功能饶米,使用該服務(wù)需要申請(qǐng)。測(cè)試期間短信條數(shù)限制:20條/天车胡,APP開發(fā)完成后務(wù)必提交到mob.com后臺(tái)審核檬输,開通完全免費(fèi)短信。多的我就不介紹了匈棘,省的大家以為是廣告貼丧慈,下面我就說說我的集成過程吧:

申請(qǐng)賬號(hào),創(chuàng)建應(yīng)用主卫,獲取APP KEY 和 APP Secret

下載SDK逃默,獲取相應(yīng)的aar包

將SDK中的MobCommons.jar,MobTools.jar,SMSSDK-2.0.1.aar,SMSSDKGUI-2.0.1.aar放到了app的libs目錄下。然后在app目錄下的build.gradle簇搅,添加以下代碼:

repositories {
    flatDir {
        dirs 'libs' //就是你放aar的目錄地址
    }
}

dependencies {
    compile name:'SMSSDK-2.1.3',ext:'aar'
}

初始化

 SMSSDK.initSDK(this, "您的appkey", "您的appsecret")

發(fā)送驗(yàn)證碼

 SMSSDK.getVerificationCode(getString(R.string.phone_region), tel)

這里是直接調(diào)用發(fā)送短信驗(yàn)證碼的接口完域,并沒有使用內(nèi)置的開源GUI功能

驗(yàn)證短信驗(yàn)證碼

SMSSDK.submitVerificationCode(getString(R.string.phone_region), tel, code)

短信操作回調(diào)

SMSSDK.registerEventHandler(eh)

val eh: EventHandler = object : EventHandler() {

        override fun afterEvent(event: Int, result: Int, data: Any) {

            if (result == SMSSDK.RESULT_COMPLETE) {
                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                    runOnUiThread {
                        toast("驗(yàn)證碼已發(fā)送")
                    }
                } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                    //獲取驗(yàn)證碼成功
                    Preference.token = telEt.text.toString()
                    startActivity<MainActivity>()
                    finish()
                } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
                    //返回支持發(fā)送驗(yàn)證碼的國家列表
                }
            } else {
                //(data as Throwable).printStackTrace()
                runOnUiThread {
                    toast("驗(yàn)證碼錯(cuò)誤")
                }
            }
        }
    }

最后所有代碼如下:


package com.vslimit.concise.activity

import android.os.Bundle
import android.text.TextUtils
import cn.smssdk.EventHandler
import cn.smssdk.SMSSDK
import com.vslimit.concise.R
import com.vslimit.concise.ui.TimerCount
import com.vslimit.concise.utils.Preference
import kotlinx.android.synthetic.main.activity_login.*
import org.jetbrains.anko.onClick
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.toast

/**
 * Created by vslimit on 16/2/10.
 */
class LoginActivity : BaseActivity() {
    override val layoutResourceId: Int = R.layout.activity_login

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        sendBtn.onClick { attemptSend() }
        loginBtn.onClick {
            login()
        }
        SMSSDK.initSDK(this, "您的appkey", "您的appsecret")
        SMSSDK.registerEventHandler(eh)
    }


    val eh: EventHandler = object : EventHandler() {

        override fun afterEvent(event: Int, result: Int, data: Any) {

            if (result == SMSSDK.RESULT_COMPLETE) {
                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                    runOnUiThread {
                        toast("驗(yàn)證碼已發(fā)送")
                    }
                } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                    //獲取驗(yàn)證碼成功
                    Preference.token = telEt.text.toString()
                    startActivity<MainActivity>()
                    finish()
                } else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES) {
                    //返回支持發(fā)送驗(yàn)證碼的國家列表
                }
            } else {
                //(data as Throwable).printStackTrace()
                runOnUiThread {
                    toast("驗(yàn)證碼錯(cuò)誤")
                }
            }
        }
    }


    fun attemptSend() {
        val tel = telEt.text.toString()
        if (TextUtils.isEmpty(tel)) {
            toast("手機(jī)號(hào)碼不能為空")
        } else {
            val timeCount: TimerCount = TimerCount(60000, 1000, sendBtn)
            timeCount.start()
            SMSSDK.getVerificationCode(getString(R.string.phone_region), tel)
        }
    }


    fun login() {
        val tel = telEt.text.toString()
        val code = codeEt.text.toString()
        if (TextUtils.isEmpty(tel)) {
            toast("手機(jī)號(hào)碼不能為空")
        } else if (TextUtils.isEmpty(code)) {
            toast("驗(yàn)證碼不能為空")
        } else {
            SMSSDK.submitVerificationCode(getString(R.string.phone_region), tel, code)

        }
    }


    override fun onDestroy() {
        super.onDestroy()
        SMSSDK.unregisterEventHandler(eh)
    }


}

這樣,我們就在Android端實(shí)現(xiàn)了發(fā)送驗(yàn)證碼校驗(yàn)驗(yàn)證碼瘩将,mob還提供了服務(wù)端校驗(yàn)驗(yàn)證碼智能校驗(yàn)驗(yàn)證碼的功能吟税,不過一事不煩二主凹耙,都在app中搞定。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肠仪,一起剝皮案震驚了整個(gè)濱河市肖抱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌藤韵,老刑警劉巖虐沥,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熊经,死亡現(xiàn)場(chǎng)離奇詭異泽艘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)镐依,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門匹涮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人槐壳,你說我怎么就攤上這事然低。” “怎么了务唐?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵雳攘,是天一觀的道長。 經(jīng)常有香客問我枫笛,道長吨灭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任刑巧,我火速辦了婚禮喧兄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啊楚。我一直安慰自己吠冤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布恭理。 她就那樣靜靜地躺著拯辙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颜价。 梳的紋絲不亂的頭發(fā)上涯保,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音拍嵌,去河邊找鬼遭赂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛横辆,可吹牛的內(nèi)容都是我干的撇他。 我是一名探鬼主播茄猫,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼困肩!你這毒婦竟也來了划纽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤锌畸,失蹤者是張志新(化名)和其女友劉穎勇劣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潭枣,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡比默,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盆犁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片命咐。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谐岁,靈堂內(nèi)的尸體忽然破棺而出醋奠,到底是詐尸還是另有隱情,我是刑警寧澤伊佃,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布窜司,位于F島的核電站,受9級(jí)特大地震影響航揉,放射性物質(zhì)發(fā)生泄漏塞祈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一迷捧、第九天 我趴在偏房一處隱蔽的房頂上張望织咧。 院中可真熱鬧,春花似錦漠秋、人聲如沸笙蒙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捅位。三九已至,卻和暖如春搂抒,著一層夾襖步出監(jiān)牢的瞬間艇搀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國打工求晶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留焰雕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓芳杏,卻偏偏與公主長得像矩屁,于是被迫代替她去往敵國和親辟宗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容