Commit 33bbaab3fff5158823f3e95476ee4221d7412fd9

Authored by zhangxiaowen
1 parent 7b2ee585

no message

CNLiveServices.podspec
... ... @@ -32,11 +32,6 @@ TODO: Add long description of the pod here.
32 32  
33 33 s.source_files = 'CNLiveServices/Classes/CNLiveServices.h'
34 34  
35   - # 环境
36   - s.subspec 'Environment' do |ss|
37   - ss.source_files = 'CNLiveServices/Classes/Environment/*.{h,m}'
38   - end
39   -
40 35 # 首页
41 36 s.subspec 'Home' do |ss|
42 37 ss.source_files = 'CNLiveServices/Classes/Home/*.{h,m}'
... ... @@ -74,5 +69,6 @@ TODO: Add long description of the pod here.
74 69 # s.public_header_files = 'Pod/Classes/**/*.h'
75 70 # s.frameworks = 'UIKit', 'MapKit'
76 71 s.dependency 'BeeHive'
77   -
  72 + s.dependency 'CNLiveEnvironment'
  73 +
78 74 end
... ...
CNLiveServices/Classes/CNLiveServices.h
... ... @@ -11,9 +11,6 @@
11 11  
12 12 #import "BeeHive.h"
13 13  
14   -//环境
15   -#import "CNLiveEnvironmentServiceProtocol.h"
16   -
17 14 //首页
18 15 #import "CNLiveHomeServiceProtocol.h"
19 16  
... ...
CNLiveServices/Classes/Environment/CNLiveEnvironmentServiceProtocol.h deleted 100644 → 0
1   -//
2   -// CNLiveEnvironmentServiceProtocol.h
3   -// TestBH
4   -//
5   -// Created by CNLive-zxw on 2019/7/22.
6   -// Copyright © 2019 XW. All rights reserved.
7   -//
8   -
9   -#import <Foundation/Foundation.h>
10   -#import "BHServiceProtocol.h"
11   -
12   -typedef NS_ENUM(NSInteger, CNLiveEnvironmentType) {
13   - CNLiveDebugInHouse = 0,//测试企业环境
14   - CNLiveProductionInHouse = 1,//正式企业环境
15   - CNLiveDebugAppStore = 2,//测试商店环境
16   - CNLiveProductionAppStore = 3 //正式商店环境
17   -
18   -};
19   -
20   -@protocol CNLiveEnvironmentServiceProtocol <NSObject, BHServiceProtocol>
21   -- (void)setEnvironment:(CNLiveEnvironmentType)isEnvironment;
22   -
23   -
24   -@end
Example/CNLiveServices.xcodeproj/project.pbxproj
... ... @@ -15,6 +15,8 @@
15 15 0833CE9A22EFE03200AA3B2C /* CNUserAgreementWebController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0833CE9922EFE03200AA3B2C /* CNUserAgreementWebController.m */; };
16 16 084124BC22E70027006699C6 /* CNLiveDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 084124BB22E70027006699C6 /* CNLiveDetailsViewController.m */; };
17 17 084124C622E702C6006699C6 /* CNLiveFoundViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 084124C522E702C6006699C6 /* CNLiveFoundViewController.m */; };
  18 + 084356B5231CFDBA006BD702 /* CNLiveUserInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 084356B4231CFDBA006BD702 /* CNLiveUserInfoModel.m */; };
  19 + 084356B8231D10F8006BD702 /* CNLiveUserRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 084356B7231D10F8006BD702 /* CNLiveUserRequest.m */; };
18 20 0882D6A422E5AE1B000859E7 /* CNLiveLoginService.m in Sources */ = {isa = PBXBuildFile; fileRef = 0882D6A322E5AE1B000859E7 /* CNLiveLoginService.m */; };
19 21 0882D6A722E5AEB2000859E7 /* CNLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0882D6A622E5AEB2000859E7 /* CNLoginViewController.m */; };
20 22 0882D6AA22E5AEDB000859E7 /* CNLiveLoginModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 0882D6A922E5AEDB000859E7 /* CNLiveLoginModule.m */; };
... ... @@ -65,6 +67,13 @@
65 67 084124BB22E70027006699C6 /* CNLiveDetailsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveDetailsViewController.m; sourceTree = "<group>"; };
66 68 084124C422E702C6006699C6 /* CNLiveFoundViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLiveFoundViewController.h; sourceTree = "<group>"; };
67 69 084124C522E702C6006699C6 /* CNLiveFoundViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveFoundViewController.m; sourceTree = "<group>"; };
  70 + 084356B3231CFDBA006BD702 /* CNLiveUserInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLiveUserInfoModel.h; sourceTree = "<group>"; };
  71 + 084356B4231CFDBA006BD702 /* CNLiveUserInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveUserInfoModel.m; sourceTree = "<group>"; };
  72 + 084356B6231D10F8006BD702 /* CNLiveUserRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLiveUserRequest.h; sourceTree = "<group>"; };
  73 + 084356B7231D10F8006BD702 /* CNLiveUserRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveUserRequest.m; sourceTree = "<group>"; };
  74 + 084356B9231D1128006BD702 /* CNLiveUserTypeDef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLiveUserTypeDef.h; sourceTree = "<group>"; };
  75 + 084356BA231D19A4006BD702 /* CNLiveUserUrl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLiveUserUrl.h; sourceTree = "<group>"; };
  76 + 084356BB231D1DDE006BD702 /* CNLiveUserCenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLiveUserCenter.h; sourceTree = "<group>"; };
68 77 0882D6A222E5AE1B000859E7 /* CNLiveLoginService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLiveLoginService.h; sourceTree = "<group>"; };
69 78 0882D6A322E5AE1B000859E7 /* CNLiveLoginService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLiveLoginService.m; sourceTree = "<group>"; };
70 79 0882D6A522E5AEB2000859E7 /* CNLoginViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLoginViewController.h; sourceTree = "<group>"; };
... ... @@ -195,8 +204,15 @@
195 204 084124C822E72DE4006699C6 /* Model */ = {
196 205 isa = PBXGroup;
197 206 children = (
  207 + 084356B9231D1128006BD702 /* CNLiveUserTypeDef.h */,
198 208 08A5392F22FC22C000CDA315 /* CNLiveUserInfoManager.h */,
199 209 08A5393022FC22C000CDA315 /* CNLiveUserInfoManager.m */,
  210 + 084356B3231CFDBA006BD702 /* CNLiveUserInfoModel.h */,
  211 + 084356B4231CFDBA006BD702 /* CNLiveUserInfoModel.m */,
  212 + 084356B6231D10F8006BD702 /* CNLiveUserRequest.h */,
  213 + 084356B7231D10F8006BD702 /* CNLiveUserRequest.m */,
  214 + 084356BA231D19A4006BD702 /* CNLiveUserUrl.h */,
  215 + 084356BB231D1DDE006BD702 /* CNLiveUserCenter.h */,
200 216 );
201 217 path = Model;
202 218 sourceTree = "<group>";
... ... @@ -405,6 +421,7 @@
405 421 developmentRegion = English;
406 422 hasScannedForEncodings = 0;
407 423 knownRegions = (
  424 + English,
408 425 en,
409 426 Base,
410 427 "zh-Hans",
... ... @@ -474,13 +491,21 @@
474 491 );
475 492 inputPaths = (
476 493 "${PODS_ROOT}/Target Support Files/Pods-CNLiveServices_Example/Pods-CNLiveServices_Example-frameworks.sh",
  494 + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework",
477 495 "${BUILT_PRODUCTS_DIR}/BeeHive/BeeHive.framework",
  496 + "${BUILT_PRODUCTS_DIR}/CNLiveEnvironment/CNLiveEnvironment.framework",
  497 + "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework",
  498 + "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework",
478 499 );
479 500 name = "[CP] Embed Pods Frameworks";
480 501 outputFileListPaths = (
481 502 );
482 503 outputPaths = (
  504 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework",
483 505 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BeeHive.framework",
  506 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveEnvironment.framework",
  507 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework",
  508 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework",
484 509 );
485 510 runOnlyForDeploymentPostprocessing = 0;
486 511 shellPath = /bin/sh;
... ... @@ -527,8 +552,10 @@
527 552 08109F1E22FC3CBC0008A577 /* CNLiveFoundService.m in Sources */,
528 553 0833CE9A22EFE03200AA3B2C /* CNUserAgreementWebController.m in Sources */,
529 554 0882D6A422E5AE1B000859E7 /* CNLiveLoginService.m in Sources */,
  555 + 084356B8231D10F8006BD702 /* CNLiveUserRequest.m in Sources */,
530 556 0882D6B822E5B3D1000859E7 /* CNLiveHomeViewController.m in Sources */,
531 557 084124C622E702C6006699C6 /* CNLiveFoundViewController.m in Sources */,
  558 + 084356B5231CFDBA006BD702 /* CNLiveUserInfoModel.m in Sources */,
532 559 08A5393122FC22C000CDA315 /* CNLiveUserInfoManager.m in Sources */,
533 560 6003F59A195388D20070C39A /* main.m in Sources */,
534 561 );
... ...
Example/CNLiveServices/Found/CNLiveFoundViewController.m
... ... @@ -7,6 +7,7 @@
7 7 //
8 8  
9 9 #import "CNLiveFoundViewController.h"
  10 +#import "CNLiveUserInfoManager.h"
10 11  
11 12 @interface CNLiveFoundViewController ()
12 13  
... ... @@ -28,6 +29,9 @@
28 29 [btn0 setTitle:@"回调传值" forState:UIControlStateNormal];
29 30 [btn0 addTarget:self action:@selector(testButtonClicked) forControlEvents:UIControlEventTouchUpInside];
30 31 [self.view addSubview:btn0];
  32 +
  33 + NSLog(@"姓名:%@, ID:%@, Token:%@, Head:%@",User_Name,User_ID,User_Token, User_Head);
  34 +
31 35  
32 36 }
33 37  
... ...
Example/CNLiveServices/Home/CNLiveHomeViewController.m
... ... @@ -59,7 +59,7 @@
59 59  
60 60 - (void)testButtonClicked1 {
61 61 id<CNLiveUserAgreementServiceProtocol> agreement = [[BeeHive shareInstance] createService:@protocol(CNLiveUserAgreementServiceProtocol)];
62   - [[agreement class] jumpToAgreementH5WithType:CNAgreementUser];
  62 + [[agreement class] jumpToAgreementH5WithType:CNAgreementCancellation];
63 63  
64 64 }
65 65  
... ...
Example/CNLiveServices/Login/Controller/CNLoginViewController.m
... ... @@ -9,6 +9,7 @@
9 9 #import "CNLoginViewController.h"
10 10 #import "CNLiveServices.h"
11 11 #import "CNLiveUserInfoManager.h"
  12 +#import "CNLiveUserRequest.h"
12 13  
13 14 @interface CNLoginViewController ()
14 15  
... ... @@ -32,13 +33,13 @@
32 33 self.view.backgroundColor = [UIColor whiteColor];
33 34 self.title = @"登录";
34 35  
35   -// UIButton *btn0 = [UIButton buttonWithType:UIButtonTypeCustom];
36   -// btn0.frame = CGRectMake(0, 0, 100, 100);
37   -// btn0.center = CGPointMake(self.view.center.x, self.view.center.y-120);
38   -// btn0.backgroundColor = [UIColor redColor];
39   -// [btn0 setTitle:@"进入协议" forState:UIControlStateNormal];
40   -// [btn0 addTarget:self action:@selector(testButtonClicked) forControlEvents:UIControlEventTouchUpInside];
41   -// [self.view addSubview:btn0];
  36 + UIButton *btn0 = [UIButton buttonWithType:UIButtonTypeCustom];
  37 + btn0.frame = CGRectMake(0, 0, 100, 100);
  38 + btn0.center = CGPointMake(self.view.center.x, self.view.center.y-120);
  39 + btn0.backgroundColor = [UIColor redColor];
  40 + [btn0 setTitle:@"进入协议" forState:UIControlStateNormal];
  41 + [btn0 addTarget:self action:@selector(testButtonClicked0) forControlEvents:UIControlEventTouchUpInside];
  42 + [self.view addSubview:btn0];
42 43  
43 44 UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
44 45 btn1.frame = CGRectMake(0, 0, 100, 100);
... ... @@ -50,19 +51,27 @@
50 51  
51 52 }
52 53  
53   -- (void)testButtonClicked {
54   -// id<CNLiveHomeServiceProtocol> home = [[BeeHive shareInstance] createService:@protocol(CNLiveHomeServiceProtocol)];
55   -// [home pushToHomeViewController];
56   -
  54 +- (void)testButtonClicked0 {
57 55 id<CNLiveUserAgreementServiceProtocol> agreement = [[BeeHive shareInstance] createService:@protocol(CNLiveUserAgreementServiceProtocol)];
58   - [agreement jumpToAgreementH5WithType:CNAgreementUser];
  56 + [[agreement class] jumpToAgreementH5WithType:CNAgreementUser];
59 57  
60 58 }
61 59  
62 60 - (void)testButtonClicked1 {
63   - [CNLiveUserInfoManager manager].isLogin = YES;
  61 +
  62 + [CNLiveUserRequest loginWithUserName:nil password:nil fromId:nil success:^(id _Nonnull result) {
  63 +
  64 + } failure:^(NSDictionary * _Nonnull errorDic) {
  65 +
  66 + }];
  67 +
  68 +
  69 +// NSDictionary *dic = @{@"token":@"zxwqwer",@"id":@"123",@"pic":@"http://asdsa",@"name":@"张晓文"};
  70 + NSDictionary *dic = @{@"token":@"zxwqwer",@"id":@"123",@"name":@"张晓文",@"pic":@""};
  71 +
  72 + [[CNLiveUserInfoManager manager] defaultConfiguration:dic];
64 73 [self dismissViewControllerAnimated:YES completion:^{
65   - self.completeBlock? self.completeBlock(YES):@"";
  74 + self.completeBlock? self.completeBlock(User_Login):@"";
66 75  
67 76 }];
68 77 }
... ...
Example/CNLiveServices/Login/Model/CNLiveUserCenter.h 0 → 100644
  1 +//
  2 +// CNLiveUserCenter.h
  3 +// CNLiveServices
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/2.
  6 +// Copyright © 2019 153993236@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#ifndef CNLiveUserCenter_h
  10 +#define CNLiveUserCenter_h
  11 +
  12 +// 枚举值
  13 +#import "CNLiveUserTypeDef.h"
  14 +// 用户相关的请求
  15 +#import "CNLiveUserRequest.h"
  16 +// 本地化用户数据
  17 +#import "CNLiveUserInfoManager.h"
  18 +
  19 +#endif /* CNLiveUserCenter_h */
... ...
Example/CNLiveServices/Login/Model/CNLiveUserInfoManager.h
... ... @@ -6,14 +6,63 @@
6 6 // Copyright © 2019 153993236@qq.com. All rights reserved.
7 7 //
8 8  
  9 +/**
  10 + * 保存用户信息
  11 + */
  12 +
9 13 #import <Foundation/Foundation.h>
  14 +#import "CNLiveUserTypeDef.h"
10 15  
11 16 NS_ASSUME_NONNULL_BEGIN
  17 +// Token
  18 +#define User_Token [CNLiveUserInfoManager manager].token?[CNLiveUserInfoManager manager].token:@""
  19 +// 用户id
  20 +#define User_ID [CNLiveUserInfoManager manager].ID?[CNLiveUserInfoManager manager].ID:@""
  21 +// 用户手机号
  22 +#define User_Tel [CNLiveUserInfoManager manager].tel?[CNLiveUserInfoManager manager].tel:@""
  23 +// 用户名字
  24 +#define User_Name [CNLiveUserInfoManager manager].name?[CNLiveUserInfoManager manager].name:@""
  25 +// 用户性别
  26 +#define User_Sex [CNLiveUserInfoManager manager].sex?[CNLiveUserInfoManager manager].sex:@""
  27 +// 默认头像
  28 +#define Default_Head @"默认头像"
  29 +// 用户头像
  30 +#define User_Head [CNLiveUserInfoManager manager].pic?[CNLiveUserInfoManager manager].pic:Default_Head
  31 +// 用户简介
  32 +#define User_Introduction [CNLiveUserInfoManager manager].introduction?[CNLiveUserInfoManager manager].introduction:@""
  33 +// 用户是否登录
  34 +#define User_Login [CNLiveUserInfoManager manager].isLogin
12 35  
13 36 @interface CNLiveUserInfoManager : NSObject
14   -@property (nonatomic, assign) BOOL isLogin;
  37 +
  38 +@property (nonatomic, copy, readonly) NSString * __nullable token;
  39 +@property (nonatomic, copy, readonly) NSString * __nullable ID;
  40 +@property (nonatomic, copy, readonly) NSString * __nullable name;
  41 +@property (nonatomic, copy, readonly) NSString * __nullable tel;
  42 +@property (nonatomic, copy, readonly) NSString * __nullable pic;
  43 +@property (nonatomic, copy, readonly) NSString * __nullable sex;
  44 +@property (nonatomic, copy, readonly) NSString * __nullable introduction;
  45 +@property (nonatomic, assign, readonly) BOOL isLogin;
  46 +
15 47 + (instancetype)manager;
16 48  
  49 +/**
  50 + * 配置用户信息
  51 + *
  52 + * dic 用户信息字典
  53 + */
  54 +- (void)defaultConfiguration:(NSDictionary *)dic;
  55 +
  56 +/**
  57 + * 更新用户信息
  58 + */
  59 +- (void)updateUserInfo:(CNLiveUserInfoType)type info:(NSString *)info;
  60 +
  61 +/**
  62 + * 退出登录,删除用户信息
  63 + */
  64 +- (void)removeUserInfo;
  65 +
17 66 @end
18 67  
19 68 NS_ASSUME_NONNULL_END
... ...
Example/CNLiveServices/Login/Model/CNLiveUserInfoManager.m
... ... @@ -7,11 +7,24 @@
7 7 //
8 8  
9 9 #import "CNLiveUserInfoManager.h"
  10 +#import "MJExtension.h"
  11 +#import "CNLiveUserInfoModel.h"
  12 +
10 13 @interface CNLiveUserInfoManager()
  14 +@property (nonatomic, copy, readwrite) NSString * __nullable token;
  15 +@property (nonatomic, copy, readwrite) NSString * __nullable ID;
  16 +@property (nonatomic, copy, readwrite) NSString * __nullable tel;
  17 +@property (nonatomic, copy, readwrite) NSString * __nullable name;
  18 +@property (nonatomic, copy, readwrite) NSString * __nullable pic;
  19 +@property (nonatomic, copy, readwrite) NSString * __nullable sex;
  20 +@property (nonatomic, copy, readwrite) NSString * __nullable introduction;
11 21  
  22 +@property (nonatomic, strong) CNLiveUserInfoModel * __nullable model;
12 23 @end
13 24  
14 25 @implementation CNLiveUserInfoManager
  26 +NSString * const CNLiveUserInfo = @"CNLiveUserInfo";
  27 +
15 28 static CNLiveUserInfoManager *_instance = nil;
16 29  
17 30 /**
... ... @@ -40,6 +53,112 @@ static CNLiveUserInfoManager *_instance = nil;
40 53 - (nonnull id)mutableCopyWithZone:(nullable NSZone *)zone {
41 54 return _instance;
42 55 }
  56 +- (instancetype)init{
  57 + if (self = [super init]) {
  58 + NSDictionary *dic = [[NSUserDefaults standardUserDefaults] objectForKey:CNLiveUserInfo];
  59 + if (dic != nil) {
  60 + [self defaultConfiguration:dic];
  61 + }
  62 + }
  63 + return self;
  64 +}
  65 +
  66 +/**
  67 + * 用户是否登录成功
  68 + */
  69 +- (BOOL)isLogin{
  70 + if(self.ID && ![self.ID isEqualToString:@""] && self.name && ![self.name isEqualToString:@""] && self.token && ![self.token isEqualToString:@""]){
  71 + return YES;
  72 + }
  73 + return NO;
  74 +}
  75 +
  76 +/**
  77 + * 配置用户信息
  78 + *
  79 + * dic 用户信息字典
  80 + */
  81 +- (void)defaultConfiguration:(NSDictionary *)dic {
  82 + [[NSUserDefaults standardUserDefaults] setObject:dic forKey:CNLiveUserInfo];
  83 + [[NSUserDefaults standardUserDefaults] synchronize];
  84 +
  85 + CNLiveUserInfoModel *model = [CNLiveUserInfoModel mj_objectWithKeyValues:dic];
  86 + self.model = model;
  87 + self.token = model.token;
  88 + self.ID = model.ID;
  89 + self.name = model.name;
  90 + self.pic = model.pic;
  91 +}
  92 +
  93 +/**
  94 + * 更新用户信息
  95 + */
  96 +- (void)updateUserInfo:(CNLiveUserInfoType)type info:(NSString *)info{
  97 + NSMutableDictionary *dic = [[NSUserDefaults standardUserDefaults] objectForKey:CNLiveUserInfo];
  98 + if (dic != nil) {
  99 + switch (type) {
  100 + case CNLiveUserInfoTypeTel:
  101 + {
  102 + dic[@"tel"] = info;
  103 + _instance.tel = info;
  104 + _instance.model.tel = info;
  105 +
  106 + }
  107 + break;
  108 + case CNLiveUserInfoTypeName:
  109 + {
  110 + dic[@"name"] = info;
  111 + _instance.name = info;
  112 + _instance.model.name = info;
  113 +
  114 + }
  115 + break;
  116 + case CNLiveUserInfoTypeHead:
  117 + {
  118 + dic[@"pic"] = info;
  119 + _instance.pic = info;
  120 + _instance.model.pic = info;
  121 +
  122 + }
  123 + break;
  124 + case CNLiveUserInfoTypeSex:
  125 + {
  126 + dic[@"sex"] = info;
  127 + _instance.sex = info;
  128 + _instance.model.sex = info;
  129 +
  130 + }
  131 + break;
  132 + case CNLiveUserInfoTypeIntroduction:
  133 + {
  134 + dic[@"introduction"] = info;
  135 + _instance.introduction = info;
  136 + _instance.model.introduction = info;
  137 +
  138 + }
  139 + break;
  140 + }
  141 + [[NSUserDefaults standardUserDefaults] setObject:dic forKey:CNLiveUserInfo];
  142 + [[NSUserDefaults standardUserDefaults] synchronize];
  143 + }
  144 +}
  145 +
  146 +/**
  147 + * 退出登录,删除用户信息
  148 + */
  149 +- (void)removeUserInfo{
  150 + [[NSUserDefaults standardUserDefaults] setObject:nil forKey:CNLiveUserInfo];
  151 + [[NSUserDefaults standardUserDefaults] synchronize];
  152 +
  153 + self.model = nil;
  154 + self.token = nil;
  155 + self.ID = nil;
  156 + self.name = nil;
  157 + self.pic = nil;
  158 + self.sex = nil;
  159 + self.introduction = nil;
  160 +
  161 +}
43 162  
44 163  
45 164 @end
... ...
Example/CNLiveServices/Login/Model/CNLiveUserInfoModel.h 0 → 100644
  1 +//
  2 +// CNLiveUserInfoModel.h
  3 +// CNLiveServices_Example
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/2.
  6 +// Copyright © 2019 153993236@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +
  11 +NS_ASSUME_NONNULL_BEGIN
  12 +
  13 +@interface CNLiveUserInfoModel : NSObject
  14 +@property (nonatomic, copy) NSString *token;
  15 +@property (nonatomic, copy) NSString *ID;
  16 +@property (nonatomic, copy) NSString *tel;
  17 +@property (nonatomic, copy) NSString *name;
  18 +@property (nonatomic, copy) NSString *pic;
  19 +@property (nonatomic, copy) NSString *sex;
  20 +@property (nonatomic, copy) NSString *introduction;
  21 +
  22 +@end
  23 +
  24 +NS_ASSUME_NONNULL_END
... ...
Example/CNLiveServices/Login/Model/CNLiveUserInfoModel.m 0 → 100644
  1 +//
  2 +// CNLiveUserInfoModel.m
  3 +// CNLiveServices_Example
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/2.
  6 +// Copyright © 2019 153993236@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#import "CNLiveUserInfoModel.h"
  10 +
  11 +@implementation CNLiveUserInfoModel
  12 +
  13 ++ (NSDictionary *)mj_replacedKeyFromPropertyName {
  14 + return @{@"ID":@"id"};
  15 +}
  16 +
  17 +@end
... ...
Example/CNLiveServices/Login/Model/CNLiveUserRequest.h 0 → 100644
  1 +//
  2 +// CNLiveUserRequest.h
  3 +// CNLiveServices_Example
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/2.
  6 +// Copyright © 2019 153993236@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +#import "CNLiveUserTypeDef.h"
  11 +
  12 +NS_ASSUME_NONNULL_BEGIN
  13 +
  14 +@interface CNLiveUserRequest : NSObject
  15 +
  16 +/**
  17 + @abstract 初始化
  18 + @param appId 注册成功获得应用ID
  19 + @param appKey 注册成功获得应用key
  20 + @param appSecret 注册成功获得应用secret
  21 + @param isTestEnvironment 测试环境开关
  22 + @warning 必传参数
  23 + 必须在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 方法中调用
  24 + */
  25 ++ (void)setAppId:(NSString *)appId appKey:(NSString *)appKey appSecret:(NSString *)appSecret isTestEnvironment:(BOOL)isTestEnvironment;
  26 +
  27 +
  28 +/**
  29 + @abstract 发送验证码
  30 + @param type 发送验证码类型(详见CodeType)
  31 + @param mobile 手机号
  32 + @param success 成功回调
  33 + @param failure 失败回调
  34 + */
  35 ++ (void)verificationCodeType:(CNLiveCodeType)type mobile:(NSString *)mobile success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;
  36 +
  37 +
  38 +/**
  39 + @abstract 注册
  40 + @param userName 邮箱或手机
  41 + @param password 密码
  42 + @param verificationCode 手机验证码(手机号注册时必填)
  43 + @param invitationCode 邀请码(非必填)
  44 + @param fromId 渠道ID(非必填)
  45 + @param success 成功回调
  46 + @param failure 失败回调
  47 + */
  48 ++ (void)registerWithUserName:(NSString *)userName password:(NSString *)password verificationCode:(NSString *)verificationCode invitationCode:(NSString * _Nullable)invitationCode fromId:(NSString * _Nullable)fromId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;
  49 +
  50 +
  51 +/**
  52 + @abstract 快捷登录
  53 + @param userName 手机号
  54 + @param verificationCode 验证码
  55 + @param fromId 渠道ID(非必填)
  56 + @param success 成功回调
  57 + @param failure 失败回调
  58 + */
  59 ++ (void)shortcutLoginWithUserName:(NSString *)userName verificationCode:(NSString *)verificationCode fromId:(NSString * _Nullable)fromId success:(void (^)(id))success failure :(void (^)(NSDictionary *))failure;
  60 +
  61 +
  62 +/**
  63 + @abstract 登录
  64 + @param userName 手机号或邮箱
  65 + @param password 密码
  66 + @param fromId 渠道ID(非必填)
  67 + @param success 成功回调
  68 + @param failure 失败回调
  69 + */
  70 ++ (void)loginWithUserName:(NSString *)userName password:(NSString *)password fromId:(NSString * _Nullable)fromId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;
  71 +
  72 +
  73 +/**
  74 + @abstract 修改用户单项信息
  75 + @param type 修改类型(name-昵称, sex-性别, tel-手机号, head-头像, introduction-简介)
  76 + @param uid 用户ID
  77 + @param info 对应的信息(注sex对应f/m/n)
  78 + @param success 成功回调
  79 + @param failure 失败回调
  80 + */
  81 ++ (void)updateUserInfoType:(CNLiveUserInfoType)type uid:(NSString *)uid info:(NSString *)info success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure;
  82 +
  83 +
  84 +@end
  85 +
  86 +NS_ASSUME_NONNULL_END
... ...
Example/CNLiveServices/Login/Model/CNLiveUserRequest.m 0 → 100644
  1 +//
  2 +// CNLiveUserRequest.m
  3 +// CNLiveServices_Example
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/2.
  6 +// Copyright © 2019 153993236@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#import "CNLiveUserRequest.h"
  10 +#import "CNLiveUserUrl.h"
  11 +
  12 +#define User_AppId [CNLiveUserRequest manager].appId?[CNLiveUserRequest manager].appId:@""
  13 +#define User_AppKey [CNLiveUserRequest manager].appKey?[CNLiveUserRequest manager].appKey:@""
  14 +#define User_AppSecret [CNLiveUserRequest manager].appSecret?[CNLiveUserRequest manager].appSecret:@""
  15 +#define User_TestEnvironment [CNLiveUserRequest manager].isTestEnvironment
  16 +
  17 +@interface CNLiveUserRequest()
  18 +
  19 +@property (nonatomic, copy) NSString *appId;
  20 +@property (nonatomic, copy) NSString *appKey;
  21 +@property (nonatomic, copy) NSString *appSecret;
  22 +@property (nonatomic, assign) BOOL isTestEnvironment;
  23 +
  24 +@end
  25 +
  26 +@implementation CNLiveUserRequest
  27 +static CNLiveUserRequest *_instance = nil;
  28 +
  29 +/**
  30 + * @abstract 单例初始化
  31 + */
  32 ++ (instancetype)manager{
  33 + static dispatch_once_t once;
  34 + dispatch_once(&once, ^{
  35 + _instance = [[CNLiveUserRequest alloc]init];
  36 + });
  37 + return _instance;
  38 +}
  39 +
  40 ++ (id)allocWithZone:(struct _NSZone *)zone{
  41 + static dispatch_once_t onceToken;
  42 + dispatch_once(&onceToken, ^{
  43 + _instance = [super allocWithZone:zone];
  44 + });
  45 + return _instance;
  46 +}
  47 +
  48 +- (nonnull id)copyWithZone:(nullable NSZone *)zone {
  49 + return _instance;
  50 +}
  51 +
  52 +- (nonnull id)mutableCopyWithZone:(nullable NSZone *)zone {
  53 + return _instance;
  54 +}
  55 +
  56 +/**
  57 + @abstract 初始化
  58 + @param appId 注册成功获得应用ID
  59 + @param appKey 注册成功获得应用key
  60 + @param appSecret 注册成功获得应用secret
  61 + @param isTestEnvironment 测试环境开关
  62 + @warning 必传参数
  63 + 必须在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; 方法中调用
  64 + */
  65 ++ (void)setAppId:(NSString *)appId appKey:(NSString *)appKey appSecret:(NSString *)appSecret isTestEnvironment:(BOOL)isTestEnvironment{
  66 + CNLiveUserRequest *manager = [CNLiveUserRequest manager];
  67 + manager.appId = appId;
  68 + manager.appKey = appKey;
  69 + manager.appSecret = appSecret;
  70 + manager.isTestEnvironment = isTestEnvironment;
  71 +
  72 +}
  73 +
  74 +
  75 +/**
  76 + @abstract 发送验证码
  77 + @param type 发送验证码类型(详见CodeType)
  78 + @param mobile 手机号
  79 + @param success 成功回调
  80 + @param failure 失败回调
  81 + */
  82 ++ (void)verificationCodeType:(CNLiveCodeType)type mobile:(NSString *)mobile success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure{
  83 + NSString *url = (User_TestEnvironment)?CNLive_User_Code_Test:CNLive_User_Code;
  84 +
  85 +}
  86 +
  87 +
  88 +/**
  89 + @abstract 注册
  90 + @param userName 邮箱或手机
  91 + @param password 密码
  92 + @param verificationCode 手机验证码(手机号注册时必填)
  93 + @param invitationCode 邀请码(非必填)
  94 + @param fromId 渠道ID(非必填)
  95 + @param success 成功回调
  96 + @param failure 失败回调
  97 + */
  98 ++ (void)registerWithUserName:(NSString *)userName password:(NSString *)password verificationCode:(NSString *)verificationCode invitationCode:(NSString * _Nullable)invitationCode fromId:(NSString * _Nullable)fromId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure{
  99 + NSString *url = (User_TestEnvironment)?CNLive_User_Register_Test:CNLive_User_Register;
  100 +
  101 +}
  102 +
  103 +
  104 +/**
  105 + @abstract 快捷登录
  106 + @param userName 手机号
  107 + @param verificationCode 验证码
  108 + @param fromId 渠道ID(非必填)
  109 + @param success 成功回调
  110 + @param failure 失败回调
  111 + */
  112 ++ (void)shortcutLoginWithUserName:(NSString *)userName verificationCode:(NSString *)verificationCode fromId:(NSString * _Nullable)fromId success:(void (^)(id))success failure :(void (^)(NSDictionary *))failure{
  113 + NSString *url = (User_TestEnvironment)?CNLive_User_SLogin_Test:CNLive_User_SLogin;
  114 +
  115 +}
  116 +
  117 +
  118 +/**
  119 + @abstract 登录
  120 + @param userName 手机号或邮箱
  121 + @param password 密码
  122 + @param fromId 渠道ID(非必填)
  123 + @param success 成功回调
  124 + @param failure 失败回调
  125 + */
  126 ++ (void)loginWithUserName:(NSString *)userName password:(NSString *)password fromId:(NSString * _Nullable)fromId success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure{
  127 + NSString *url = (User_TestEnvironment)?CNLive_User_Login_Test:CNLive_User_Login;
  128 +
  129 +}
  130 +
  131 +
  132 +/**
  133 + @abstract 修改用户单项信息
  134 + @param type 修改类型(name-昵称, sex-性别, tel-手机号, head-头像, introduction-简介)
  135 + @param uid 用户ID
  136 + @param info 对应的信息(注sex对应f/m/n)
  137 + @param success 成功回调
  138 + @param failure 失败回调
  139 + */
  140 ++ (void)updateUserInfoType:(CNLiveUserInfoType)type uid:(NSString *)uid info:(NSString *)info success:(void (^)(id result))success failure:(void (^)(NSDictionary *errorDic))failure {
  141 + NSString *url = (User_TestEnvironment)?CNLive_User_Update_Test:CNLive_User_Update;
  142 +
  143 +}
  144 +
  145 +@end
... ...
Example/CNLiveServices/Login/Model/CNLiveUserTypeDef.h 0 → 100644
  1 +//
  2 +// CNLiveUserTypeDef.h
  3 +// CNLiveServices_Example
  4 +//
  5 +// Created by CNLive-zxw on 2019/8/8.
  6 +// Copyright © 2019 153993236@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#ifndef CNLiveUserTypeDef_h
  10 +#define CNLiveUserTypeDef_h
  11 +
  12 +// 获取验证码
  13 +typedef NS_ENUM(NSUInteger, CNLiveCodeType) {
  14 + CNLiveCodeTypeShortcutLogin = 0, //快捷登录
  15 + CNLiveCodeTypeRegister, //注册
  16 + CNLiveCodeTypeUpdateTel, //修改手机号
  17 + CNLiveCodeTypeRetrievePassword //找回或修改密码
  18 +};
  19 +
  20 +
  21 +// 修改单项用户信息类型
  22 +typedef NS_ENUM(NSUInteger, CNLiveUserInfoType) {
  23 + CNLiveUserInfoTypeTel = 0, //手机号
  24 + CNLiveUserInfoTypeName, //昵称
  25 + CNLiveUserInfoTypeHead, //头像
  26 + CNLiveUserInfoTypeSex, //性别
  27 + CNLiveUserInfoTypeIntroduction //简介
  28 +
  29 +};
  30 +
  31 +#endif /* CNLiveUserTypeDef_h */
... ...
Example/CNLiveServices/Login/Model/CNLiveUserUrl.h 0 → 100644
  1 +//
  2 +// CNLiveUserUrl.h
  3 +// CNLiveServices_Example
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/2.
  6 +// Copyright © 2019 153993236@qq.com. All rights reserved.
  7 +//
  8 +
  9 +#ifndef CNLiveUserUrl_h
  10 +#define CNLiveUserUrl_h
  11 +
  12 +// 获取验证码
  13 +#define CNLive_User_Code @""
  14 +#define CNLive_User_Code_Test @""
  15 +
  16 +// 登录
  17 +#define CNLive_User_Register @""
  18 +#define CNLive_User_Register_Test @""
  19 +
  20 +// 快捷登录
  21 +#define CNLive_User_SLogin @""
  22 +#define CNLive_User_SLogin_Test @""
  23 +
  24 +// 登录
  25 +#define CNLive_User_Login @""
  26 +#define CNLive_User_Login_Test @""
  27 +
  28 +// 更新
  29 +#define CNLive_User_Update @""
  30 +#define CNLive_User_Update_Test @""
  31 +
  32 +
  33 +#endif /* CNLiveUserUrl_h */
... ...
Example/CNLiveServices/UserAgreement/CNUserAgreementManager.m
... ... @@ -8,6 +8,8 @@
8 8  
9 9 #import "CNUserAgreementManager.h"
10 10 #import "CNUserAgreementWebController.h"
  11 +#import "CNLiveNetworking.h"
  12 +#import "CNLiveEnvironment.h"
11 13  
12 14 @BeeHiveService(CNLiveUserAgreementServiceProtocol,CNUserAgreementManager)
13 15 @interface CNUserAgreementManager ()<CNLiveUserAgreementServiceProtocol>
... ... @@ -86,172 +88,171 @@ static CNUserAgreementManager *_instance = nil;
86 88 }
87 89  
88 90 - (void)getAgreementH5WithType:(CNGetAgreementH5Type)type success:(SuccessBlock)success failure:(FailureBlock)failure {
89   - // [CNLiveNetworking setAllowRequestDefaultArgument:NO];
90   - // [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodGET URLString:CNGetAgreementH5Url Param:@{} CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
91   - // if (error) {
92   - // if (failure) {
93   - // failure(error);
94   - // }
95   - // }
96   - // else{
97   - // if ([responseObject isKindOfClass:[NSArray class]]) {
98   - //
99   - // for (NSDictionary *dic in responseObject) {
100   - //
101   - // switch (type) {
102   - // case CNAgreementUser:
103   - // {
104   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"yhxy"]) {
105   - // if (success) {
106   - // success(dic[@"detailUrl"],dic[@"title"]);
107   - // return ;
108   - // }
109   - // }
110   - // }
111   - // break;
112   - // case CNAgreementPrivacy:
113   - // {
114   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"yszc"]) {
115   - // if (success) {
116   - // success(dic[@"detailUrl"],dic[@"title"]);
117   - // return ;
118   - // }
119   - // }
120   - // }
121   - // break;
122   - // case CNAgreementHelp:
123   - // {
124   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"bzfk"]) {
125   - // if (success) {
126   - // success(dic[@"detailUrl"],dic[@"title"]);
127   - // return ;
128   - // }
129   - // }
130   - // }
131   - // break;
132   - // case CNAgreementUnderstand:
133   - // {
134   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"ljwjj"]) {
135   - // if (success) {
136   - // success(dic[@"detailUrl"],dic[@"title"]);
137   - // return ;
138   - // }
139   - // }
140   - // }
141   - // break;
142   - // case CNAgreementIntroduction:
143   - // {
144   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"yyjj"]) {
145   - // if (success) {
146   - // success(dic[@"detailUrl"],dic[@"title"]);
147   - // return ;
148   - // }
149   - // }
150   - // }
151   - // break;
152   - // case CNAgreementCopyright:
153   - // {
154   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"bqxx"]) {
155   - // if (success) {
156   - // success(dic[@"detailUrl"],dic[@"title"]);
157   - // return ;
158   - // }
159   - // }
160   - // }
161   - // break;
162   - // case CNAgreementPermission:
163   - // {
164   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"rjxkxy"]) {
165   - // if (success) {
166   - // success(dic[@"detailUrl"],dic[@"title"]);
167   - // return ;
168   - // }
169   - // }
170   - // }
171   - // break;
172   - // case CNAgreementIntegralRules:
173   - // {
174   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"jfgz"]) {
175   - // if (success) {
176   - // success(dic[@"detailUrl"],dic[@"title"]);
177   - // return ;
178   - // }
179   - // }
180   - // }
181   - // break;
182   - // case CNAgreementSigninRules:
183   - // {
184   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"jfjlgz"]) {
185   - // if (success) {
186   - // success(dic[@"detailUrl"],dic[@"title"]);
187   - // return ;
188   - // }
189   - // }
190   - // }
191   - // break;
192   - // case CNAgreementReviewApply:
193   - // {
194   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"shsqxy"]) {
195   - // if (success) {
196   - // success(dic[@"detailUrl"],dic[@"title"]);
197   - // return ;
198   - // }
199   - // }
200   - // }
201   - // break;
202   - // case CNAgreementCancellation:
203   - // {
204   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"zxxz"]) {
205   - // if (success) {
206   - // success(dic[@"detailUrl"],dic[@"title"]);
207   - // return ;
208   - // }
209   - // }
210   - // }
211   - // break;
212   - // case CNAgreementEmojiService:
213   - // {
214   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"fwsm"]) {
215   - // if (success) {
216   - // success(dic[@"detailUrl"],dic[@"title"]);
217   - // return ;
218   - // }
219   - // }
220   - // }
221   - // break;
222   - // case CNAgreementEmojiComplaints:
223   - // {
224   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"tssm"]) {
225   - // if (success) {
226   - // success(dic[@"detailUrl"],dic[@"title"]);
227   - // return ;
228   - // }
229   - // }
230   - // }
231   - // break;
232   - // case CNAgreementEnterpriseQualification:
233   - // {
234   - // if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"qyzz"]) {
235   - // if (success) {
236   - // success(dic[@"detailUrl"],dic[@"title"]);
237   - // return ;
238   - // }
239   - // }
240   - // }
241   - // break;
242   - // default:
243   - // break;
244   - // }
245   - //
246   - // }
247   - //
248   - // }
249   - // if (failure) {
250   - // failure(error);
251   - // }
252   - // }
253   - // }];
254   - success(@"https://www.baidu.com", @"用户注册协议");
  91 + [CNLiveNetworking setAllowRequestDefaultArgument:NO];
  92 + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodGET URLString:CNGetAgreementH5Url Param:@{} CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
  93 + if (error) {
  94 + if (failure) {
  95 + failure(error);
  96 + }
  97 + }
  98 + else{
  99 + if ([responseObject isKindOfClass:[NSArray class]]) {
  100 +
  101 + for (NSDictionary *dic in responseObject) {
  102 +
  103 + switch (type) {
  104 + case CNAgreementUser:
  105 + {
  106 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"yhxy"]) {
  107 + if (success) {
  108 + success(dic[@"detailUrl"],dic[@"title"]);
  109 + return ;
  110 + }
  111 + }
  112 + }
  113 + break;
  114 + case CNAgreementPrivacy:
  115 + {
  116 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"yszc"]) {
  117 + if (success) {
  118 + success(dic[@"detailUrl"],dic[@"title"]);
  119 + return ;
  120 + }
  121 + }
  122 + }
  123 + break;
  124 + case CNAgreementHelp:
  125 + {
  126 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"bzfk"]) {
  127 + if (success) {
  128 + success(dic[@"detailUrl"],dic[@"title"]);
  129 + return ;
  130 + }
  131 + }
  132 + }
  133 + break;
  134 + case CNAgreementUnderstand:
  135 + {
  136 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"ljwjj"]) {
  137 + if (success) {
  138 + success(dic[@"detailUrl"],dic[@"title"]);
  139 + return ;
  140 + }
  141 + }
  142 + }
  143 + break;
  144 + case CNAgreementIntroduction:
  145 + {
  146 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"yyjj"]) {
  147 + if (success) {
  148 + success(dic[@"detailUrl"],dic[@"title"]);
  149 + return ;
  150 + }
  151 + }
  152 + }
  153 + break;
  154 + case CNAgreementCopyright:
  155 + {
  156 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"bqxx"]) {
  157 + if (success) {
  158 + success(dic[@"detailUrl"],dic[@"title"]);
  159 + return ;
  160 + }
  161 + }
  162 + }
  163 + break;
  164 + case CNAgreementPermission:
  165 + {
  166 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"rjxkxy"]) {
  167 + if (success) {
  168 + success(dic[@"detailUrl"],dic[@"title"]);
  169 + return ;
  170 + }
  171 + }
  172 + }
  173 + break;
  174 + case CNAgreementIntegralRules:
  175 + {
  176 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"jfgz"]) {
  177 + if (success) {
  178 + success(dic[@"detailUrl"],dic[@"title"]);
  179 + return ;
  180 + }
  181 + }
  182 + }
  183 + break;
  184 + case CNAgreementSigninRules:
  185 + {
  186 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"jfjlgz"]) {
  187 + if (success) {
  188 + success(dic[@"detailUrl"],dic[@"title"]);
  189 + return ;
  190 + }
  191 + }
  192 + }
  193 + break;
  194 + case CNAgreementReviewApply:
  195 + {
  196 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"shsqxy"]) {
  197 + if (success) {
  198 + success(dic[@"detailUrl"],dic[@"title"]);
  199 + return ;
  200 + }
  201 + }
  202 + }
  203 + break;
  204 + case CNAgreementCancellation:
  205 + {
  206 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"zxxz"]) {
  207 + if (success) {
  208 + success(dic[@"detailUrl"],dic[@"title"]);
  209 + return ;
  210 + }
  211 + }
  212 + }
  213 + break;
  214 + case CNAgreementEmojiService:
  215 + {
  216 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"fwsm"]) {
  217 + if (success) {
  218 + success(dic[@"detailUrl"],dic[@"title"]);
  219 + return ;
  220 + }
  221 + }
  222 + }
  223 + break;
  224 + case CNAgreementEmojiComplaints:
  225 + {
  226 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"tssm"]) {
  227 + if (success) {
  228 + success(dic[@"detailUrl"],dic[@"title"]);
  229 + return ;
  230 + }
  231 + }
  232 + }
  233 + break;
  234 + case CNAgreementEnterpriseQualification:
  235 + {
  236 + if ([[NSString stringWithFormat:@"%@",dic[@"type"]] isEqualToString:@"qyzz"]) {
  237 + if (success) {
  238 + success(dic[@"detailUrl"],dic[@"title"]);
  239 + return ;
  240 + }
  241 + }
  242 + }
  243 + break;
  244 + default:
  245 + break;
  246 + }
  247 +
  248 + }
  249 +
  250 + }
  251 + if (failure) {
  252 + failure(error);
  253 + }
  254 + }
  255 + }];
255 256  
256 257 }
257 258  
... ...
Example/CNLiveServices/UserAgreement/CNUserAgreementWebController.m
... ... @@ -169,7 +169,6 @@
169 169  
170 170 // 页面加载失败时调用
171 171 - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(nonnull NSError *)error{
172   - NSLog(@"打印这个error%@",error);
173 172  
174 173 }
175 174  
... ...
Example/Podfile
... ... @@ -6,6 +6,8 @@ platform :ios, &#39;9.0&#39;
6 6  
7 7 target 'CNLiveServices_Example' do
8 8 pod 'CNLiveServices', :path => '../'
  9 + pod 'CNLiveRequestBastKit'
  10 + pod 'MJExtension'
9 11  
10 12 target 'CNLiveServices_Tests' do
11 13 inherit! :search_paths
... ...