本文为您介绍了iOS客户端如何接入通信授权服务功能。
前提条件
确保您已开通通信授权服务,并完成企业信息审核、授权场景审核和添加需要集成SDK的App信息,详情请参见通信授权服务使用流程。
设备及系统:
支持iOS 10及以上系统。
支持模拟器和arm架构。
开发工具建议使用Xcode 11及以上。
搭建开发环境
登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。
下载并安装Xcode 11。
创建新工程。
打开Xcode 11,在菜单栏选择
,创建新工程。导入SDK。
在创建的新工程上单击鼠标右键,选择Add Files To“您创建的工程名称”,单击添加CASAuth.framework。
在菜单栏选择
,将文件CASAuth.framework的Embed值设置为Embed & Sign。在新建工程的plist文件,选择
,设置Type为Dictionary,在添加的子文件下增加Allow Arbitrary Loads且将其值设置为YES。
在下载的压缩包中,有三个文件分别是CASAuth.framework、CASAuth.framework.dSYM和ARM文件夹。其中CASAuth.framework包含了arm架构和模拟器架构,ARM文件夹中的CASAuth.framework包含了arm架构。
说明CASAuth.framework是SDK的动态库,用户在最终上架App Store的包需要使用ARM文件夹下的framework。
创建实例
CASAuthSDK
对象即授权通话实例对象,初始化方法为:- (id)initWithConfiguration:(CASConfig *)configuration;
CASConfig
为授权通话配置类,属性如下:/// appKey由客户在控制台上生成得到,必填 @property(nonatomic, copy) NSString *appKey; /// schemeId由客户在控制台生成得,必填 @property(nonatomic, copy) NSString *schemeId; /// 针对合约型用户,传入的授权截止日志。例如:2030-03-30 @property(nonatomic, copy) NSString *expireDate; /// 授权手机号码,必填 @property(nonatomic, copy) NSString *phoneNumber; /// 隐私协议,字典形式,可有多个,必填 /// 示例: ///{ // @"title1":@"url1", // @"title2":@"url2" ///} @property(nonatomic, copy) NSDictionary<NSString *,NSString *>* privacyAgreements;
CASAuthSDK
提供如下功能:/// 预加载,主要用来加速获取授权配置信息 - (void)accelerateAuthInBackgroud:(void(^)(BOOL ret, CASResult *result))block; /// 获取UI配置对象,可以用来进行UI的自定义设置 - (id<CASUIConfigureProtocol>)getUIConfigure; /// 唤起授权页面,返回授权页面视图控制器给调用方使用 /// @param rootViewController根视图 /// @param timeout超时时间 - (void)startAuthPageWithRootViewController:(id)rootViewController timeout:(float)timeout completeBlock:(void(^)(BOOL ret, CASResult *result))block; /// 唤起授权弹框,需要用户传入指定的视图控制器 /// @param rootViewController弹起授权框的视图控制器 /// @param timeout超时时间 - (void)startAlertAuthViewWithRootViewController:(id)rootViewController timeout:(float)timeout completeBlock:(void(^)(BOOL ret, CASResult *result))block; /// 关闭授权页面 - (void)closeAuthView;
授权页面弹出的模式有两种,分别是弹框模式(Alert)和页面弹出模式(Present),您可根据需要自行选择模式。
accelerateAuthInBackgroud
是加速获取授权信息接口,如果您对速度有要求可以在实例化AuthSDK对象后调用。通过
- (id<CASUIConfigureProtocol>)getUIConfigure
接口可获取UI配置对象,提供了如下接口://title /// 设置标题字体 /// @param font字体 - (void)setTitleLabelFont:(UIFont *)font; /// 设置标题文字颜色 /// @param textColor文字颜色 - (void)setTtileLabelTextColor:(UIColor *)textColor; //middle /// 设置授权号码显示字体 /// @param font字体 - (void)setPhoneNumberLabelFont:(UIFont *)font; /// 设置授权号码显示文字颜色 /// @param color颜色 - (void)setPhoneNumberLabelTextColor:(UIColor *)color; /// 设置验证码发送按钮字体 /// @param font字体 - (void)setVerifyCodeSendButtonFont:(UIFont *)font; /// 设置验证码发送按钮文字颜色 /// @param color颜色 - (void)setVerifyCodeSendButtonTextColor:(UIColor *)color; /// 设置验证码发送按钮倒计时文字颜色 /// @param color文字颜色 - (void)setVerifyCodeSendButtonCountdownTextColor:(UIColor *)color; /// 短信验证码输入框文字颜色 /// @param color颜色 - (void)setVerifyCodeInputViewTextColor:(UIColor *)color; /// 短信验证码输入框文字字体 /// @param font字体 - (void)setVerifyCodeInputViewFont:(UIFont *)font; /// 短信验证码输入框PlaceHolder文字颜色 /// @param color颜色 - (void)setVerifyCodeInputViewPlaceHolderTextColor:(UIColor *)color; /// 短信验证码输入框PlaceHolder文字字体 /// @param font字体 - (void)setVerifyCodeInputViewPlaceHolderTextFont:(UIFont *)font; //bottom /// 协议勾选按钮颜色 /// @param color颜色 - (void)setTermsAgreeButtonColor:(UIColor *)color; /// 一键授权按钮颜色 /// @param color颜色 - (void)setAuthAgreeButtonColor:(UIColor *)color; /// 一键授权按钮文字字体 /// @param font字体 - (void)setAuthAgreeButtonTextFont:(UIFont *)font; /// 一键授权按钮文字颜色 /// @param color颜色 - (void)setAuthAgreeButtonTextColor:(UIColor *)color; /// 协议项前置文字 /// @param beforeText文字 - (void)setPrivacyBeforeText:(NSString *)beforeText; /// 协议项后置文字 /// @param endText文字 - (void)setPrivacyEndText:(NSString *)endText; /// 隐私文本颜色 /// @param textColor颜色 - (void)setPrivacyTextColor:(UIColor *)textColor; /// 隐私文本字体 /// @param font字体 - (void)setPrivacyTextFont:(UIFont *)font; /// 隐私文本描述文字颜色 /// @param textColor颜色 - (void)setPrivacyDescriptionTextColor:(UIColor *)textColor; /// 隐私声明文本字体 /// @param font字体 - (void)setPrivacyNamingLabelFont:(UIFont *)font; /// 隐私声明文本颜色 /// @param color颜色 - (void)setPrivacyNamingLabelTextColor:(UIColor *)color; /// 是否禁用弹框 /// @param enable YES:能弹框,NO:不能弹框 - (void)toastEnable:(BOOL)enable;
事件回调。
授权结果和授权中间状态以及UI点击事件均有回调,如下所示:
@required /// 授权结果回调事件 /// @param ret YES:授权成功,NO:授权失败 /// @param result原因 - (void)onAuthReponseResult:(BOOL)ret reason:(CASResult *)result; @optional /// 发送短信验证码回调事件 /// @param ret YES:发送成功,NO:发送失败 /// @param result原因 - (void)onAuthSendVerifyCode:(BOOL)ret reason:(CASResult *)result; /// 授权页面UI点击事件回调 /// @param code按钮事件code /// @param msgDict扩展消息 - (void)onUIClickAction:(CASUIClickCode)code message:(NSDictionary *)msgDict;
示例代码
以Demo工程为例,在
ViewDidLoad
中进行初始化。CASConfig *config = [[CASConfig alloc] init]; config.appKey = @"yourappKey"; config.schemeId = @"100000****"; config.phoneNumber = @"1898984****"; config.expireDate = @"2021-10-10"; config.privacyAgreements = @{@"《用户隐私政策》":@"https://example.aliyundoc.com"}; self.authSDK = [[CASAuthSDK alloc] initWithConfiguration:config]; self.authSDK.delegate = (id)self; [self.authSDK accelerateAuthInBackgroud:^(BOOL ret, CASResult * _Nonnull result) { }];
调用按钮弹出授权页面:
[self.authSDK startAlertAuthViewWithRootViewController:self timeout:5 completeBlock:^(BOOL ret, CASResult * _Nonnull result) { NSLog(@"start auth page:%d result:%@", ret, result); }];
若需要修改UI配置,则需要在授权页面成功弹出后,调用如下代码:
id<CASUIConfigureProtocol> conf = [self.authSDK getUIConfigure]; [conf setTitleLabelFont:[UIFont systemFontOfSize:15]]; [conf setTtileLabelTextColor:[UIColor yellowColor]]; [conf setPhoneNumberLabelFont:[UIFont systemFontOfSize:10]]; [conf setPhoneNumberLabelTextColor:[UIColor redColor]]; [conf setVerifyCodeSendButtonFont:[UIFont systemFontOfSize:13]]; [conf setVerifyCodeSendButtonTextColor:[UIColor greenColor]]; [conf setVerifyCodeInputViewTextColor:[UIColor blueColor]]; [conf setVerifyCodeInputViewFont:[UIFont systemFontOfSize:12]]; [conf setTermsAgreeButtonColor:[UIColor blackColor]]; [conf setAuthAgreeButtonColor:[UIColor redColor]]; [conf setAuthAgreeButtonTextFont:[UIFont systemFontOfSize:12]]; [conf setAuthAgreeButtonTextColor:[UIColor yellowColor]]; [conf setPrivacyNamingLabelFont:[UIFont systemFontOfSize:16]]; [conf setPrivacyNamingLabelTextColor:[UIColor redColor]]; [conf setPrivacyTextColor:[UIColor redColor]]; [conf setPrivacyDescriptionTextColor:[UIColor greenColor]]; [conf setVerifyCodeInputViewPlaceHolderTextColor:[UIColor redColor]]; [conf setVerifyCodeSendButtonCountdownTextColor:[UIColor greenColor]]; [conf setPrivacyBeforeText:@"开头文字"]; [conf setPrivacyEndText:@"结尾文字"];
SDK错误码请参见错误码。
- 本页导读 (1)