云头像帮助文档
  1. iOS客户端接入
云头像帮助文档
  • 产品简介
  • 产品动态
  • 功能介绍
    • 云头像
    • 一键登录
  • 客户端接入
    • iOS客户端接入
      • 云头像(iOS)
      • 一键登录(iOS)
    • Android客户端接入
      • 云头像(Android)
      • 一键登录(Android)
  • 常见问题
    • 接入使用问题
    • SDK常见问题
    • 一键登录常见问题
  1. iOS客户端接入

一键登录(iOS)

安装#

SDK集成#

cocoaPods 集成#

1.本地项目文件夹下,修改Podfile文件
platform :ios, '9.0'
source 'https://github.com/CocoaPods/Specs.git'

target 'App' do
pod 'AvatarCloud_Login'
end
2.终端执行命令,加载AvatarCloudSDK
pod install
3.如果安装失败,请更新cocoapods的资源配置信息
pod repo update

手动集成#

在demo工程路径下的AvatarCloudSDK.framework和资源文件AvatarCloudSDK.bundle复制到业务工程
在工程的 Other Linker Flags 中添加 -ObjC 参数

使用#

配置#

配置clientId 和 clientSecret, clientId 和 clientSecret 请在官网申请
在工程的AppDelegate.m文件导入头文件,并初始化
在 info.plist 文件中添加一个子项目 App Transport Security Settings,然后在其中添加一个 key:Allow Arbitrary Loads,其值为YES。

初始化#

#import <AvatarCloudSDK/AvatarCloudSDK.h>
    
[AvatarCloudSDKManager initWithClient_id:@"clientId" client_secret:@"clientSecret"];

一键登录功能#

#### 取号请求
本方法用于发起取号请求,SDK 完成网络判断、蜂窝数据网络切换等操作并缓存凭证 scrip。
//取号
[[ACLoginManager sharedInstance] getPhoneNumberCompletion:^(NSDictionary * _Nonnull result) {
    NSLog(@"getPhoneNumberCompletion %@", result);
    NSString *resultCode = result[@"resultCode"];
    if ([ACLoginCodeSuccess isEqualToStringresultCode])
    {
        NSLog(@"预取号成功");
    } else {
        NSLog(@"预取号失败");
    }
}];
#### 授权请求
#import <AvatarCloudSDK/AvatarCloudSDK.h>


/*
一键登录,获取到的token,可传给移动认证服务端获取完整手机号

@param controller  唤起自定义授权页的容器
@param model 需要配置的Model属性
@param completion 回调
*/
[[ACLoginManager sharedInstance] getAuthorizationWithController:'ViewController' model:'ACLCustomModel' complete:^(id  _Nonnull sender) {
    NSLog(@"custom login %@", sender);
    NSString *code = [sender objectForKey:@"resultCode"];
    if ([ACLoginCodeSuccess isEqualToString:code]) {
        [self authLoginSuccess];
    } else if ([ACLoginCodeClickCancel isEqualToString:code]) {
        weakSelf.bgView.hidden = YES;
        [self authLoginExit];
    } else if ([ACLoginCodeClickChangeBtn isEqualToString:code]) {
        [self authLoginChange];
    }
}];

//关闭授权界面 flag 动画开关
[[ACLoginManager sharedInstance] dismissViewControllerAnimated:YES completion:^{
    weakSelf.bgView.hidden = YES;
}];
授权响应参数:#
字段类型含义
resultCodeNSString接口返回码。 具体返回码见 SDK 返回码
descNSString返回描述
tokenNSString成功时返回:临时凭证,token 有效期 2min,一次有效;同一 用户(手机号)10 分钟内获取 token 且未使用的数量不超过 30个
operatorTypeNSString运营商类型
scripExpiresInNSString成功时返回。表示 scrip 有效期,单位:秒。注:仅移动号码返回,电信联通在这里不会生成缓存,scripExpiresIn=0
tokenExpiresInNSString成功时返回。表示 token 有效期,单位:秒
traceIdNSString用于定位 SDK 问题
#### 自定义授权界面
为了确保用户在登录过程中将手机号码信息授权给开发者使用的知情权,一键登 录需要开发者提供授权页登录页面供用户授权确认。开发者在调用授权登录方法前,必须弹出授权页,明确告知用户当前操作会将用户的本机号码信息传递给应用。
1、开发者不得通过任何技术手段,破解授权页,或将授权页面的号码栏、隐私 栏、品牌露出内容隐藏、覆盖。
2、登录按钮文字描述必须包含“登录”或“注册”等文字,不得诱导用户授权。
3、对于接入移动认证 SDK 并上线的应用,我方会对上线的应用授权页面做审查, 如果有出现未按要求弹出或设计授权页面的,将关闭应用的认证取号服务。
自定义model#
ACLCustomModel *customModel = [ACLCustomModel new];

/** 授权页弹出方向,默认ACLPresentationDirectionBottom */
customModel.presentDirection = ACLPresentationDirectionBottom;

/** 授权页customView展现形式 */
customModel.contentViewType = ACLContentViewFullScreen;

/** 自定义logo frmae */
customModel.logoFrameBlock = ^CGRect(CGSize screenSize, CGSize superViewSize, CGRect frame) {
    frame = CGRectMake(100, 100, 80, 80);
    return frame;
};

/** 自定义登录按钮 */
customModel.loginBtnText = [[NSAttributedString alloc] initWithString:@"本机号码一键登录" attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor] , NSFontAttributeName:[UIFont systemFontOfSize:15]}];

/** 自定义协议及链接 */
customModel.privacyLinkArray = @[@[@"用户协议", @"https://xxx.com"], @[@"隐私政策", @"https://xxx.com"]];

/** 自定义控件添加 */
[austomModel setCustomViewBlock:^(UIView * _Nonnull superCustomView) {
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(superCustomView.width - 44, 10, 20, 20)];
    view.backgroundColor = [UIColor redColor];
    [superCustomView addSubview:view];
}];
ACLCustomModel 配置元素说明:#
属性类型说明
customViewBlockUIView *superCustomView设置授权页自定义控件添加
presentDirectionACLPresentationDirection授权页面推出动画效果
isPresentAnimatedBOOL授权页面是否需要弹出动画,默认为YES
contentViewTypeACLContentViewTypecustomView 展现形式。0默认全屏,1弹窗(屏幕居中),2底部弹窗
返回按钮
backBtnImageUIImage导航栏返回图片
backBtnIsHiddenBOOL是否隐藏授权页返回按钮,默认不隐藏
backBtnFrameBlockACLBuildFrameBlockreturn frame; 构建返回按钮的的frame
logo
logoImageUIImage设置一张图片
logoIsHiddenBOOL是否隐藏授权页logo,默认不隐藏
logoFrameBlockACLBuildFrameBlockreturn frame; 构建logo图片的的frame
slogan
sloganTextNSAttributedString设置slogan的富文本属性(字体大小、颜色、文案内容)
sloganIsHiddenBOOL是否隐藏授权页slogan,默认不隐藏
sloganFrameBlockACLBuildFrameBlockreturn frame; 构建slogan的的frame
号码
numberColorUIColor号码颜色
numberFontUIFont号码字体大小设置,大小小于16则不生效
numberOffsetYCGFloat号码相对contengView顶部的Y轴距离,不设置则按默认处理
numberOffsetXCGFloat号码相对屏幕中线的X轴偏移距离,不设置则按默认处理,默认为0水平居中
登录
loginBtnTextNSAttributedString设置登录按钮的富文本属性(字体大小、颜色、文案内容)
loginBtnBgImgsNSArray设置授权登录按钮三种状态的图片数组,数组顺序为:[0]激活状态的图片;[1] 失效状态的图片;[2] 高亮状态的图片
loginBtnFrameBlockACLBuildFrameBlockreturn frame; 构建登录按钮的frame
切换按钮
changeBtnTitleNSAttributedString设置切换按钮的富文本属性(字体大小、颜色、文案内容)
changeBtnIsHiddenBOOL是否隐藏授权页切换按钮,默认不隐藏
changeBtnFrameBlockACLBuildFrameBlockreturn frame; 构建切换按钮的frame
协议
checkBoxImagesNSArraycheckBox图片组,[uncheckedImg,checkedImg]
checkBoxIsCheckedBOOLcheckBox是否勾选,默认NO
checkBoxWHCGFloat复选框大小(只能正方形)必须大于12
privacySymbolBOOL隐私条款默认协议是否开启书名号
privacyLinkArrayNSArray[ [协议名称,协议Url],[协议名称,协议Url], ...] 注:协议名称不能相同
privacyColorsNSArray协议内容颜色数组,[非点击文案颜色,点击文案颜色]
privacyPreTextNSString协议整体文案,前缀部分文案
privacySufTextNSString协议整体文案,后缀部分文案
privacyFontUIFont协议整体文案字体大小,小于12.0不生效
privacyFrameBlockACLBuildFrameBlockreturn frame; 构建协议整体的frame
checkTipTextNSString默认文案:“请勾选登录协议”,如果为空,则点击时无提示。该属性被合法赋值(非空,且最大长度为100的字符串。
webNavBackImageUIImageweb协议界面导航栏返回图片
webNavColorUIColorweb协议界面导航标题栏颜色
webNavTitleAttrsNSDictionaryweb协议界面导航标题字体属性设置 默认值:@{NSForegroundColorAttributeName: [UIColor blackColor], NSFontAttributeName: [UIFont systemFontOfSize:16]}
返回码说明#
返回码返回码描述
103000成功
103101请求签名错误(若发生在客户端,可能是 appkey 传错,可检查是否跟 appsecret 弄混,或者有空格。若发生在服务端接口,需要检查验签方 式是 MD5 还是 RSA,如果是 MD5,则排查 signType 字段,若为 appsecret,需确认是否误用了 appkey 生签。如果是 RSA,需要检查使 用的私钥跟报备的公钥是否对应和报文拼接是否符合文档要求。)
103102包签名错误(社区填写的 appid 和对应的包名包签名必须一致)
103111网关 IP 错误(检查是否开了 vpn 或者境外 ip)
103119appid 不存在(检查传的 appid 是否正确或是否有空格)
103211其他错误,(常见于报文格式不对,先请检查是否符合这三个要求: a、json 形式的报文交互必须是标准的 json 格式;b、发送时请设置 content type 为 application/json;c、参数类型都是 String。如有需要请 联系 qq 群 609994083 内的移动认证开发)
103902scrip 失效(客户端高频调用请求 token 接口)
103911token 请求过于频繁,10 分钟内获取 token 且未使用的数量不超过 30 个
103273预取号联通重定向
105002移动取号失败(一般是物联网卡)
105003电信取号失败
105021当天已达取号限额
105302appid 不在白名单
105313非法请求
200020取消登录
200021数据解析异常(一般是卡欠费)
200022无网络
200023请求超时
200025其他错误(socket、系统未授权数据蜂窝权限等,如需要协助,请加 入 qq 群发问)
200027未开启数据网络或网络不稳定
200028网络异常
200038异网取号网络请求失败
200048用户未安装 sim 卡
200050EOF 异常
200061授权页面异常
200064服务端返回数据异常
200072CA 根证书校验失败
200080本机号码校验仅支持移动手机号
200082服务器繁忙
200086ppLocation 为空
200087授权页成功调起
200096当前网络不支持取号
300000点击返回,⽤户取消一键登录
300001点击切换按钮,⽤户取消免密登录
300002点击登录按钮事件
上一页
云头像(iOS)
下一页
云头像(Android)
Built with