文档

iOS客户端接入

更新时间:

本文为您介绍了iOS客户端如何接入通信授权服务功能。

前提条件

  • 确保您已开通通信授权服务,并完成企业信息审核、授权场景审核和添加需要集成SDK的App信息,详情请参见通信授权服务使用流程

  • 设备及系统:

    • 支持iOS 10及以上系统。

    • 支持模拟器和arm架构。

  • 开发工具建议使用Xcode 11及以上。

搭建开发环境

  1. 登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。

  2. 下载并安装Xcode 11

  3. 创建新工程。

    打开Xcode 11,在菜单栏选择File > New > Project...,创建新工程。

  4. 导入SDK。

    1. 在创建的新工程上单击鼠标右键,选择Add Files To“您创建的工程名称”,单击添加CASAuth.framework。

    2. 在菜单栏选择TARGETS > General > Frameworks, Libraries, and Embedded Content,将文件CASAuth.framework的Embed值设置为Embed & Sign

    3. 在新建工程的plist文件,选择Custom iOS Target Properties > App Transport Security Settings,设置TypeDictionary,在添加的子文件下增加Allow Arbitrary Loads且将其值设置为YESimage07

    在下载的压缩包中,有三个文件分别是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)
文档反馈