Android一键登录-三大运营商
Posted Q-CODER
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android一键登录-三大运营商相关的知识,希望对你有一定的参考价值。
目录
业务背景:
在条件允许的情况下,通过运行商提供的服务,进行【一键登录】。简化用户的登录操作,提供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一键登录-三大运营商的主要内容,如果未能解决你的问题,请参考以下文章