黑暗中,追尋那微亮的曙光。
 前言某天翻閱極光文檔時(shí),發(fā)現(xiàn)極光也推出了一鍵登錄,先來看個(gè)效果圖:  之前有幸體驗(yàn)了 Mob 的一鍵登錄,而今來體驗(yàn)下極光的一鍵登錄,掃描二維碼想下載個(gè) Demo 體驗(yàn)玩一波,尷尬的是,掃出了維護(hù)中,本站暫時(shí)關(guān)閉,艾瑪??????。此問題已反饋極光工作人員。  說句實(shí)在話,而今的互聯(lián)網(wǎng)變更速度,簡(jiǎn)直讓人目不暇接,單單從用戶體驗(yàn)來講,著實(shí)讓人各種眼光一亮,閃閃冒金星?,F(xiàn)在還能記得 Android 4.x 版本的大黑主題,五彩斑斕的黑色。?????? 回到正題上,單純從用戶登錄而言,同樣也是各種迭代升級(jí),不斷的進(jìn)化,不斷的提升用戶友好度。從傳統(tǒng)手機(jī)號(hào)碼 + 驗(yàn)證碼方式,當(dāng)現(xiàn)在三方登錄,再到而今的一鍵登錄,很慶幸,可以感受互聯(lián)網(wǎng)帶來的魅力。 回顧下傳統(tǒng)登錄方式,也就是通過手機(jī)號(hào)碼 + 驗(yàn)證碼的優(yōu)勢(shì): 再來說說個(gè)人認(rèn)為的劣勢(shì)吧。 驗(yàn)證碼短信不及時(shí): 很多時(shí)候都會(huì)出現(xiàn)這么一種情況,點(diǎn)擊了驗(yàn)證碼,也開始了倒計(jì)時(shí),但是手機(jī)遲遲接受不到驗(yàn)證碼的信息,著急的時(shí)候真心很無奈,尤其高峰期; 手殘黨易輸入錯(cuò)誤: 單純個(gè)人而言,很多時(shí)候會(huì)尷尬的輸入錯(cuò)誤,然后包括到現(xiàn)在為止,每次輸入驗(yàn)證碼都要小心翼翼并且一個(gè)個(gè)校對(duì)很多次。??????
當(dāng)然以上僅僅是個(gè)人使用過程中個(gè)人理解,也歡迎各位交流學(xué)習(xí)。 那么這個(gè)一鍵登錄,相比傳統(tǒng)又具有什么優(yōu)勢(shì)呢? 顯而易見的,從用戶輸入手機(jī)號(hào)、發(fā)送驗(yàn)證碼、驗(yàn)證驗(yàn)證碼有效性,直接升級(jí)到只需要點(diǎn)個(gè)按鈕即可完成上述三步操作; 針對(duì)后臺(tái)而言,也省略了對(duì)接第三方發(fā)送短信 SDK 、提供前端接口以及驗(yàn)證前端發(fā)送數(shù)據(jù)有效性; 針對(duì)前端而言,用戶一步操作即可替換原有三步操作,且直接可以拿到有效手機(jī)號(hào),省去很多 Code,何樂而不為?并且再也不需要挨個(gè)找運(yùn)營(yíng)商官方文檔挨個(gè)痛苦集成了。
小伙伴說了,你看了嗎,你就胡咧咧。好,哥兒們我給你附上三大運(yùn)行商的鏈接: 三大運(yùn)營(yíng)商地址已附上,不服的小伙伴隨時(shí)查閱~ 其實(shí),萬物歸根,根本還是簡(jiǎn)單了。大道歸一,大道為簡(jiǎn),才是真理?;ɡ锖诟懔?n 多,僅僅就是注冊(cè)登錄,除非死鐵粉,不然至少個(gè)人直接 Say Bye or 跳過。 實(shí)踐說的天花爛墜,不如真正實(shí)踐一波。何況好東西,誰不想趕快體驗(yàn)一波?感受下它帶來的魅力呢?  一、翻閱極光,簡(jiǎn)單了解此物誕生于 18 年,天吶,我現(xiàn)在才知道:  打開極光關(guān)于認(rèn)證介紹,簡(jiǎn)單截個(gè)圖:  目前已支持平臺(tái): 未支持(包含尚未開放)平臺(tái): 二、移步 Android SDK 集成指南首先極光官網(wǎng)創(chuàng)建個(gè)項(xiàng)目,其次記得配置對(duì)應(yīng)平臺(tái)所需信息,這里為大家附上截取官網(wǎng)的一個(gè)說明:  關(guān)鍵信息已紅線標(biāo)明。 隨后我們開始設(shè)置 Android 應(yīng)用包名以及應(yīng)用簽名,如下圖所示:  這里單獨(dú)注明下之前記錄的獲取 MD5 方式: 之后配置我們的一鍵登錄 RSA 加密公鑰:  關(guān)于 RSA 加密公鑰,可自己代碼生成,也可以直接使用在線網(wǎng)址直接生成,將公私鑰保存下來即可,簡(jiǎn)單方便快捷: 比如我在這里使用的非對(duì)稱加密公鑰: -----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBsfT9nfWqRs1Z10m1U7znvGwE
8ddPsRUvSurJaSV7jxEVVZUUiUoeK1lh+fVOoMAosxCEv+iqQDysUHR52QcPTXEv
Mv0wp5YlCHIj7xckKVU2jxl49zVmaUxhvUXH1C9dbkOBGRtSt9bC7TkvYtVa4X3n
Xh0+GMBQ8MNNBfywSwIDAQAB
-----END PUBLIC KEY-----
復(fù)制代碼
以及非對(duì)稱加密私鑰: -----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMGx9P2d9apGzVnX
SbVTvOe8bATx10+xFS9K6slpJXuPERVVlRSJSh4rWWH59U6gwCizEIS/6KpAPKxQ
dHnZBw9NcS8y/TCnliUIciPvFyQpVTaPGXj3NWZpTGG9RcfUL11uQ4EZG1K31sLt
OS9i1VrhfedeHT4YwFDww00F/LBLAgMBAAECgYEAk4SuOs4oANRFp4vgtjodYDzP
5AAwZKBQqyEaqeTryCvQ7fetP+PD0DBhtc4CNy0UzKp8BS6Hy8p6qx3nZ7mTto3H
aRIG+K+UhD1BOi8ZaxlIV+DBIyEHOnIjwIgKXg0j5bXqI+qLo6zC84O5hlEJPwDR
Wy6tmj8dGXPxY75JUukCQQD3c0YGjdx0Qw6e+zH0g0cYKGmbGiDI1y+5QnZ83Yi2
i3kZUTCLEPIHaiC50u9VD5G6XaPEBv/psLFSbwD84zVHAkEAyGM2hpiVEsu/FTwr
rsONH8O350xTOHmtNHdwRXRgQEvuf5GUMluwxnca/mWb38IVHKQCwGlLxEUZkuXR
A8u+3QJAetjnsulKwQ1pfNQIgPOLoBqwEyhtjkgGkVrFqEfzT2z+uersxp2rCrNN
e/OUjg4ksvk6DF/NPR9TaTFitCm4kQJAeAbtRwun5z1BNF/5LlIVetxJkHKoOmCv
fYi5J/EAIiMZNTIm2U8QgKAg/BYymoFvEduvhj7L0kEtg07CtopYxQJBANW27X9y
DLuxwi6mYJauG1VQ6z4cjDm+TxuuOVcxba4q+VgHufycKyuqsSu6BaqiPeg2+2XF
Td22XO52Jc3EGw8=
-----END PRIVATE KEY-----
復(fù)制代碼
搞定之后,提交審核即可。 這些操作完成記得和極光的商務(wù)溝通下,不然會(huì)被打回這些操作完成記得和極光的商務(wù)溝通下,不然會(huì)被打回這些操作完成記得和極光的商務(wù)溝通下,不然會(huì)被打回 重要的事情說三遍~ 客服小姐姐聲音很甜~ 極光同樣為我們提供了倆種集成方案: 本地工程配置 jcenter 自動(dòng)集成步驟
2020 年了,必須自動(dòng)集成搞起來呀~ 2.1 配置權(quán)限 <!-- Required -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.GET_TASKS" />
<!-- Optional -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于開啟 debug 版本的應(yīng)用在6.0 系統(tǒng)上 層疊窗口權(quán)限 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
復(fù)制代碼
2.2 處理兼容 Android P 默認(rèn)限制使用 Http 請(qǐng)求在 res 目錄下新建 xml 目錄,并新建一個(gè)名為 network_security_config.xml 的文件,拷貝如下內(nèi)容到 xml 里: <?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
復(fù)制代碼
在 AndroidManifest.xml 中配置下: <application
...
android:networkSecurityConfig="@xml/network_security_config" >
</application>
復(fù)制代碼
2.3 檢查 project 的 gradle 已支持 jcenter一般而言,Android Studio 項(xiàng)目默認(rèn)配置了 Jcenter,但是我們還是要檢查一番。 點(diǎn)開工程下 gradle 文件,檢查是否配置如下注釋倆個(gè)地方。 buildscript {
repositories {
google()
jcenter() // 這個(gè)
}
// ...
}
allprojects {
repositories {
google()
jcenter() // 還有這個(gè)東東
}
}
// ...
復(fù)制代碼
2.4 在 module 的 gradle 中配置并添加依賴android {
// ...
defaultConfig {
// ...
ndk {
//兼容的 cpu 類型
abiFilters 'armeabi'
}
// 極光配置
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "App Key", //Portal上注冊(cè)的包名對(duì)應(yīng)的 appKey.
JPUSH_CHANNEL : "developer-default", //暫時(shí)填寫默認(rèn)值即可.
]
}
}
dependencies {
// ...
implementation 'cn.jiguang.sdk:jverification:2.5.2'
implementation 'cn.jiguang.sdk:jcore:2.1.4
}
復(fù)制代碼
關(guān)于依賴最新版本號(hào)可直接訪問如下鏈接查看即可: 2.5 添加極光認(rèn)證混淆配置 -dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
-dontwarn com.cmic.**
-keep class com.cmic.** { *; }
-dontwarn com.unicom.**
-keep class com.unicom.** { *; }
-dontwarn cn.com.chinatelecom.**
-keep class cn.com.chinatelecom.** { *; }
復(fù)制代碼
2.6 Application 中初始化極光認(rèn)證package com.hlq.jiguangdemo.app
import android.app.Application
import android.util.Log
import cn.jiguang.verifysdk.api.JVerificationInterface
import com.hlq.jiguangdemo.BuildConfig
/**
* @author:heliquan
* @date:2020-01-10 00:29
* @desc:
*/
class BaseApplication : Application() {
override fun onCreate() {
super.onCreate()
initJPushSetting()
}
/**
* 初始化極光認(rèn)證
*/
private fun initJPushSetting() {
JVerificationInterface.init(
this,
5000
) { code, msg ->
val logMsg = when (code) {
8000 -> {
"===> 極光認(rèn)證初始化成功~! $msg"
}
else -> {
"===> 極光認(rèn)證初始化失??! $msg"
}
}
Log.e("HLQ_Struggle", logMsg)
}
// 打開調(diào)試模式
JVerificationInterface.setDebugMode(BuildConfig.DEBUG)
}
}
復(fù)制代碼
別忘記 AndroidManifest 中配置 name 屬性。 <application
...
android:name=".app.BaseApplication"
...>
復(fù)制代碼
三、實(shí)戰(zhàn)Android 6.0 動(dòng)態(tài)申請(qǐng)權(quán)限,這個(gè)鍋剛出來時(shí)那是相當(dāng)痛苦啊,各種憂愁。同樣,我這邊有個(gè)設(shè)備是 Android 9.0 系統(tǒng),那么在基于以上配置完成后,我們首先開始動(dòng)態(tài)申請(qǐng)權(quán)限。 3.1 動(dòng)態(tài)申請(qǐng) READ_PHONE_STATE 權(quán)限關(guān)于權(quán)限管理庫,網(wǎng)上琳瑯滿目,在此特意推薦一款個(gè)人使用較為不錯(cuò)的動(dòng)態(tài)權(quán)限管理庫: 使用也是很 easy,F(xiàn)ollow me~ 由于個(gè)人習(xí)慣使用 Kotlin ,我們先進(jìn)行 PermissionsDispatcher 基礎(chǔ)配置 (app/build) : // ...
apply plugin: 'kotlin-kapt'
// ...
dependencies {
// ...
// 動(dòng)態(tài)權(quán)限申請(qǐng)
implementation "org.permissionsdispatcher:permissionsdispatcher:4.6.0"
kapt "org.permissionsdispatcher:permissionsdispatcher-processor:4.6.0"
}
復(fù)制代碼
隨后我們?cè)谝暾?qǐng)權(quán)限的地方新增注解并開始動(dòng)態(tài)請(qǐng)求權(quán)限: package com.hlq.jiguangdemo
import android.Manifest
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import cn.jiguang.verifysdk.api.JVerificationInterface
import permissions.dispatcher.NeedsPermission
import permissions.dispatcher.OnShowRationale
import permissions.dispatcher.RuntimePermissions
// 第一步:新增 RuntimePermissions 注解,標(biāo)明在編譯時(shí)生成對(duì)應(yīng)請(qǐng)求映射
@RuntimePermissions
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
/**
* 一鍵登錄
*/
public fun oneKeyLogin(view: View) {
// 第四步:檢查權(quán)限是否授予
// 寫這個(gè)之前記得 build 下,Runtime 運(yùn)行時(shí)生成
requestReadPhoneStateWithPermissionCheck()
}
private fun handlerOneKeyLogin() {
// 這里開始編寫實(shí)際的一鍵登錄具體請(qǐng)求代碼
}
/**
* 權(quán)限請(qǐng)求回調(diào)
*/
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
onRequestPermissionsResult(requestCode, grantResults)
}
/**
* 第二步:指明對(duì)應(yīng)要?jiǎng)討B(tài)申請(qǐng)的權(quán)限,可聲請(qǐng)多個(gè)權(quán)限
*/
@NeedsPermission(Manifest.permission.READ_PHONE_STATE)
fun requestReadPhoneState() {
handlerOneKeyLogin()
}
/**
* 第三步:解釋說明申請(qǐng)權(quán)限具體作用,隨后 Build
*/
@OnShowRationale(Manifest.permission.READ_PHONE_STATE)
fun onRequestReadPhoneStateRationale() {
Toast.makeText(this, "請(qǐng)同意 App 請(qǐng)求授權(quán)!", Toast.LENGTH_SHORT).show()
}
}
復(fù)制代碼
上述代碼中,第一步以及第二步必須填寫,而為了程序的健壯性,一般我們還會(huì)添加例如用戶拒絕權(quán)限以及用戶點(diǎn)擊 "不再詢問" 的后續(xù)操作流程,此處僅僅是為了體驗(yàn)極光的一鍵登錄,暫時(shí)完善個(gè)動(dòng)態(tài)申請(qǐng)權(quán)限即可。?????? 3.2 使用前環(huán)境檢測(cè)在使用極光一鍵認(rèn)證前,我們需要具備如下幾個(gè)條件: 極光一鍵認(rèn)證 SDK 是否已初始化完畢; 當(dāng)前的手機(jī)網(wǎng)絡(luò)環(huán)境是否可以使用認(rèn)證(基于流量); 是否授予對(duì)應(yīng)權(quán)限,獲取手機(jī)狀態(tài)等
基于以上三點(diǎn),我們開始完善 oneKeyLogin 一鍵登錄方法: /**
* 一鍵登錄
*/
public fun oneKeyLogin(view: View) {
// 檢查當(dāng)前是否初始化成功極光 SDK
if (JVerificationInterface.isInitSuccess()) {
// 判斷當(dāng)前的手機(jī)網(wǎng)絡(luò)環(huán)境是否可以使用認(rèn)證。
if (!JVerificationInterface.checkVerifyEnable(this)) {
Toast.makeText(this, "[2016],msg = 當(dāng)前網(wǎng)絡(luò)環(huán)境不支持認(rèn)證", Toast.LENGTH_SHORT).show()
return
}
// 檢查權(quán)限是否授予
requestReadPhoneStateWithPermissionCheck()
} else {
Toast.makeText(this, "極光 SDK 尚未初始化成功~!", Toast.LENGTH_SHORT).show()
}
}
復(fù)制代碼
3.3 一鍵登錄首先我們查看 API 文檔了解關(guān)鍵信息:  這點(diǎn)真心佩服極光開發(fā)工程師,幾乎都是如果沒有則自動(dòng)獲取,很是方便,尤其對(duì)于我這樣又懶又菜的小白而言。 接口描述也很是貼心,一起來看:  而關(guān)于點(diǎn)擊授權(quán)事件返回碼,我們提前了解下,方便后續(xù)集成:  為了便于博文演示,還是決定輸入一些返回結(jié)果,古老的 findViewById 不好玩了,嘗嘗 Kotlin 神器吧,來先激活一下(app/build): // 啟動(dòng) Kotlin Android Extensions
androidExtensions {
experimental = true
}
復(fù)制代碼
隨后,我們開始完善我們的一鍵登錄細(xì)節(jié): /**
* 處理一鍵登錄細(xì)節(jié)
*/
private fun handlerOneKeyLogin() {
// 配置 Login Setting
val settings = LoginSettings()
settings.isAutoFinish = true // 登錄完成后自動(dòng)關(guān)閉授權(quán)頁
settings.timeout = 15 * 1000 // 設(shè)置超時(shí)時(shí)間,單位毫秒。 合法范圍(0,30000],范圍以外默認(rèn)設(shè)置為10000
settings.authPageEventListener = object : AuthPageEventListener() {
override fun onEvent(cmd: Int, msg: String?) {
Log.e(TAG, "===> onEvent code:$cmd msg:$msg")
}
}
// 開始一鍵登錄
JVerificationInterface.loginAuth(
this, settings
) { code, content, operator ->
when (code) {
6000 -> { // Login Token 獲取成功
}
else -> {
}
}
tv_login_result.text = "code:$code \n content:$content \n operator:$operator"
}
}
復(fù)制代碼
說的再天花爛墜,沒個(gè)實(shí)際效果也是空說,我們 Run 一波,瞅瞅效果如何:  速度很快,有沒有感覺到~ 3.4 獲取手機(jī)號(hào)在上述步驟中,我們通過一鍵登錄獲取到了 loginToken,而在實(shí)際項(xiàng)目中,我們很多時(shí)候都需要獲取到用戶實(shí)際的手機(jī)號(hào)碼,那么我們?nèi)绾胃鶕?jù) loginToken 獲取用戶手機(jī)號(hào)呢? 別急,往下看~  這個(gè)時(shí)候就需要服務(wù)端童鞋幫助咯,提供一個(gè)接口,通過咱傳遞的 loginToken 獲取對(duì)應(yīng)的手機(jī)號(hào)碼信息咯。 這里不作為重點(diǎn),這里不具體演示 App 發(fā)請(qǐng)求獲取手機(jī)號(hào)咯。  3.5 自定義授權(quán)頁面 UI 樣式 /**
* 自定義授權(quán)頁面 UI 樣式
*/
private fun customUIStyle() {
val qq = ImageView(this)
qq.setImageResource(R.drawable.qq)
val uiConfig = JVerifyUIConfig.Builder()
.setAuthBGImgPath("main_bg")
.setNavColor(-0xff7930)
.setNavText("登錄")
.setNavTextColor(-0x1)
.setNavReturnImgPath("umcsdk_return_bg")
.setLogoWidth(70)
.setLogoHeight(70)
.setLogoHidden(false)
.setNumberColor(-0xcccccd)
.setLogBtnText("本機(jī)號(hào)碼一鍵登錄")
.setLogBtnTextColor(-0x1)
.setLogBtnImgPath("umcsdk_login_btn_bg")
.setAppPrivacyOne("應(yīng)用自定義服務(wù)條款一", "https://www./about")
.setAppPrivacyTwo("應(yīng)用自定義服務(wù)條款二", "https://www./about")
.setAppPrivacyColor(-0x99999a, -0xff7a30)
.setUncheckedImgPath("umcsdk_uncheck_image")
.setCheckedImgPath("umcsdk_check_image")
.setSloganTextColor(-0x666667)
.setLogoOffsetY(50)
.setLogoImgPath("logo_cm")
.setNumFieldOffsetY(170)
.setSloganOffsetY(230)
.setLogBtnOffsetY(254)
.setNumberSize(18)
.setPrivacyState(false)
.setNavTransparent(false)
.addCustomView(
qq, false
) { context, _ ->
Toast.makeText(context, "動(dòng)態(tài)注冊(cè)的其他按鈕222", Toast.LENGTH_SHORT).show()
}
.setPrivacyOffsetY(30).build()
JVerificationInterface.setCustomUIWithConfig(uiConfig)
}
復(fù)制代碼
隨后在我們剛剛處理一鍵登錄的方法中新增此項(xiàng): /**
* 處理一鍵登錄細(xì)節(jié)
*/
private fun handlerOneKeyLogin() {
customUIStyle()
// ...
}
復(fù)制代碼
效果如下,為了演示,效果表介意咯。  有的小伙伴說了,那如果我想要添加自己的一些控件怎么辦呢? 很 easy,參考如下截圖即可,極光文檔寫的忒 6 咯,表怪我忒懶了。  3.6 設(shè)置授權(quán)頁彈窗模式這個(gè)更加 easy 了,由于忒晚了,這里就直接演示 low 到爆的效果咯,細(xì)節(jié)各位慢慢打磨吧~ 先來瞅瞅極光小哥哥為我們搞好的文檔:  Step 1:在 AndroidManifest 中添加授權(quán)頁 Activity 并設(shè)置對(duì)應(yīng)的 style <activity
android:name="cn.jiguang.verifysdk.CtLoginActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTop"
android:screenOrientation="unspecified"
android:theme="@style/ActivityDialogStyle" />
復(fù)制代碼
Step 2:配置具體彈窗 Style <?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="ActivityDialogStyle">
<!--去掉action bar和標(biāo)題欄-->
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<!--背景透明-->
<item name="android:windowIsTranslucent">true</item>
<!--dialog圓角-->
<item name="android:windowBackground">@drawable/jverify_dialog_bg</item>
</style>
</resources>
復(fù)制代碼
Step 3:定義窗口圓角屬性 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas./apk/res/android">
<corners android:radius="5dp"/>
</shape>
復(fù)制代碼
瞅一眼效果:  由于時(shí)間原因,暫時(shí)草草實(shí)現(xiàn)簡(jiǎn)單效果咯。想想明天的任務(wù),頭大。 四、叨叨幾句先說下測(cè)試的結(jié)果: 網(wǎng)絡(luò)情況 | 測(cè)試結(jié)果 |
---|
開啟 WiFi 關(guān)閉流量 | 無法認(rèn)證 | 開啟 WiFi 開啟流量 | 一鍵登錄成功 | 開啟流量 | 一鍵登錄成功 |
特殊情況測(cè)試結(jié)果: SIM 情況 | 測(cè)試結(jié)果 |
---|
有效 SIM 卡 | 一鍵認(rèn)證成功 | 無效 SIM 卡 | 無法認(rèn)證 |
認(rèn)證速度,純屬個(gè)人瞎玩。測(cè)試依據(jù),點(diǎn)擊登錄前記錄當(dāng)前時(shí)間戳,并與 SDK 返回時(shí)間對(duì)比,此處僅供參考。 網(wǎng)絡(luò)情況 | 測(cè)試結(jié)果 |
---|
300 MB 寬帶 WiFi 且開啟流量 | 218ms | 移動(dòng)網(wǎng)絡(luò) | 98ms |
其實(shí)整體流程而言,相對(duì)速度,等待期很短暫。 聊下集成上手度吧。 簡(jiǎn)單說下極光一鍵登錄流程吧:  當(dāng)然里面包含很多的細(xì)節(jié),比如說如何知曉當(dāng)前流量歸屬哪兒個(gè)運(yùn)營(yíng)商,雙卡操作等,這些涉及到我個(gè)人知識(shí)盲區(qū),暫時(shí)不做了解。 整體來說,90 分,很不錯(cuò)。第一次知道極光便是推送,依稀記得簡(jiǎn)簡(jiǎn)單單幾句話,推送搞定,當(dāng)時(shí)那個(gè)興奮吶,內(nèi)心默默把極光小哥哥香了一遍。 最后,感謝極光小哥哥,讓我再次感受并實(shí)實(shí)在在體驗(yàn)了一番。
|