Android一键登录-三大运营商

Posted Q-CODER

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android一键登录-三大运营商相关的知识,希望对你有一定的参考价值。

目录

业务背景:

效果图:

重要的预告:

Android 接入流程:

1.Demo 浅析

2.接入思路分析

第一种:启动登录功能前判断

第二种:直接唤起【一键登录】,失败后再唤起【其他登录方式】

这里引发一个思考:

3.代码接入流程

4.避坑


业务背景:

在条件允许的情况下,通过运行商提供的服务,进行【一键登录】。简化用户的登录操作,提供App的登录注册率以及使用率

效果图:

重要的预告:

  • 整个流程如图所

(图源自网络[掘金大佬-NanBox],侵删)

  • 该方案下,不允许使用完全自定义的授权页。但是可以通过属性配置,进行一定的修改。可修改的属性如下图所示

android 接入流程:

1.Demo 浅析

通常第一步都是下载官方 Demo 后,进行一番调试。

链接:https://pan.baidu.com/s/1RX5yGp06X4GYCr4b36Sv3A 提取码:qbx0

简单分析 Demo 项目架构,希望帮助大家尽快玩转它

首先,我们要知道这个 Demo,是包括【一键登录】和【本机号码校验】两个功能。这次我们只使用到前者,所以后者内容不在这里讲述。

主要看到下列三方面:

Config-就是上面预告知识中说到的配置项,主要是授权页的一些配置项

OneKeyLoginActivity - 登录页面

MessageActivity - 模拟【其他登录方式】页面

剩下的就自己去玩吧。

2.接入思路分析

基于判断是否支持【一键登录】的时机 提供两种接入思路

第一种:启动登录功能前判断

判断的方式可以通过 mPhoneNumberAuthHelper.checkEnvAvailable(PhoneNumberAuthHelper.SERVICE_TYPE_LOGIN)

是否支持【一键登录】。该流程未经检验,大家可以执行验证。

第二种:直接唤起【一键登录】,失败后再唤起【其他登录方式】

Demo 也是第二种方式。这种方式需要用到一个 壳Activity。但这个壳主要的作用是初始化SDK,以及做逻辑判断和处理(即并无实际内容展示)。

这里引发一个思考:

既然用不到Activity的内容,那能不能换种方式呢呢?对于单例,我思考后,一开始觉得是没问题的,但是等写完后,发现我写成了一个OneKeyLoginHelper的单例,发现相应逻辑处理需要传入 activity 或者 fragment 的引用。那么我们知道单例中是不能持有这样的引用的(这里可以考虑使用弱引用),这会导致内容泄漏。不知道是否还有其他的方法?还会继续思考。

3.代码接入流程

//STEP1.初始化监听器(这里根据业务自己做处理)

//STEP2.初始化SDK实例

//STEP3.设置SDK秘钥

//STEP4.唤起一键登录页

4.避坑

接着,讲一下接入过程中,遇到的一些问题。帮大家避免无效劳动,可以有更多的时间学(hua )习(shui)。

问题描述:因为选择了第二种思路,那么会有个壳 Activity 的问题。这个壳,我们不处理的话,是不透明的,这样当我们进到这个壳的时候,再跳转到别的页面就会有个空白页。

解决方案:将壳的主题改为透明色,经过实验,下述代码可以实现。(壳Activity 需要继承 AppCompatActivity)

<style name="Theme.Transparent" parent="@style/Theme.AppCompat.DayNight.NoActionBar">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

问题描述:发现从【授权页】跳到【其他方式登录】的时候,授权页会逐渐变透明,会看到下一层页面的内容。如动图中,粉红色的箭头所示。

解决方案:可以直接忽略,这个是 SDK 本身的问题。因为阿里那边给的回复是:(是否有最新解决方案,会及时更新,或者可以以你们当时咨询的为准)


欢迎各位评论区留言交流。

以上是关于Android一键登录-三大运营商的主要内容,如果未能解决你的问题,请参考以下文章

面试难题:本机号码一键登录原理,你知道吗?

面试官:本机号码一键登录,是怎么实现的?

本机号码一键登录原理与应用

还在开发短信验证码登录?试试(本机号码一键登录)

利用AOP实现的更高端的Android集中式登录

React Native 一键登录