前言

某天翻阅极光文档时,发现极光也推出了一键登录,先来看个效果:

说句实在话,而今的互联网变更速度,简直让人目不暇接,单单从用户体验来讲,着实让人各种眼光一亮,闪闪冒金星。现在还能记得 Android 4.x 版本的大黑主题,五彩斑斓的黑色。

回到正题上,单纯从用户登录而言,同样也是各种迭代升级,不断的进化,不断的提升用户友好度。从传统手机号码 + 验证码方式,到现在三方登录,再到而今的一键登录,很庆幸,可以感受互联网带来的魅力。

传统登录

回顾下传统登录方式,也就是通过手机号码 + 验证码的优势:

  • 操作简单: 输入手机号,输入验证码,即可通过,简单快捷;

  • 知晓人多: 至少我回村大爷大妈都知道大部分软件都可以直接通过手机号 + 验证码方式直接注册,然后就可以随便玩了。

再来说说个人认为的劣势吧:

  • 验证码短信不及时: 很多时候都会出现这么一种情况,点击了验证码,也开始了倒计时,但是手机迟迟接受不到验证码的信息,着急的时候真心很无奈,尤其高峰期;

  • 手残党易输入错误: 单纯个人而言,很多时候会尴尬的输入错误,然后包括到现在为止,每次输入验证码都要小心翼翼并且一个个校对很多次。

一键登录

当然以上仅仅是个人使用过程中个人理解,也欢迎各位交流学习。

那么这个一键登录,相比传统又具有什么优势呢?

  • 显而易见的,从用户输入手机号、发送验证码、验证验证码有效性,直接升级到只需要点个按钮即可完成上述三步操作;

  • 针对后台而言,也省略了对接第三方发送短信 SDK 、提供前端接口以及验证前端发送数据有效性;

  • 针对前端而言,用户一步操作即可替换原有三步操作,且直接可以拿到有效手机号,省去很多 Code,何乐而不为?并且再也不需要挨个找运营商官方文档挨个痛苦集成了。

小伙伴说了,你看了吗,你就胡咧咧。好,哥儿们我给你附上三大运行商的链接:

  • 中国移动

  • 中国电信

  • 中国联通

三大运营商地址已附上,不服的小伙伴随时查阅~

其实,万物归根,根本还是简单。大道归一,大道为简,才是真理。花里胡哨搞了 n 多,仅仅就是注册登录,除非死铁粉,不然至少个人直接 Say Bye or 跳过。

实践

说的天花烂坠,不如真正实践一波。何况好东西,谁不想赶快体验一波?感受下它带来的魅力呢?

翻阅极光,简单了解

此物诞生于 18 年,天呐,我现在才知道:

打开极光关于认证介绍,简单截个图:

移步Android SDK 集成指南

首先极光官网创建个项目,其次记得配置对应平台所需信息,这里为大家附上截取官网的一个说明:

(关键信息已红线标明)

随后我们开始设置 Android 应用包名以及应用签名,如下图所示:

这里单独注明下之前记录的获取 MD5 方式:

  • Android Studio获取SHA1值

之后配置我们的一键登录 RSA 加密公钥:

关于 RSA 加密公钥,可自己代码生成,也可以直接使用在线网址直接生成,将公私钥保存下来即可,简单方便快捷:

  • 在线生成非对称加密公钥私钥对、在线生成公私钥对、RSA Key pair create、生成RSA密钥对

比如我在这里使用的非对称加密公钥:

以及非对称加密私钥:

搞定之后,提交审核即可。

这些操作完成记得和极光的商务沟通下,不然会被打回
这些操作完成记得和极光的商务沟通下,不然会被打回
这些操作完成记得和极光的商务沟通下,不然会被打回

重要的事情说三遍~

客服小姐姐声音很甜~

极光同样为我们提供了俩种集成方案:

  • 本地工程配置

  • jcenter 自动集成步骤

2020年了,必须搞起来呀~

2.1

配置权限

2.2

处理兼容 Android P 默认限制使用 Http 请求

在 res 目录下新建 xml 目录,并新建一个名为 network_security_config.xml 的文件,拷贝如下内容到 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>

在 AndroidManifest.xml 中配置下:

    <application...android:networkSecurityConfig="@xml/network_security_config" ></application>

2.3

检查 project 的 gradle 已支持 jcenter

一般而言,Android Studio 项目默认配置了 Jcenter,但是我们还是要检查一番。

点开工程下 gradle 文件,检查是否配置如下注释俩个地方。

buildscript {    repositories {google()jcenter() // 这个}    // ...}allprojects {    repositories {google()jcenter() // 还有这个东东}
}    // ...

2.4

在 module 的 gradle 中配置并添加依赖

android {    // ...defaultConfig {        // ...ndk {            //兼容的 cpu 类型abiFilters 'armeabi'}        // 极光配置manifestPlaceholders = [JPUSH_PKGNAME : applicationId,JPUSH_APPKEY : "App Key", //Portal上注册的包名对应的 appKey.JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.]}
}dependencies {    // ...implementation 'cn.jiguang.sdk:jverification:2.5.2'implementation 'cn.jiguang.sdk:jcore:2.1.4}

关于依赖最新版本号可直接访问如下链接查看即可:

  • MVNRepository

2.5

添加极光认证混淆配置

    -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.** { *; }

2.6

Application 中初始化极光认证

别忘记 AndroidManifest 中配置 name 属性。

    <application        ...android:name=".app.BaseApplication"...>

实战

Android 6.0 动态申请权限,这个锅刚出来时那是相当痛苦啊,各种忧愁。同样,我这边有个设备是 Android 9.0 系统,那么在基于以上配置完成后,我们首先开始动态申请权限。

3.1

动态申请 READ_PHONE_STATE 权限

关于权限管理库,网上琳琅满目,在此特意推荐一款个人使用较为不错的动态权限管理库:

  • PermissionsDispatcher

使用也是很 easy,Follow me~

由于个人习惯使用 Kotlin ,我们先进行 PermissionsDispatcher 基础配置 (app/build) :

// ...apply plugin: 'kotlin-kapt'// ...dependencies {    // ...// 动态权限申请implementation "org.permissionsdispatcher:permissionsdispatcher:4.6.0"kapt "org.permissionsdispatcher:permissionsdispatcher-processor:4.6.0"}

随后我们在要申请权限的地方新增注解并开始动态请求权限:

上述代码中,第一步以及第二步必须填写,而为了程序的健壮性,一般我们还会添加例如用户拒绝权限以及用户点击 "不再询问" 的后续操作流程,此处仅仅是为了体验极光的一键登录,暂时完善个动态申请权限即可。

3.2

使用前环境检测

在使用极光一键认证前,我们需要具备如下几个条件:

  • 极光一键认证 SDK 是否已初始化完毕;

  • 当前的手机网络环境是否可以使用认证(基于流量);

  • 是否授予对应权限,获取手机状态等;

基于以上三点,我们开始完善 oneKeyLogin 一键登录方法:

3.3

一键登录

首先我们查看 API 文档了解关键信息:

这点真心佩服极光开发工程师,几乎都是如果没有则自动获取,很是方便,尤其对于我这样又懒又菜的小白而言。

接口描述也很是贴心,一起来看:

关于点击授权事件返回码,我们提前了解下,方便后续集成:

为了便于博文演示,还是决定输入一些返回结果,古老的 findViewById 不好玩了,尝尝 Kotlin 神器吧,来先激活一下(app/build):

    // 启动 Kotlin Android ExtensionsandroidExtensions {experimental = true}

随后,我们开始完善我们的一键登录细节:

    /*** 处理一键登录细节*/private fun handlerOneKeyLogin() {        // 配置 Login Settingval settings = LoginSettings()settings.isAutoFinish = true // 登录完成后自动关闭授权页settings.timeout = 15 * 1000 // 设置超时时间,单位毫秒。合法范围(0,30000],范围以外默认设置为10000settings.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"}}

说的再天花烂坠,没个实际效果也是空说,我们 Run 一波,瞅瞅效果如何:

速度很快,有没有感觉到~

3.4

获取手机号

在上述步骤中,我们通过一键登录获取到了 loginToken,而在实际项目中,我们很多时候都需要获取到用户实际的手机号码,那么我们如何根据 loginToken 获取用户手机号呢?

别急,往下看~

这个时候就需要服务端童鞋帮助咯,提供一个接口,通过咱传递的 loginToken 获取对应的手机号码信息咯。

这里不作为重点,这里不具体演示 App 发请求获取手机号咯。

3.5

自定义授权页面 UI 样式

随后在我们刚刚处理一键登录的方法中新增此项:

    /*** 处理一键登录细节*/private fun handlerOneKeyLogin() {customUIStyle()        // ...}

效果如下,为了演示,效果表介意咯。

有的小伙伴说了,那如果我想要添加自己的一些控件怎么办呢?

很 easy,参考如下截图即可,极光文档写的忒 6 咯,表怪我忒懒了。

3.6

自定义授权页面 UI 样式

这个更加 easy 了,由于忒晚了,这里就直接演示 low 到爆的效果咯,细节各位慢慢打磨吧~

先来瞅瞅极光小哥哥为我们搞好的文档:

Step 1:在 AndroidManifest 中添加授权页 Activity 并设置对应的 style

  <activityandroid:name="cn.jiguang.verifysdk.CtLoginActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:launchMode="singleTop"android:screenOrientation="unspecified"android:theme="@style/ActivityDialogStyle" />

Step 2:配置具体弹窗 Style

<?xml version="1.0" encoding="utf-8"?><resources><style name="ActivityDialogStyle"><item name="android:windowActionBar">false</item><item name="android:windowNoTitle">true</item><item name="android:windowIsTranslucent">true</item><item name="android:windowBackground">@drawable/jverify_dialog_bg</item></style></resources>

Step 3:定义窗口圆角属性

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"><corners android:radius="5dp"/></shape>

瞅一眼效果:

总结

聊下集成上手度吧。

  • 上手 easy,文档写的相对来说蛮不错,新手通俗易懂;

简单说下极光一键登录流程吧:

当然里面包含很多的细节,比如说如何知晓当前流量归属哪儿个运营商,双卡操作等,这些涉及到我个人知识盲区,暂时不做了解。

整体来说,90 分,很不错。第一次知道极光便是推送,依稀记得简简单单几句话,推送搞定,当时那个兴奋呐,内心默默把极光小哥哥香了一遍。

END

关于极光

极光(Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的开发者服务提供商。极光专注于为移动应用开发者提供稳定高效的消息推送、即时通讯、统计分析、极光分享、短信、一键认证、深度链接等开发者服务。截止到2019年12月份,极光已经为超过50万移动开发者和145.2万款移动应用提供服务,其开发工具包(SDK)安装量累计336亿,月度独立活跃设备13.6亿部。同时,极光持续赋能开发者和传统行业客户,推出精准营销、金融风控、市场洞察、商业地理服务产品,致力于为社会和各行各业提高运营效率,优化决策制定。

极光小课堂 | 极光一键登录集成手册--Android相关推荐

  1. 极光小课堂 | 极光推送集成解决方案

    1. 极光推送集成背景 最近在研究推送和长连接,调研了市场上的几家平台,综合考虑选择了极光推送.长连接保活一直是一个大问题,尤其是 Android 方面.在最近谷歌公司的几次更新之后,Android ...

  2. 极光推送 请检查参数合法性_极光小课堂 | 极光推送在人脸识别终端管理系统中的应用...

    项目背景 最近开发的一款人脸识别终端管理系统,主要包括运营平台.企业后台管理系统.APP 端.智能人脸识别终端模块. 下图是系统的架构图: 其中各个模块之间都需要即时通讯,比如: APP 端用户注册完 ...

  3. 极光小课堂 | 极光短信与 Java 整合指南

    前言 今天大Boss给小优优说,你给咱们的注册系统增加一下短信验证吧.后来一it好友告诉小优优,说用极光短信吧,毕竟人家就是做消息推送出身的,技术以及实时性肯定没的说. 小优优觉得说的对,毕竟人家是专 ...

  4. 极光小课堂 | 极光推送之 Android 客户端使用指南——基础篇

    " 本文中涉及到的所有代码现已在 Github 上开源,地址:https://github.com/xuexiangjys/JPushSample" 01 前言 - 极光推送是国内 ...

  5. 阿里云本机一键登录集成

    阿里云一键登录集成 //本机号码一键登录 @weakify(self);//环境检查,异步返回[[TXCommonHandler sharedInstance] checkEnvAvailableWi ...

  6. 微信小程序手机号一键登录--获取用户手机号--微信小程序一键登录

    前提:现在微信小程序登录我参考了几个大的公司的登录,基本分下面几种 1.微信用户一键登录,授权用户基本信息,不获取手机号 2.微信手机号一键登录,根据手机号去关联在其他平台数据,用手机号关联.然后再调 ...

  7. 极光小课堂 | PostCss浅析之词法分析

    0 1 前   言 在前端日益发展的今天,抽象语法树(AST,Abstract Syntax Tree)已经成为了前端学者们耳熟能详的概念.趋于好奇心,在百忙之中窥探 PostCss 源码,好在代码量 ...

  8. 接口入参形式_极光小课堂|手把手教你做接口测试

    接口测试是项目测试过程中非常重要的一环,测试的对象是接口,所以提早介入测试,对代码逻辑进行全面验证,就会更早的发现程序的问题.同时,接口测试比UI测试效率更高,并且更容易验证极端和异常的情况. 那么什 ...

  9. uniapp 小程序 微信一键登录

    效果图 代码 //小程序登录getUserProfile() {var that = thisuni.getUserProfile({desc: '用于登录',success(res) {that.u ...

最新文章

  1. php制作明信片,用PS如何制作明信片?PS制作明信片图文介绍
  2. Windows XP安装Python,最高支持到3.4.4,后续版本不支持
  3. linux下nginx部署以及配置详解
  4. 基本排序算法及分析(二):冒泡排序
  5. 论文浅尝 | 解决知识图谱补全中的长尾关系和不常见实体问题
  6. (pytorch-深度学习)门控循环单元(GRU)
  7. 我不是bug神(JVM问题排查)
  8. 大学物理实验电学基本参数的测量实验报告_思你所想 | 那些年,我们做过的实验...
  9. 微型计算机接口与技术答案,微型计算机接口技术与应用习题答案(刘乐善).doc
  10. app的证书签名,eclipse的sha1和md5值
  11. 三、MQTT Windosw下的 进一步调试
  12. 惊恐,AI黑洞:基于 AI 篡改的网络攻击来了
  13. 如何将几个pdf合并成一个pdf?
  14. 迪士尼电影越来越受欢迎
  15. 【精品教程】Android应用开发详解pdf分享
  16. HTML+CSS实现背景图片铺满页面的方法
  17. Virtualbox源码分析16 APIC虚拟化1 APIC概念和初始化
  18. Java基础 - 第一章 计算
  19. 虚拟机VMware中Linux联网
  20. Oulipo(kmp)

热门文章

  1. 浏览器网页 自动转格式化显示json数据
  2. 利用freemarker模板引擎进行word导出
  3. word标题和文字直接的空格
  4. 航拍仙人掌识别_使用转移学习识别空中仙人掌
  5. Ubuntu 向日葵被远控无法显示图形化界面的解决方案
  6. 618什么数码产品值得拥有、好评众多的数码产品清单
  7. Js isNaN()和Number.isNaN()、isFinite() 和 Number.isFinite()
  8. PMP 敏捷管理相关知识点
  9. 前端「HTML+CSS」零基础入门学习笔记
  10. zynq获取程序运行时间