源起
今天是周五了,工作大多是總結(jié)和回歸。沒有很重的開發(fā)任務,自己也開始研究下項目中用到的各種SDK。先吐槽一下,我這個項目是從外包接手,里面用到的三方SDK真的是讓我心累。
分享使用的mob share SDK。
推送用的極光 JPush。
統(tǒng)計用的是友盟的U-App。
真的是讓人醉了。我認為只要集成了友盟 這幾個都可以解決,當然其他的SDK也可以做到??赡苁峭獍窃谠椖炕A(chǔ)開發(fā)的吧。為了快速。就造成這樣了。最近我在整理項目,想著要不要將SDK統(tǒng)一了。但是考慮到有和后臺交互的地方。遲遲也沒動手。
今天在看極光推送的時候發(fā)現(xiàn)了一個新的掉用SDK。

沒錯就是這個認證。一開始我還以為是運營商認證。結(jié)果其實不然,是認證登錄。獲取本機號碼 直接一鍵登錄。這個功能在早期的時候,我認為是獲取手機鑰匙串信息獲取到的SIM卡信息。后來也沒多深入研究,如今看到這個SDK存在。想著研究看下。畢竟第一次看這個SDK就 開始寫文章,難免有些疏漏,忘大家能夠指出我的問題 和我的疑點。(在看的時候 還是有疑點的,因為這個SDK是付費的 也沒法深究)。
進入正題->極光的SDK初識
關(guān)于認證的配置 這里我就不介紹了,去極光的文檔處,點擊認證查看關(guān)于認證的配置信息即可。
下面講一下我理解的SDK 和我有的疑惑。
SDK接口說明
1. JVERIFICATIONService,包含SDK所有接口
2.JVAuthConfig類,應用配置信息類
3.VAuthEntity類,認證實體類
4.JVUIConfig類,登錄界面UI配置基類
5.JVMobileUIConfig類,JVUIConfig的子類,移動登錄界面UI配置類
6.JVUnicomUIConfig類,JVUIConfig的子類,聯(lián)通登錄界面UI配置類
7.JVTelecomUIConfig類,JVUIConfig的子類,電信登錄界面UI配置類
SDK初始化
文檔在介紹這個環(huán)節(jié)的時候,將歷史版本都一一列舉出來了。當我們使用的時候可以直接pod最新的 然后使用最新的版本 集成步驟就可以。
開始支持的版本 1.0.0
接口定義
+ setupWithConfig:(JVAuthConfig * )config;
接口說明:
初始化接口
參數(shù)說明
config 配置類
調(diào)用示例:
// 如需使用 IDFA 功能請?zhí)砑哟舜a并在初始化配置類中設(shè)置 advertisingId
NSString *idfaStr = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
JVAuthConfig *config = [[JVAuthConfig alloc] init];
config.appKey = @"a0e6ace8d5b3e0247e3f58db";
config.advertisingId = idfaStr;
[JVERIFICATIONService setupWithConfig:config];
SDK獲取初始化狀態(tài)
開始支持的版本 2.3.2
+ (BOOL)isSetupClient
接口說明:
初始化是否完成
返回值說明
YES 初始化完成
NO 初始化未完成
調(diào)用示例:
BOOL isSetupClient = [JVERIFICATIONService isSetupClient];
if (isSetupClient) {
//初始化完成,可以進行后續(xù)操作
}
SDK設(shè)置debug模式
開始支持的版本 1.0.0
接口定義
+ (void)setDebug:(BOOL)enable;
接口說明:
開啟debug模式
參數(shù)說明
enable 是否開啟debug模式
SDK判斷網(wǎng)絡(luò)環(huán)境是否支持
開始支持的版本 1.1.2
接口定義
+ (BOOL)checkVerifyEnable;
接口說明:
判斷當前網(wǎng)絡(luò)環(huán)境是否可以發(fā)起認證
返回值說明
YES 可以認證
NO 不可以認證
調(diào)用示例:
if(![JVERIFICATIONService checkVerifyEnable]) {
NSLog(@"當前網(wǎng)絡(luò)環(huán)境不支持認證!");
return;
}
//繼續(xù)獲取token操作
...
SDK獲取號碼認證token(新)
開始支持的版本 2.2.0
+ (void)getToken:(NSTimeInterval)timeout completion:(void (^)(NSDictionary * result))completion;
接口說明:
獲取手機號校驗token
參數(shù)說明
completion 參數(shù)是字典 返回token 、錯誤碼等相關(guān)信息,token有效期1分鐘, 一次認證后失效
result 字典 獲取到token時key有operator、code、token字段,獲取不到token是key為code和content字段
timeout 超時時間(毫秒),有效取值范圍(0,10000],若小于等于0則取默認值5000.大于10000則取10000.為保證獲取token的成功率,建議設(shè)置為3000-5000ms.
調(diào)用示例:
[JVERIFICATIONService getToken:(NSTimeInterval)timeout completion:^(NSDictionary *result) {
NSLog(@"getToken result:%@", result)
//TODO:獲取token后相關(guān)操作
}];
SDK獲取號碼認證token(舊)
開始支持的版本 1.0.0
接口定義
+ (void)getToken:(void (^)(NSDictionary * result))completion;
接口說明:
獲取號碼認證token,此接口已廢棄,建議使用新接口
參數(shù)說明
completion 參數(shù)是字典 返回token、錯誤碼等相關(guān)信息,token一次認證后失效
result 字典 獲取到token時key有operator、code、token字段,獲取不到token時key為code和content字段
調(diào)用示例:
[JVERIFICATIONService getToken:^(NSDictionary *result) {
NSLog(@"getToken result:%@", result)
//TODO:獲取token后相關(guān)操作
}];
說明:開發(fā)者可以通過SDK獲取token接口的回調(diào)信息來選擇驗證方式,若成功獲取到token則可以繼續(xù)使用極光認證進行號碼驗證;若獲取token失敗,需要換用短信驗證碼等方式繼續(xù)完成驗證。
SDK發(fā)起號碼認證
開始支持的版本 1.0.0
+ (void)verifyNumber:(JVAuthEntity * )entity result:(void (^)(NSDictionary * result))completion;
接口說明:
發(fā)起號碼認證,驗證手機號碼和本機SIM卡號碼是否一致
參數(shù)說明:
completion 認證結(jié)果
result 字典 key為code和content兩個字段
entity 認證實體類
調(diào)用示例:
JVAuthEntity *entity = [[JVAuthEntity alloc] init];
entity.number = @"phone number";
entity.token = @"your token";
[JVERIFICATIONService verifyNumber:entity result:^(NSDictionary *result) {
NSLog(@"verify result:%@", result);
}];
說明:開發(fā)者調(diào)用該接口,需要在管理控制臺找到該應用,并在[認證設(shè)置]-[其他設(shè)置]中開啟[SDK發(fā)起認證],建議從開發(fā)者服務端發(fā)起號碼認證。
SDK登錄預取號
開始支持的版本 2.2.0
+ (void)preLogin:(NSTimeInterval)timeout completion:(void (^)(NSDictionary result))completion*
接口說明:
驗證當前運營商網(wǎng)絡(luò)是否可以進行一鍵登錄操作,該方法會緩存取號信息,提高一鍵登錄效率。建議發(fā)起一鍵登錄前先調(diào)用此方法。
參數(shù)說明:
completion 預取號結(jié)果
result 字典 key為code和message兩個字段
timeout 超時時間(毫秒),有效取值范圍(0,10000],若小于等于0則取默認值5000.大于10000則取10000.為保證獲取token的成功率,建議設(shè)置為3000-5000ms.
調(diào)用示例:
[JVERIFICATIONService preLogin:5000 completion:^(NSDictionary *result) {
NSLog(@"登錄預取號 result:%@", result);
}];
SDK請求授權(quán)一鍵登錄(新)
開始支持的版本 2.3.0
+ (void)getAuthorizationWithController:(UIViewController )vc hide:(BOOL)hide completion:(void (^)(NSDictionary result))completion
接口說明:
授權(quán)一鍵登錄
參數(shù)說明:
completion 登錄結(jié)果
result 字典 獲取到token時key有operator、code、loginToken字段,獲取不到token是key為code和content字段
vc 當前控制器
hide 完成后是否自動隱藏授權(quán)頁,默認YES。若此字段設(shè)置為NO,請在收到一鍵登錄回調(diào)后調(diào)用SDK提供的關(guān)閉授權(quán)頁面方法。
調(diào)用示例:
[JVERIFICATIONService getAuthorizationWithController:self hide:YES completion:^(NSDictionary *result) {
NSLog(@"一鍵登錄 result:%@", result);
}];
SDK請求授權(quán)一鍵登錄(舊)
開始支持的版本 2.0.0
接口定義
+ (void)getAuthorizationWithController:(UIViewController )vc completion:(void (^)(NSDictionary *result))completion*
接口說明:
授權(quán)一鍵登錄
參數(shù)說明:
completion 登錄結(jié)果
result 字典 獲取到loginToken時key有operator、code、loginToken字段,獲取不到loginToken時key為code和content字段
vc 當前控制器
調(diào)用示例:
[JVERIFICATIONService getAuthorizationWithController:self completion:^(NSDictionary *result) {
NSLog(@"一鍵登錄 result:%@", result);
}];
SDK關(guān)閉授權(quán)頁面
開始支持的版本 2.3.0
+ (void)dismissLoginController;
接口說明:
關(guān)閉授權(quán)頁
調(diào)用示例:
[JVERIFICATIONService dismissLoginController];
SDK自定義授權(quán)頁面UI樣式
開始支持的版本 2.0.0
接口定義
+ (void)customUIWithConfig:(JVUIConfig )UIConfig;*
接口說明:
自定義授權(quán)頁面UI樣式
參數(shù)說明:
UIConfig JVUIConfig的子類
調(diào)用示例:
/*移動*/
JVMobileUIConfig *mobileUIConfig = [[JVMobileUIConfig alloc] init];
mobileUIConfig.logoImg = [UIImage imageNamed:@"logo"];
[JVERIFICATIONService customUIWithConfig:mobileUIConfig];
/*聯(lián)通*/
JVUnicomUIConfig *unicomUIConfig = [[JVUnicomUIConfig alloc] init];
unicomUIConfig.logoImg = [UIImage imageNamed:@"logo"];
[JVERIFICATIONService customUIWithConfig:unicomUIConfig];
/*電信*/
JVTelecomUIConfig *telecomUIConfig = [[JVTelecomUIConfig alloc] init];
telecomUIConfig.logoImg = [UIImage imageNamed:@"logo"];
[JVERIFICATIONService customUIWithConfig:telecomUIConfig];
SDK授權(quán)頁面添加自定義控件
開始支持的版本 2.1.0
接口定義
+ (void)customUIWithConfig:(JVUIConfig )UIConfig customViews:(void(^)(UIView *customAreaView))customViewsBlk;*
接口說明:
自定義授權(quán)頁面UI樣式,并添加自定義控件
參數(shù)說明:
UIConfig JVUIConfig的子類
customViewsBlk 添加自定義視圖的block
調(diào)用示例:
/*移動*/
JVMobileUIConfig *mobileUIConfig = [[JVMobileUIConfig alloc] init];
mobileUIConfig.logoImg = [UIImage imageNamed:@"cmccLogo"];
[JVERIFICATIONService customUIWithConfig:mobileUIConfig customViews:^(UIView *customAreaView) {
//添加一個自定義label
UILabel *lable = [[UILabel alloc] init];
lable.text = @"這是一個自定義label";
[lable sizeToFit];
lable.center = customAreaView.center;
[customAreaView addSubview:lable];
}];
/*聯(lián)通*/
JVUnicomUIConfig *unicomUIConfig = [[JVUnicomUIConfig alloc] init];
unicomUIConfig.logoImg = [UIImage imageNamed:@"cuccLogo"];
[JVERIFICATIONService customUIWithConfig:unicomUIConfig customViews:^(UIView *customAreaView) {
//添加自定義控件
}];
/*電信*/
JVTelecomUIConfig *telecomUIConfig = [[JVTelecomUIConfig alloc] init];
telecomUIConfig.logoImg = [UIImage imageNamed:@"ctccLogo"];
telecomUIConfig.navColor = [UIColor redColor];
telecomUIConfig.appPrivacyOne = @[@"自定義協(xié)議1",@"https://www.jiguang.cn/push"];
telecomUIConfig.appPrivacyTwo = @[@"自定義協(xié)議2",@"https://www.jiguang.cn/media/news/143"];
[JVERIFICATIONService customUIWithConfig:telecomUIConfig customViews:^(UIView *customAreaView) {
//添加自定義控件
}];
JVAuthConfig類
應用配置信息類。以下是屬性說明:

JVAuthEntity類
認證實體類。包含認證的手機號和token。以下是屬性說明:

JVUIConfig類
登錄界面UI配置基類。以下是屬性說明:



JVMobileUIConfig類
移動登錄界面UI配置類,JVUIConfig的子類。
JVUnicomUIConfig類
聯(lián)通登錄界面UI配置類,JVUIConfig的子類。
JVTelecomUIConfig類
電信登錄界面UI配置類,JVUIConfig的子類。
錯誤碼列表


后續(xù)
這里我看文檔居然有寫 要傳手機號,這里比較納悶,明明是一鍵登錄,為啥要輸入手機號,以上也只是我對于極光認證文檔的一些個人總結(jié),大部分還是原文檔信息,如果最近有接觸這個業(yè)務的同學可以講下 具體的操作步驟。我看文檔也沒Demo。主要是收費的。不好操作。
這篇到此就結(jié)束了 ,希望能有人看到并解惑我的疑問吧。