[置顶] 【重点推荐】iOS开发之芝麻信用SDK的超详细使用教程

转自:http://blog.csdn.net/l2i2j2/article/details/51254816


其实每一个第三方SDK的使用都差不多,看着官方给的开发文档和Demo就能依样画瓢自己做出来。我只是希望帮助一下刚入行不久的新人。

先附上官方文档的地址:芝麻信用iOS开发文档

一、先做一些必备的工作

由于需要导入的Framework比较多,先创建一个Frameworks分组(分组和文件夹可不一样哦)


1. 将资源bundle导入工程
     H5Service.bundle
     Poseidon.bundle

直接把下载到的这两个文件拖进Frameworks分组中


2. 向工程中导入SDK Framework文件
     ZMCreditSDK.framework
     ZMDependUponSDK.framework

注意1:如果商户引入支付宝钱包SDK,则不需要再引入ZMBuildUponSDK.framework, 因为这样可以解决相同类库冲突的问题

注意:这两个文件导入之前一定要把他复制到你的项目中去,一般就放项目根目录下就行,跟xcodeproj文件在同一目录下


这里需要选择Add Others,然后会弹出文件选择框,把刚刚复制到项目根目录下的这两个framework选进来就行了

(第三步中的其他依赖库,都是系统的,直接search就行了,第三步就不贴图了)

 
3. 导入其他依赖库
    SDK中依赖了其他基础库来保证正常运行,请添加如下依赖库:
    MobileCoreServices.framewrok
    CFNetwork.framework
    MessageUI.framework
    EventKit.framework
    AssetsLibrary.framework
    CoreMotion.framework
    Libz.dylib (Xcode 7 之后是libz.tbd)
    SystemConfiguration.framework
    CoreTelephony.framework 

二、开始使用芝麻信用SDK

自己先把流程走一遍,一切都会变的很容易。(流程见下图)

首先,在AppDelegate里面来注册应用:

[objc]  view plain  copy
  1. [[ALCreditService sharedService] resgisterApp];  

当然,在AppDelegate中和请求芝麻信用分数的Controller中肯定也都需要引入头文件

[objc]  view plain  copy
  1. #import <ZMCreditSDK/ALCreditService.h>  

接下来就是正式使用芝麻信用SDK了

①我们把用户的信息(姓名、手机号、身份证号码)通过APP传给公司的服务器(这一步其实基本不属于芝麻信用的使用范畴,现在哪个APP获取不到用户的个人信息?!我们这里其实只传了姓名和身份证号码,其实有了身份证号码,芝麻信用自然就能锁定到那个唯一的人)只要能够获取到姓名和身份证号码,服务器那边就能传给我们一个经过加密的param和一个经过加密的sign

注意2:界面跳转是基于navigationController的push功能,并且使用的是系统的nav bar,如果商户端有对nav bar作自定义,请在调用SDK之前,进行nav bar的调整。

[objc]  view plain  copy
  1. - (void)buttonAction:(UIButton *)button {  
  2.     // ①把用户数据传给服务器,即传入参数(字典)  
  3.     //(如果后台从别的页面已经获取到用户的这些数据了,此处也可以不传参数,这就看你跟后台怎么商量了;IDCardNumber和userName是后台给你的,不是固定死的)  
  4.     NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"18位身份证号码"@"IDCardNumber"@"用户姓名"@"userName", nil nil];  
  5.     // 创建网络请求管理对象  
  6.     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  7.     // 申明返回的结果是json类型  
  8.     manager.responseSerializer = [AFJSONResponseSerializer serializer];  
  9.     // 申明请求的数据是json类型  
  10.     manager.requestSerializer = [AFJSONRequestSerializer serializer];  
  11.     // 如果报接受类型不一致请替换一致text/html或别的  
  12.     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil nil];  
  13.       
  14.     [manager POST:URL parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {  
  15.           
  16.     } progress:^(NSProgress * _Nonnull uploadProgress) {  
  17.           
  18.     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  
  19.           
  20.         // ②芝麻信用SDK提供的方法,就是这么简单,就一行代码,搞定。(APP ID由公司给你,这个是固定的,写死就行)  
  21.         // ②这里只要传三个参数就行,app id、sign、params,芝麻信用会返回给我们一个字典,在result中  
  22.         [[ALCreditService sharedService] queryUserAuthReq:@"APP ID" sign:responseObject[@"sign"] params:responseObject[@"param"] extParams:nil selector:@selector(result:) target:self];  
  23.           
  24.     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
  25.           
  26.     }];  
  27. }  

②根据SDK给的方法,把第二步获取到的这两个参数和APP ID传进去,这些就被传到芝麻信用的服务器,然后会返回给我们授权token,字段名也是sign和params

[objc]  view plain  copy
  1. // ②芝麻信用SDK提供的方法,就是这么简单,就一行代码,搞定。(APP ID由公司给你,这个是固定的,写死就行)  
  2. // ②这里只要传三个参数就行,app id、sign、params,芝麻信用会返回给我们一个字典,在result中  
  3. [[ALCreditService sharedService] queryUserAuthReq:@"APP ID" sign:responseObject[@"sign"] params:responseObject[@"param"] extParams:nil selector:@selector(result:) target:self];  
这一步的代码不用复制,就在第一步的AFN网络请求成功后写这一行代码(上面第一步中有)

③我们再把params提交给公司的服务器,然后服务器就能通过这个token获取到用户的芝麻信用分数,最后把分数返回给我们就好了。(我们这里只传了params就能请求的到芝麻信用分数)

[objc]  view plain  copy
  1. - (void)result:(NSMutableDictionary*)dic{  
  2.     // ③从第二步中芝麻信用返回给我们的字典就是这的dic,你可以试着打印看一下  
  3.     // ③把params提交给服务器,服务器就能把芝麻信用分数返回给我们了,这里dict的key:params也是后台给你的,不是固定的。  
  4.     NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:dic[@"params"], @"params", nil nil];  
  5.     // 创建网络请求管理对象  
  6.     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  7.     // 申明返回的结果是json类型  
  8.     manager.responseSerializer = [AFJSONResponseSerializer serializer];  
  9.     // 申明请求的数据是json类型  
  10.     manager.requestSerializer = [AFJSONRequestSerializer serializer];  
  11.     // 如果报接受类型不一致请替换一致text/html或别的  
  12.     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil nil];  
  13.       
  14.     [manager POST:URL parameters:dict constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {  
  15.           
  16.     } progress:^(NSProgress * _Nonnull uploadProgress) {  
  17.           
  18.     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  
  19.           
  20.         // 看看这里是不是打印出了你想要的芝麻分数了呢  
  21.         NSLog(@"%@", responseObject);  
  22.           
  23.     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
  24.           
  25.     }];    
  26. }  
注意3:由于sdk里面有用到c编译,请把调用queryUserAuthReq的controller后缀名改成.mm
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值