很久沒有更新博客了胁孙,近期接到了集成移動一鍵登錄功能唠倦,因此做了一個一鍵登錄工具類,把UI設(shè)置和功能都封裝到工具類中浊洞。
移動一鍵登錄
現(xiàn)在的移動一鍵登錄SDK只有兩個主要功能牵敷,分別是本機號碼校驗和獲取用戶信息功能。
個人理解:前者的作用是驗證本次登陸的手機賬號是否為手機中插著的手機號法希。后者的作用是用于登陸枷餐。
因此,本次的工具類是基于后者提供的功能開發(fā)的苫亦。
工具類提供的接口
業(yè)務(wù)邏輯相關(guān)的接口
/**
單例獲取
@return 單例
*/
+ (instancetype)shareManager;
/**
初始化參數(shù)
*/
- (void)initialize;
/**
是否為移動
*/
- (BOOL)isCMCC;
/**
獲取Msgid
*/
- (NSString *)TYRZSDKMsgid;
/**
獲取Appid
*/
- (NSString *)TYRZSDKAppid;
/**
預(yù)取號 在顯式登錄之前的操作毛肋,目的為提前獲取本機手機號,節(jié)省顯式登錄時間屋剑。 手
機號會緩存五分鐘润匙,五分鐘之內(nèi)顯式登錄可以免 獲取資料 步驟
@param success void
@param failure des = 失敗描述
*/
- (void)preGetPhonenumberSuccess:(void (^)(void))success
failure:(void (^)(NSString *des))failure;
/**
顯式登錄
@param vc 展示移動一鍵登錄的控制器
@param success token = 獲得的token authTypeDes = 登錄的認證方式 0:其他;1:WiFi下網(wǎng)關(guān)鑒權(quán);2:網(wǎng)關(guān)鑒權(quán);3:短信上行鑒權(quán);7:短信驗證碼登錄
@param failure des = 失敗描述
*/
- (void)getTokenExpWithController:(UIViewController *)vc
success:(void (^)(NSString *token, NSString *authTypeDes))success
failure:(void (^)(NSDictionary *context))failure;
@end
調(diào)用-(void)getTokenExpWithController
方法后進入一鍵登錄界面,但是進入的過程是這樣的:
會先進入一個獲取手機號界面如下圖1唉匾,然后幾秒鐘后再跳轉(zhuǎn)到一鍵登錄界面孕讳。
接下里說一下預(yù)取號方法。當在調(diào)用-(void)getTokenExpWithController
方法之前巍膘,先調(diào)用-(void)preGetPhonenumberSuccess
方法厂财,會預(yù)先獲取到本機手機號。因此可以節(jié)省下幾秒鐘的時間峡懈。
大致解釋如何使用該功能
在調(diào)用-(void)preGetPhonenumberSuccess
方法后璃饱,用戶點擊一鍵登錄按鈕后,會回調(diào)回token
字段肪康。這個token
的作用是去獲取用戶信息的荚恶。
在移動的開發(fā)文檔中,有提供獲取用戶信息的接口:
該接口所需的參數(shù)中有一個token
參數(shù)磷支,返回的數(shù)據(jù)中有登陸的手機號字段谒撼。
因此大致做法是,本地調(diào)用一鍵登錄接口雾狈,獲取token
參數(shù)廓潜,再把token
以及其他相關(guān)的參數(shù)傳給后臺,讓后臺去調(diào)用獲取用戶信息接口,獲得手機號后進行比較茉帅,如果是同一個,登陸成功锭弊,再去數(shù)據(jù)庫中獲取用戶數(shù)據(jù)返回給前端堪澎。
UI設(shè)置接口
在新的SDK中,移動提供了開發(fā)者自定義UI功能味滞。但是當前版本提供的可修改的界面仍不是很多樱蛤。
移動的接口如下:
+ (void)customUIWithParams:(NSDictionary *)customUIParams
customViews:(void(^)(NSDictionary *customAreaView))customViews;
customUIParams
字典鍵值對在開發(fā)文檔中有寫。
我對UI自定義功能也進行了二次封裝剑鞍,將這些方法放在了HXTYRZManager的分類中昨凡。舉例如下:
- (void)setNavBarLeftImage:(UIImage *)image; //層級1
- (void)setNavBarBackgroundColor:(UIColor *)color; //層級1
- (void)setNavBarTitle:(NSString *)title; //層級暫定1
其中的實現(xiàn):
- (void)setNavBarLeftImage:(UIImage *)image //層級1
{
if ([self isNil:image]) {
return;
}
[self.customUIParams setObject:image forKey:UAPageNavLeftLogo];
}
本質(zhì)為在工具類中設(shè)置字典,跳過外部設(shè)置蚁署。并且便脊,我在工具類的顯示登陸方法實現(xiàn)中,調(diào)用了移動的-(void)customUIWithParams
方法光戈。因此哪痰,你需要在調(diào)用我的顯示登陸接口之前,先設(shè)置好UI久妆。