前言
一键登录功能现在很多app都有,产品就选择了个推,为什么不选择其它平台呢。产品给了答案有2点,第一点,有1千条是免费的,费用和其它平台差不多;第二点,文档清晰,对比一下其它的,的确个推这方面做的更好,小小白都能简单接入,那我们就来看看吧。
一键登录
介绍
个验一键认证产品整合了三大运营商的网关认证能力,并且兼容iOS和Android的智能手机,做到了三大运营商网络打通、常见机型全覆盖的效果。“一键认证”产品简化了登录的流程,为用户首次登录APP提供了畅通无阻的通道,有效地减少了他们的等待时间,帮助他们迅速地建立起与APP的连接。
一键登录具备授权页面,APP开发者经用户授权后可获得号码,适用于注册、登录等场景;
接入于初始化
1.导入GYSDK。
pod 'GYSDK'
2.在appdelegate初始化
// AppDelegate
[GeYanSdk startWithAppId:kGyAppID withCallback:^(BOOL isSuccess, NSError *error, NSString *gyUid) { }];
这个的gyUid要保存一下,后面请求我们服务器的时候要用到。
流程接入
我们先看一下流程图,圈住的就是核心。其它的自己再详细看看就好。
核心点一共有3个,先附上文档链接:docs.getui.com/geyan/mobil…
预登录
直接在我们要跳转登录的页面进行预登录,当然也可以提前请求也行。
[GeYanSdk preGetToken:^(NSDictionary * _Nullable verifyDictionary) {
if ([verifyDictionary[@"code"] isEqualToNumber: @30000]) {
// 预登录成功
}
}];
作用:预登录操作用于提前判定当前网络环境是否适合使用一键登录。有xG网络链接且有网就会返回true。
进入授权页面
预登录成功,我们就可以点击一个入口,就跳转到授权页面,授权页面可以弹起一个框,也可以全屏,你也可以理解为登录页,记住这个页面VC不用我们alloc。
[GeYanSdk oneTapLogin:self withViewModel:[_gyAuthManger configCustomFullScreenModel] andCallback:^(NSDictionary * _Nullable verifyDictionary) {
if ([verifyDictionary[@"code"] isEqualToNumber:@30000]) {
// 点击一键登录返回,获取teken
}
}];
作用:授权页面主要就是换取token,来请求我们服务器获取登录信息。
请求服务器获取登录信息
上一步我们已经换取token,这时候我们结合初始化的gyUid,传给我们呢后台就能获取到登录信息了。
怎么请求呢,这个要看后端返回接口是怎样的,到这里整个流程就基本完成了。
配置登录页面信息
有没有发现上两步,我们配置了[_gyAuthManger configCustomFullScreenModel] ,这里面包装了登录信息。返回的是GyAuthViewModel。
全屏样式
也可以配置其它唤起样式。
authViewModel.pullAuthVCStyle = OLPullAuthVCStylePush;
导航栏
可以配置导航栏标题,导航栏背景颜色,返回按钮图片,返回按钮位置于大小。
authViewModel.naviTitle = [[NSAttributedString alloc] initWithString:@"登录"];
authViewModel.naviBgColor = [UIColor clearColor];
authViewModel.naviBackImage = [UIImage imageNamed:@"nav_bar_back_icon"];
OLRect backButtonRect = {0, 0, 5, 0, 0, 0, {40, 40}};
authViewModel.backButtonRect = backButtonRect;
这里面简单说下OLRect,前面3个是竖屏的到顶部距离,X轴距离,左边距离。接着3个是横屏的。最后大括号是大小。
appLogo
appLogo,设置图片。
logoRect,设置位置大小。
背景图片
backgroundImage,背景图片。
条款勾选
defaultCheckBoxState,默认为NO。
checkedImage,勾选的图片。
uncheckedImage,没有勾选的图片。
checkBoxSize,勾选的大小。
隐私条款
privacyTermsAttributes,隐私条款的样式。
termTextColor,隐私条款普通文字的颜色,例如'我同意'之类的文字。
additionalPrivacyTerms,额外条款信息。
auxiliaryPrivacyWords, 自定义文字内容。
hasQuotationMarkOnCarrierProtocol,是否有<<>>。
本机号码按钮
authButtonTitle,按钮内容,如'一键登录'。
authButtonCornerRadius,按钮圆角。
authButtonImages,按钮背景图片的3种样式。
authButtonRect,按钮的位置于大小。
认证服务文字
sloganRect,内容位置大小。
sloganTextColor,内容颜色。
sloganTextFont,内容字体大小。
本机号码
phoneNumFont,号码字体大小。
phoneNumRect,号码位置大小。
换号
switchButtonHidden,是否显示换号
自定义视图
这个才重点,如果我们还想加入自己的view,就要通过这个来实现了。
setCustomUIHandler。
效果图
这里的换号和app图标下的文字就是自定义做的。
遇到的问题
补充一下遇到的问题,首次安装的app(删掉重装没用),会弹出网络授权,这时候我们初始化是会失败的,失败就意味着拿不到gyuid,这时候,用户授权后,调用预登录接口是没有问题的。
问题就来了,预登录没问题,我们跳到了一键登录,结果点击登录拿到token,要把gyuid和token给我们后台接口,是不可能了。
解决方案:初始化还有一个超时的startWithAppId withTimeout的方法,我们可以在报10006网络请求异常的时候,多调用几次。还有在调用预登录时候,先判断gyuid是否为空,空就不用一键登录方式。
总结
整体上除了配置登录页需要消耗点时间,其它都是很快就能做好的。整体上看,文档的确都写的很清晰,甚至还有集成视频,的确是用心了。想当年集成某T的SDK,一把辛酸泪。
个推文档链接:docs.getui.com/geyan/elogi…