iOS客戶端接入
本文為您介紹了iOS客戶端如何接入通信授權(quán)服務(wù)功能。
前提條件
確保您已開通通信授權(quán)服務(wù),并完成企業(yè)信息審核、授權(quán)場(chǎng)景審核和添加需要集成SDK的App信息,詳情請(qǐng)參見通信授權(quán)服務(wù)使用流程。
設(shè)備及系統(tǒng):
支持iOS 10及以上系統(tǒng)。
支持模擬器和arm架構(gòu)。
開發(fā)工具建議使用Xcode 11及以上。
搭建開發(fā)環(huán)境
登錄號(hào)碼認(rèn)證產(chǎn)品控制臺(tái),在概覽頁(yè)面右側(cè)API&SDK區(qū)域,單擊立即下載,進(jìn)入API&SDK頁(yè)面,根據(jù)頁(yè)面提示下載并解壓對(duì)應(yīng)SDK。
下載并安裝Xcode 11。
創(chuàng)建新工程。
打開Xcode 11,在菜單欄選擇
,創(chuàng)建新工程。導(dǎo)入SDK。
在創(chuàng)建的新工程上單擊鼠標(biāo)右鍵,選擇Add Files To“您創(chuàng)建的工程名稱”,單擊添加CASAuth.framework。
在菜單欄選擇
,將文件CASAuth.framework的Embed值設(shè)置為Embed & Sign。在新建工程的plist文件,選擇
,設(shè)置Type為Dictionary,在添加的子文件下增加Allow Arbitrary Loads且將其值設(shè)置為YES。
在下載的壓縮包中,有三個(gè)文件分別是CASAuth.framework、CASAuth.framework.dSYM和ARM文件夾。其中CASAuth.framework包含了arm架構(gòu)和模擬器架構(gòu),ARM文件夾中的CASAuth.framework包含了arm架構(gòu)。
說明CASAuth.framework是SDK的動(dòng)態(tài)庫(kù),用戶在最終上架App Store的包需要使用ARM文件夾下的framework。
創(chuàng)建實(shí)例
CASAuthSDK
對(duì)象即授權(quán)通話實(shí)例對(duì)象,初始化方法為:- (id)initWithConfiguration:(CASConfig *)configuration;
CASConfig
為授權(quán)通話配置類,屬性如下:/// appKey由客戶在控制臺(tái)上生成得到,必填 @property(nonatomic, copy) NSString *appKey; /// schemeId由客戶在控制臺(tái)生成得,必填 @property(nonatomic, copy) NSString *schemeId; /// 針對(duì)合約型用戶,傳入的授權(quán)截止日志。例如:2030-03-30 @property(nonatomic, copy) NSString *expireDate; /// 授權(quán)手機(jī)號(hào)碼,必填 @property(nonatomic, copy) NSString *phoneNumber; /// 隱私協(xié)議,字典形式,可有多個(gè),必填 /// 示例: ///{ // @"title1":@"url1", // @"title2":@"url2" ///} @property(nonatomic, copy) NSDictionary<NSString *,NSString *>* privacyAgreements;
CASAuthSDK
提供如下功能:/// 預(yù)加載,主要用來加速獲取授權(quán)配置信息 - (void)accelerateAuthInBackgroud:(void(^)(BOOL ret, CASResult *result))block; /// 獲取UI配置對(duì)象,可以用來進(jìn)行UI的自定義設(shè)置 - (id<CASUIConfigureProtocol>)getUIConfigure; /// 喚起授權(quán)頁(yè)面,返回授權(quán)頁(yè)面視圖控制器給調(diào)用方使用 /// @param rootViewController根視圖 /// @param timeout超時(shí)時(shí)間 - (void)startAuthPageWithRootViewController:(id)rootViewController timeout:(float)timeout completeBlock:(void(^)(BOOL ret, CASResult *result))block; /// 喚起授權(quán)彈框,需要用戶傳入指定的視圖控制器 /// @param rootViewController彈起授權(quán)框的視圖控制器 /// @param timeout超時(shí)時(shí)間 - (void)startAlertAuthViewWithRootViewController:(id)rootViewController timeout:(float)timeout completeBlock:(void(^)(BOOL ret, CASResult *result))block; /// 關(guān)閉授權(quán)頁(yè)面 - (void)closeAuthView;
授權(quán)頁(yè)面彈出的模式有兩種,分別是彈框模式(Alert)和頁(yè)面彈出模式(Present),您可根據(jù)需要自行選擇模式。
accelerateAuthInBackgroud
是加速獲取授權(quán)信息接口,如果您對(duì)速度有要求可以在實(shí)例化AuthSDK對(duì)象后調(diào)用。通過
- (id<CASUIConfigureProtocol>)getUIConfigure
接口可獲取UI配置對(duì)象,提供了如下接口://title /// 設(shè)置標(biāo)題字體 /// @param font字體 - (void)setTitleLabelFont:(UIFont *)font; /// 設(shè)置標(biāo)題文字顏色 /// @param textColor文字顏色 - (void)setTtileLabelTextColor:(UIColor *)textColor; //middle /// 設(shè)置授權(quán)號(hào)碼顯示字體 /// @param font字體 - (void)setPhoneNumberLabelFont:(UIFont *)font; /// 設(shè)置授權(quán)號(hào)碼顯示文字顏色 /// @param color顏色 - (void)setPhoneNumberLabelTextColor:(UIColor *)color; /// 設(shè)置驗(yàn)證碼發(fā)送按鈕字體 /// @param font字體 - (void)setVerifyCodeSendButtonFont:(UIFont *)font; /// 設(shè)置驗(yàn)證碼發(fā)送按鈕文字顏色 /// @param color顏色 - (void)setVerifyCodeSendButtonTextColor:(UIColor *)color; /// 設(shè)置驗(yàn)證碼發(fā)送按鈕倒計(jì)時(shí)文字顏色 /// @param color文字顏色 - (void)setVerifyCodeSendButtonCountdownTextColor:(UIColor *)color; /// 短信驗(yàn)證碼輸入框文字顏色 /// @param color顏色 - (void)setVerifyCodeInputViewTextColor:(UIColor *)color; /// 短信驗(yàn)證碼輸入框文字字體 /// @param font字體 - (void)setVerifyCodeInputViewFont:(UIFont *)font; /// 短信驗(yàn)證碼輸入框PlaceHolder文字顏色 /// @param color顏色 - (void)setVerifyCodeInputViewPlaceHolderTextColor:(UIColor *)color; /// 短信驗(yàn)證碼輸入框PlaceHolder文字字體 /// @param font字體 - (void)setVerifyCodeInputViewPlaceHolderTextFont:(UIFont *)font; //bottom /// 協(xié)議勾選按鈕顏色 /// @param color顏色 - (void)setTermsAgreeButtonColor:(UIColor *)color; /// 一鍵授權(quán)按鈕顏色 /// @param color顏色 - (void)setAuthAgreeButtonColor:(UIColor *)color; /// 一鍵授權(quán)按鈕文字字體 /// @param font字體 - (void)setAuthAgreeButtonTextFont:(UIFont *)font; /// 一鍵授權(quán)按鈕文字顏色 /// @param color顏色 - (void)setAuthAgreeButtonTextColor:(UIColor *)color; /// 協(xié)議項(xiàng)前置文字 /// @param beforeText文字 - (void)setPrivacyBeforeText:(NSString *)beforeText; /// 協(xié)議項(xiàng)后置文字 /// @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;
事件回調(diào)。
授權(quán)結(jié)果和授權(quán)中間狀態(tài)以及UI點(diǎn)擊事件均有回調(diào),如下所示:
@required /// 授權(quán)結(jié)果回調(diào)事件 /// @param ret YES:授權(quán)成功,NO:授權(quán)失敗 /// @param result原因 - (void)onAuthReponseResult:(BOOL)ret reason:(CASResult *)result; @optional /// 發(fā)送短信驗(yàn)證碼回調(diào)事件 /// @param ret YES:發(fā)送成功,NO:發(fā)送失敗 /// @param result原因 - (void)onAuthSendVerifyCode:(BOOL)ret reason:(CASResult *)result; /// 授權(quán)頁(yè)面UI點(diǎn)擊事件回調(diào) /// @param code按鈕事件code /// @param msgDict擴(kuò)展消息 - (void)onUIClickAction:(CASUIClickCode)code message:(NSDictionary *)msgDict;
示例代碼
以Demo工程為例,在
ViewDidLoad
中進(jìn)行初始化。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) { }];
調(diào)用按鈕彈出授權(quán)頁(yè)面:
[self.authSDK startAlertAuthViewWithRootViewController:self timeout:5 completeBlock:^(BOOL ret, CASResult * _Nonnull result) { NSLog(@"start auth page:%d result:%@", ret, result); }];
若需要修改UI配置,則需要在授權(quán)頁(yè)面成功彈出后,調(diào)用如下代碼:
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:@"結(jié)尾文字"];
SDK錯(cuò)誤碼請(qǐng)參見錯(cuò)誤碼。