极光小课堂 | 极光一键登录集成手册--Android
前言
某天翻阅极光文档时,发现极光也推出了一键登录,先来看个效果:
说句实在话,而今的互联网变更速度,简直让人目不暇接,单单从用户体验来讲,着实让人各种眼光一亮,闪闪冒金星。现在还能记得 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. 极光推送集成背景 最近在研究推送和长连接,调研了市场上的几家平台,综合考虑选择了极光推送.长连接保活一直是一个大问题,尤其是 Android 方面.在最近谷歌公司的几次更新之后,Android ...
- 极光推送 请检查参数合法性_极光小课堂 | 极光推送在人脸识别终端管理系统中的应用...
项目背景 最近开发的一款人脸识别终端管理系统,主要包括运营平台.企业后台管理系统.APP 端.智能人脸识别终端模块. 下图是系统的架构图: 其中各个模块之间都需要即时通讯,比如: APP 端用户注册完 ...
- 极光小课堂 | 极光短信与 Java 整合指南
前言 今天大Boss给小优优说,你给咱们的注册系统增加一下短信验证吧.后来一it好友告诉小优优,说用极光短信吧,毕竟人家就是做消息推送出身的,技术以及实时性肯定没的说. 小优优觉得说的对,毕竟人家是专 ...
- 极光小课堂 | 极光推送之 Android 客户端使用指南——基础篇
" 本文中涉及到的所有代码现已在 Github 上开源,地址:https://github.com/xuexiangjys/JPushSample" 01 前言 - 极光推送是国内 ...
- 阿里云本机一键登录集成
阿里云一键登录集成 //本机号码一键登录 @weakify(self);//环境检查,异步返回[[TXCommonHandler sharedInstance] checkEnvAvailableWi ...
- 微信小程序手机号一键登录--获取用户手机号--微信小程序一键登录
前提:现在微信小程序登录我参考了几个大的公司的登录,基本分下面几种 1.微信用户一键登录,授权用户基本信息,不获取手机号 2.微信手机号一键登录,根据手机号去关联在其他平台数据,用手机号关联.然后再调 ...
- 极光小课堂 | PostCss浅析之词法分析
0 1 前 言 在前端日益发展的今天,抽象语法树(AST,Abstract Syntax Tree)已经成为了前端学者们耳熟能详的概念.趋于好奇心,在百忙之中窥探 PostCss 源码,好在代码量 ...
- 接口入参形式_极光小课堂|手把手教你做接口测试
接口测试是项目测试过程中非常重要的一环,测试的对象是接口,所以提早介入测试,对代码逻辑进行全面验证,就会更早的发现程序的问题.同时,接口测试比UI测试效率更高,并且更容易验证极端和异常的情况. 那么什 ...
- uniapp 小程序 微信一键登录
效果图 代码 //小程序登录getUserProfile() {var that = thisuni.getUserProfile({desc: '用于登录',success(res) {that.u ...
最新文章
- php制作明信片,用PS如何制作明信片?PS制作明信片图文介绍
- Windows XP安装Python,最高支持到3.4.4,后续版本不支持
- linux下nginx部署以及配置详解
- 基本排序算法及分析(二):冒泡排序
- 论文浅尝 | 解决知识图谱补全中的长尾关系和不常见实体问题
- (pytorch-深度学习)门控循环单元(GRU)
- 我不是bug神(JVM问题排查)
- 大学物理实验电学基本参数的测量实验报告_思你所想 | 那些年,我们做过的实验...
- 微型计算机接口与技术答案,微型计算机接口技术与应用习题答案(刘乐善).doc
- app的证书签名,eclipse的sha1和md5值
- 三、MQTT Windosw下的 进一步调试
- 惊恐,AI黑洞:基于 AI 篡改的网络攻击来了
- 如何将几个pdf合并成一个pdf?
- 迪士尼电影越来越受欢迎
- 【精品教程】Android应用开发详解pdf分享
- HTML+CSS实现背景图片铺满页面的方法
- Virtualbox源码分析16 APIC虚拟化1 APIC概念和初始化
- Java基础 - 第一章 计算
- 虚拟机VMware中Linux联网
- Oulipo(kmp)
热门文章
- 浏览器网页 自动转格式化显示json数据
- 利用freemarker模板引擎进行word导出
- word标题和文字直接的空格
- 航拍仙人掌识别_使用转移学习识别空中仙人掌
- Ubuntu 向日葵被远控无法显示图形化界面的解决方案
- 618什么数码产品值得拥有、好评众多的数码产品清单
- Js isNaN()和Number.isNaN()、isFinite() 和 Number.isFinite()
- PMP 敏捷管理相关知识点
- 前端「HTML+CSS」零基础入门学习笔记
- zynq获取程序运行时间