Commit ba2ee1dffa6cbc457c7c0b8f9458675b50d9c4c4

Authored by iOS-Xiaowen
1 parent 356a6557

no message

Showing 27 changed files with 501 additions and 1074 deletions
CNLiveBLoginModule.podspec
... ... @@ -62,10 +62,6 @@ TODO: 网家家-登录模块.
62 62 ss.dependency 'CNLiveBLoginModule/View'
63 63 end
64 64  
65   - s.subspec 'BindingManage' do |ss|
66   - ss.source_files = 'CNLiveBLoginModule/Classes/BindingManage/*.{h,m}'
67   - end
68   -
69 65 s.resource_bundles = {
70 66 'CNLiveBLoginModule' => ['CNLiveBLoginModule/Assets/CNLiveBLoginModule.xcassets']
71 67 }
... ... @@ -80,6 +76,7 @@ TODO: 网家家-登录模块.
80 76 s.dependency 'CNLiveTripartiteManagement/SDWebImage'
81 77 s.dependency 'CNLiveTripartiteManagement/Masonry'
82 78 s.dependency 'CNLiveTripartiteManagement/MJExtension'
  79 + s.dependency 'CNLiveTripartiteManagement/AFNetworking', '0.1.6'
83 80  
84 81 # 服务层
85 82 s.dependency 'CNLiveServices'
... ... @@ -91,10 +88,10 @@ TODO: 网家家-登录模块.
91 88 s.dependency 'CNLiveUserManagement'
92 89  
93 90 # 环境库
94   - s.dependency 'CNLiveEnvironment'
  91 + s.dependency 'CNLiveBEnvironment'
95 92  
96 93 # 数据请求
97   - s.dependency 'CNLiveRequestBastKit'
  94 + s.dependency 'CNLiveRequestBastKit', '0.2.4.2'
98 95  
99 96 # 用户协议
100 97 s.dependency 'CNLiveUserAgreementManager'
... ... @@ -114,7 +111,7 @@ TODO: 网家家-登录模块.
114 111 s.dependency 'tingyunApp', '~>2.14.0'
115 112  
116 113 # 分享
117   -# s.dependency 'CNLiveShareToolKit'
  114 + s.dependency 'CNLiveShareToolKit'
118 115  
119 116 # 类别
120 117 s.dependency 'CNLiveCategory'
... ... @@ -122,8 +119,11 @@ TODO: 网家家-登录模块.
122 119 # 自定义控件
123 120 s.dependency 'CNLiveCustomControl'
124 121  
  122 + # 基础库
125 123 s.dependency 'CNLiveBusinessBaseModule'
126 124  
127 125 s.static_framework = true
128 126  
  127 + s.xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }
  128 +
129 129 end
... ...
CNLiveBLoginModule/Assets/CNLiveBLoginModule.xcassets/login_apple.imageset/Contents.json
... ... @@ -5,18 +5,18 @@
5 5 "scale" : "1x"
6 6 },
7 7 {
8   - "idiom" : "universal",
9 8 "filename" : "login_apple@2x.png",
  9 + "idiom" : "universal",
10 10 "scale" : "2x"
11 11 },
12 12 {
13   - "idiom" : "universal",
14 13 "filename" : "login_apple@3x.png",
  14 + "idiom" : "universal",
15 15 "scale" : "3x"
16 16 }
17 17 ],
18 18 "info" : {
19   - "version" : 1,
20   - "author" : "xcode"
  19 + "author" : "xcode",
  20 + "version" : 1
21 21 }
22   -}
23 22 \ No newline at end of file
  23 +}
... ...
CNLiveBLoginModule/Assets/CNLiveBLoginModule.xcassets/login_apple.imageset/login_apple@2x.png

5.16 KB | W: | H:

5.07 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
CNLiveBLoginModule/Assets/CNLiveBLoginModule.xcassets/login_apple.imageset/login_apple@3x.png

11.4 KB | W: | H:

11 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageCell.h deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageCell.h
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -
9   -#import <UIKit/UIKit.h>
10   -
11   -NS_ASSUME_NONNULL_BEGIN
12   -@class CNLiveBindingManageModel;
13   -#define kCNLiveBindingManageCell @"CNLiveBindingManageCell"
14   -
15   -@class CNLiveBindingManageCell;
16   -@protocol CNLiveBindingManageCellDelegate <NSObject>
17   -//isBinding YES 绑定操作 NO 解除绑定操作
18   -- (void)clickedBindingButton:(CNLiveBindingManageCell *)cell isBinding:(BOOL)isBinding;
19   -
20   -@end
21   -
22   -@interface CNLiveBindingManageCell : UITableViewCell
23   -@property (nonatomic, strong) CNLiveBindingManageModel *model;
24   -@property (nonatomic, weak) id<CNLiveBindingManageCellDelegate> delegate;
25   -
26   -@end
27   -
28   -NS_ASSUME_NONNULL_END
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageCell.m deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageCell.m
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -
9   -#import "CNLiveBindingManageCell.h"
10   -#import <Masonry/Masonry.h>
11   -#import "QMUIKit.h"
12   -#import "CNLiveBaseKit.h"
13   -#import <CNLiveRequestBastKit/CNLiveNetworking.h>
14   -
15   -#import "CNLiveBindingManageModel.h"
16   -#import "CNLiveBindingManageRequest.h"
17   -
18   -@interface CNLiveBindingManageCell()
19   -@property (nonatomic, strong) UIImageView *icon;
20   -@property (nonatomic, strong) UILabel *title;
21   -@property (nonatomic, strong) UILabel *desc;
22   -@property (nonatomic, strong) UIButton *manage;
23   -@property (nonatomic, strong) UIView *line;
24   -
25   -@end
26   -@implementation CNLiveBindingManageCell
27   -static NSInteger const margin = 15;
28   -
29   -- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
30   - self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
31   - if (self) {
32   - self.contentView.backgroundColor = [UIColor whiteColor];
33   - [self createSubViews];
34   - }
35   - return self;
36   -}
37   -- (void)setModel:(CNLiveBindingManageModel *)model{
38   - _model = model;
39   - _icon.image = [UIImage imageNamed:model.image];
40   - _title.text = model.title;
41   - _desc.text = model.desc;
42   - if([model.isBinding isEqualToString:@"1"]){
43   - _manage.backgroundColor = RGBOF(0xd9d9d9);
44   - [_manage setTitle:@"已绑定" forState:UIControlStateNormal];
45   -
46   - }else{
47   - _manage.backgroundColor = RGBOF(0x23d41e);
48   - [_manage setTitle:@"未绑定" forState:UIControlStateNormal];
49   -
50   - }
51   -
52   -}
53   -#pragma mark - setupUI
54   -- (void)createSubViews {
55   - [self.contentView addSubview:self.icon];
56   - [self.contentView addSubview:self.title];
57   - [self.contentView addSubview:self.desc];
58   - [self.contentView addSubview:self.manage];
59   - [self.contentView addSubview:self.line];
60   -
61   -}
62   -
63   -- (void)layoutSubviews {
64   - [self.icon mas_makeConstraints:^(MASConstraintMaker *make) {
65   - make.centerY.equalTo(self.contentView);
66   - make.left.equalTo(self.contentView).offset(margin);
67   - make.width.mas_equalTo(50);
68   - make.height.mas_equalTo(50);
69   - }];
70   -
71   - [self.manage mas_makeConstraints:^(MASConstraintMaker *make) {
72   - make.centerY.equalTo(self.contentView);
73   - make.right.equalTo(self.contentView.mas_right).offset(-margin);
74   - make.width.mas_equalTo(70);
75   - make.height.mas_equalTo(30);
76   - }];
77   -
78   - [self.title mas_makeConstraints:^(MASConstraintMaker *make) {
79   - make.top.equalTo(self.icon.mas_top);
80   - make.left.equalTo(self.icon.mas_right).offset(margin);
81   - make.right.equalTo(self.manage.mas_left).offset(-margin);
82   - make.height.mas_equalTo(25);
83   - }];
84   -
85   - [self.desc mas_makeConstraints:^(MASConstraintMaker *make) {
86   - make.top.equalTo(self.title.mas_bottom);
87   - make.left.equalTo(self.title.mas_left);
88   - make.right.equalTo(self.title.mas_right);
89   - make.height.mas_equalTo(25);
90   - }];
91   - [self.line mas_makeConstraints:^(MASConstraintMaker *make) {
92   - make.bottom.equalTo(self.contentView.mas_bottom).offset(-0.5);
93   - make.left.equalTo(self.contentView.mas_left);
94   - make.right.equalTo(self.contentView.mas_right);
95   - make.height.mas_equalTo(0.5);
96   - }];
97   -}
98   -
99   -- (void)awakeFromNib {
100   - [super awakeFromNib];
101   - // Initialization code
102   -}
103   -
104   -- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
105   - [super setSelected:selected animated:animated];
106   -
107   - // Configure the view for the selected state
108   -}
109   -
110   -#pragma mark - Lazy Loading
111   -- (UIImageView *)icon {
112   - if (!_icon) {
113   - _icon = [[UIImageView alloc] init];
114   - _icon.contentMode = UIViewContentModeScaleAspectFill;
115   - _icon.layer.cornerRadius = 25;
116   - _icon.layer.masksToBounds = YES;
117   - }
118   - return _icon;
119   -}
120   -- (UILabel *)title {
121   - if (!_title) {
122   - _title = [[UILabel alloc] init];
123   - _title.textColor = RGBOF(0x333333);
124   - _title.font = UIFontCNMake(16);//[UIFont fontWithName:@"PingFangSC-Regular" size:15];
125   - _title.numberOfLines = 0;
126   - }
127   - return _title;
128   -}
129   -- (UILabel *)desc {
130   - if (!_desc) {
131   - _desc = [[UILabel alloc] init];
132   - _desc.textColor = RGBOF(0x999999);
133   - _desc.font = UIFontCNMake(12);//[UIFont fontWithName:@"PingFangSC-Regular" size:15];
134   - _desc.numberOfLines = 0;
135   - }
136   - return _desc;
137   -}
138   -- (UIButton *)manage {
139   - if (!_manage) {
140   - _manage = [UIButton buttonWithType:UIButtonTypeCustom];
141   - _manage.backgroundColor = RGBOF(0xd9d9d9);
142   - [_manage setTitle:@"已绑定" forState:UIControlStateNormal];
143   - [_manage setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
144   - _manage.titleLabel.font = UIFontCNMake(14);
145   - _manage.layer.cornerRadius = 15;
146   - _manage.layer.masksToBounds = YES;
147   - [_manage addTarget:self action:@selector(manageDidClicked:) forControlEvents:UIControlEventTouchUpInside];
148   - }
149   - return _manage;
150   -}
151   -
152   -- (UIView *)line {
153   - if (!_line) {
154   - _line = [[UIView alloc] init];
155   - _line.backgroundColor = RGBOF(0xeeeeee);
156   - }
157   - return _line;
158   -}
159   -
160   -#pragma mark - Action
161   -- (void)manageDidClicked:(UIButton *)btn{
162   - if([self.model.thirdPartyPlat isEqualToString:@"10"]){
163   - return;
164   - }
165   - if(![CNLiveNetworking isNetworking]){
166   - [QMUITips showError:@"无法连接网络" inView:([UIApplication sharedApplication].delegate).window hideAfterDelay:1.5];
167   - return ;
168   - }
169   - btn.userInteractionEnabled = NO;
170   - if (self.delegate && [self.delegate respondsToSelector:@selector(clickedBindingButton:isBinding:)]) {
171   - [self.delegate clickedBindingButton:self isBinding:![self.model.isBinding isEqualToString:@"1"]];
172   - btn.userInteractionEnabled = YES;
173   -
174   - }
175   -}
176   -
177   -
178   -@end
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageController.h deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageController.h
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -// 绑定管理
9   -#import "CNCommonViewController.h"
10   -
11   -NS_ASSUME_NONNULL_BEGIN
12   -
13   -@interface CNLiveBindingManageController : CNCommonViewController
14   -
15   -@end
16   -
17   -NS_ASSUME_NONNULL_END
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageController.m deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageController.m
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -
9   -#import "CNLiveBindingManageController.h"
10   -#import <Masonry/Masonry.h>
11   -#import "CNLiveBaseKit.h"
12   -
13   -#import "CNLiveBindingManageHeaderView.h"
14   -#import "CNLiveBindingManageCell.h"
15   -#import "CNLiveBindingManageModel.h"
16   -#import "CNLiveBindingManageRequest.h"
17   -
18   -@interface CNLiveBindingManageController ()<UITableViewDelegate, UITableViewDataSource,CNLiveBindingManageCellDelegate>
19   -@property (nonatomic, strong) UITableView *tableView;
20   -@property (nonatomic, strong) NSArray *bindingData;
21   -@property (nonatomic, strong) NSArray *unBindingData;
22   -
23   -@end
24   -
25   -@implementation CNLiveBindingManageController
26   -#pragma mark - CNLiveBindingManageCellDelegate
27   -- (void)clickedBindingButton:(CNLiveBindingManageCell *)cell isBinding:(BOOL)isBinding{
28   - if(isBinding){
29   - //绑定操作
30   - [self requestBindingManage:cell.model];
31   -
32   - }else{
33   - //解除绑定操作
34   - UIAlertController *actionAlert1 = [UIAlertController alertControllerWithTitle:@"确定解除绑定?" message:nil preferredStyle:UIAlertControllerStyleAlert];
35   -
36   - UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:NULL];
37   - __weak typeof(self) weakSelf = self;
38   - UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
39   - __strong typeof(weakSelf) strongSelf = weakSelf;
40   - if(!strongSelf) return;
41   - [strongSelf requestBindingManage:cell.model];
42   -
43   - }];
44   - [action1 setValue:RGBOF(0x23D41E) forKey:@"_titleTextColor"];
45   - [action2 setValue:RGBOF(0x23D41E) forKey:@"_titleTextColor"];
46   -
47   - [actionAlert1 addAction:action1];
48   - [actionAlert1 addAction:action2];
49   - [self presentViewController:actionAlert1 animated:YES completion:nil];
50   - }
51   -
52   -}
53   -- (void)requestBindingManage:(CNLiveBindingManageModel *)model{
54   -// switch (model.type) {
55   -// case CNLiveSendAuthRespWX:
56   -// {
57   -// if(![WXApi isWXAppInstalled]){
58   -// [QMUITips showWithText:@"未安装微信" inView:self.view hideAfterDelay:1.5];
59   -// return;
60   -// }
61   -// }
62   -// break;
63   -// case CNLiveSendAuthRespQQ:
64   -// {
65   -// if(![TencentOAuth iphoneQQInstalled]){
66   -// [QMUITips showWithText:@"未安装QQ" inView:self.view hideAfterDelay:1.5];
67   -// return;
68   -// }
69   -// }
70   -// break;
71   -// case CNLiveSendAuthRespWB:
72   -// {
73   -// if(![WeiboSDK isWeiboAppInstalled]){
74   -// [QMUITips showWithText:@"未安装微博" inView:self.view hideAfterDelay:1.5];
75   -// return;
76   -// }
77   -// }
78   -// break;
79   -// case CNLiveSendAuthRespApple:
80   -// {
81   -// }
82   -// break;
83   -// }
84   - __weak typeof(self) weakSelf = self;
85   - [CNLiveBindingManageRequest requestModel:model block:^(BOOL isSuccess, CNLiveBindingManageModel * _Nullable model, BOOL isBinding) {
86   - __strong typeof(weakSelf) strongSelf = weakSelf;
87   - if(!strongSelf) return;
88   - if(isSuccess){
89   - [strongSelf loadData];
90   -
91   - }
92   -
93   - }];
94   -}
95   -#pragma mark - Data
96   -- (void)loadData{
97   - __weak typeof(self) weakSelf = self;
98   - [CNLiveBindingManageRequest requestModels:^(NSArray * _Nullable bindingData, NSArray * _Nullable unBindingData) {
99   - __strong typeof(weakSelf) strongSelf = weakSelf;
100   - if(!strongSelf) return;
101   - strongSelf.bindingData = bindingData;
102   - strongSelf.unBindingData = unBindingData;
103   - [strongSelf.tableView reloadData];
104   - }];
105   -
106   -}
107   -
108   -- (void)viewDidLoad {
109   - [super viewDidLoad];
110   - // Do any additional setup after loading the view.
111   - self.view.backgroundColor = RGBOF(0xf4f4f4);
112   - self.title = @"绑定管理";
113   - if (@available(iOS 11.0, *)) {
114   - self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
115   - } else {
116   - self.automaticallyAdjustsScrollViewInsets = NO;
117   - }
118   - [self loadData];
119   - [self createUI];
120   -
121   -}
122   -
123   -- (void)createUI{
124   - [self.view addSubview:self.tableView];
125   -
126   -}
127   -
128   -- (void)viewDidLayoutSubviews {
129   - [super viewDidLayoutSubviews];
130   - [_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
131   - make.top.equalTo(self.view.mas_top).with.offset(kVerticalStatusHeight+44);
132   - make.left.equalTo(self.view.mas_left).with.offset(0);
133   - make.right.equalTo(self.view.mas_right).with.offset(-0);
134   - make.bottom.equalTo(self.view.mas_bottom).with.offset(-0);
135   -
136   - }];
137   -
138   -}
139   -
140   -#pragma mark - UITableViewDataSource
141   -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
142   - return 2;
143   -
144   -}
145   -
146   -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
147   - if(section == 0){
148   - return self.bindingData.count;
149   -
150   - }else if(section == 1){
151   - return self.unBindingData.count;
152   -
153   - }else{
154   - return 0;
155   - }
156   -
157   -}
158   -
159   -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
160   - return 80;
161   -
162   -}
163   -
164   -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
165   - CNLiveBindingManageCell *cell = [tableView dequeueReusableCellWithIdentifier:kCNLiveBindingManageCell forIndexPath:indexPath];
166   - cell.selectionStyle = UITableViewCellSelectionStyleNone;
167   - cell.delegate = self;
168   - if(indexPath.section == 0){
169   - if(self.bindingData.count > 0){
170   - cell.model = self.bindingData[indexPath.row];
171   - }
172   -
173   - }else if(indexPath.section == 1){
174   - if(self.unBindingData.count > 0){
175   - cell.model = self.unBindingData[indexPath.row];
176   - }
177   - }
178   - return cell;
179   -
180   -}
181   -
182   -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
183   - return 40.0;
184   -
185   -}
186   -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
187   - return 0.0000001f;
188   -
189   -}
190   -
191   -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
192   - NSArray *array = @[@"您已绑定网家家手机号账号", @"其他绑定方式"];
193   - CNLiveBindingManageHeaderView *header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:kCNLiveBindingManageHeaderView];
194   - header.text = array[section];
195   - return header;
196   -
197   -}
198   -
199   -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
200   -
201   -
202   -}
203   -
204   -/*
205   - #pragma mark - Navigation
206   -
207   - // In a storyboard-based application, you will often want to do a little preparation before navigation
208   - - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
209   - // Get the new view controller using [segue destinationViewController].
210   - // Pass the selected object to the new view controller.
211   - }
212   - */
213   -
214   -#pragma mark - Lazy loading
215   -- (UITableView *)tableView {
216   - if (!_tableView) {
217   - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
218   - _tableView.backgroundColor = RGBOF(0xf4f4f4);
219   - _tableView.delegate = self;
220   - _tableView.dataSource = self;
221   - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
222   - _tableView.showsVerticalScrollIndicator = NO;
223   - _tableView.showsHorizontalScrollIndicator = NO;
224   - _tableView.estimatedRowHeight = 0;
225   - _tableView.estimatedSectionFooterHeight = 0;
226   - _tableView.estimatedSectionHeaderHeight = 0;
227   - [_tableView registerClass:[CNLiveBindingManageCell class] forCellReuseIdentifier:kCNLiveBindingManageCell];
228   - [_tableView registerClass:[CNLiveBindingManageHeaderView class] forHeaderFooterViewReuseIdentifier:kCNLiveBindingManageHeaderView];
229   -
230   - }
231   - return _tableView;
232   -}
233   -
234   -@end
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageHeaderView.h deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageHeaderView.h
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -
9   -#import <UIKit/UIKit.h>
10   -
11   -NS_ASSUME_NONNULL_BEGIN
12   -#define kCNLiveBindingManageHeaderView @"CNLiveBindingManageHeaderView"
13   -
14   -@interface CNLiveBindingManageHeaderView : UITableViewHeaderFooterView
15   -@property (nonatomic, copy) NSString *text;
16   -
17   -@end
18   -
19   -NS_ASSUME_NONNULL_END
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageHeaderView.m deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageHeaderView.m
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -
9   -#import "CNLiveBindingManageHeaderView.h"
10   -#import <Masonry/Masonry.h>
11   -
12   -@interface CNLiveBindingManageHeaderView()
13   -@property (nonatomic, strong) UILabel *title;
14   -
15   -@end
16   -@implementation CNLiveBindingManageHeaderView
17   -static NSInteger const margin = 15;
18   -
19   -- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier {
20   - if (self = [super initWithReuseIdentifier:reuseIdentifier]) {
21   - //在这里向contentView添加控件
22   - self.backgroundColor = [UIColor colorWithRed:244/255.0 green:244/255.0 blue:244/255.0 alpha:1.0];
23   - [self createSubviews];
24   - [self xw_layoutSubviews];
25   -
26   - }
27   - return self;
28   -}
29   -- (void)setText:(NSString *)text{
30   - _text = text;
31   - _title.text = text;
32   -}
33   -
34   -#pragma mark - setupUI
35   -- (void)createSubviews {
36   - [self.contentView addSubview:self.title];
37   -
38   -}
39   -
40   -- (void)xw_layoutSubviews {
41   - [self.title mas_makeConstraints:^(MASConstraintMaker *make) {
42   - make.top.equalTo(self.contentView);
43   - make.left.equalTo(self.contentView.mas_left).offset(margin);
44   - make.right.equalTo(self.contentView.mas_right).offset(-margin);
45   - make.bottom.equalTo(self.contentView.mas_bottom);
46   -
47   - }];
48   -
49   -}
50   -
51   -/*
52   -// Only override drawRect: if you perform custom drawing.
53   -// An empty implementation adversely affects performance during animation.
54   -- (void)drawRect:(CGRect)rect {
55   - // Drawing code
56   -}
57   -*/
58   -
59   -#pragma mark - Lazy Loading
60   -- (UILabel *)title {
61   - if (!_title) {
62   - _title = [[UILabel alloc] init];
63   - _title.textColor = [UIColor colorWithRed:153/255.0 green:153/255.0 blue:153/255.0 alpha:1.0];
64   - _title.font = [UIFont systemFontOfSize:14];
65   - _title.numberOfLines = 0;
66   - }
67   - return _title;
68   -}
69   -
70   -@end
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageModel.h deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageModel.h
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -
9   -#import <Foundation/Foundation.h>
10   -//#import "CNLiveShareImageManager.h"
11   -
12   -NS_ASSUME_NONNULL_BEGIN
13   -
14   -@interface CNLiveBindingManageModel : NSObject
15   -@property (nonatomic, copy) NSString *title;
16   -@property (nonatomic, copy) NSString *desc;
17   -@property (nonatomic, copy) NSString *image;
18   -@property (nonatomic, copy) NSString *isBinding;//是否绑定
19   -
20   -@property (nonatomic, copy) NSString *thirdPartyPlat;
21   -@property (nonatomic, copy) NSString *thirdPartyId;
22   -//@property (nonatomic, assign) CNLiveSendAuthResp type;
23   -
24   -
25   -@end
26   -
27   -NS_ASSUME_NONNULL_END
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageModel.m deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageModel.m
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -
9   -#import "CNLiveBindingManageModel.h"
10   -
11   -@implementation CNLiveBindingManageModel
12   -//- (CNLiveSendAuthResp)type{
13   -// CNLiveSendAuthResp type = CNLiveSendAuthRespWX;
14   -//
15   -// if([self.thirdPartyPlat isEqualToString:@"1"]){
16   -// type = CNLiveSendAuthRespWB;
17   -//
18   -// }else if ([self.thirdPartyPlat isEqualToString:@"2"]){
19   -// type = CNLiveSendAuthRespQQ;
20   -//
21   -// }else if([self.thirdPartyPlat isEqualToString:@"3"]){
22   -// type = CNLiveSendAuthRespWX;
23   -//
24   -// }else if([self.thirdPartyPlat isEqualToString:@"5"]){
25   -// type = CNLiveSendAuthRespApple;
26   -//
27   -// }
28   -// return type;
29   -//
30   -//}
31   -
32   -@end
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageRequest.m deleted 100644 → 0
1   -//
2   -// CNLiveBindingManageRequest.m
3   -// CNLiveNetAdd
4   -//
5   -// Created by CNLive-zxw on 2019/9/10.
6   -// Copyright © 2019 cnlive. All rights reserved.
7   -//
8   -
9   -#import "CNLiveBindingManageRequest.h"
10   -#import "QMUIKit.h"
11   -#import <CNLiveRequestBastKit/CNLiveNetworking.h>
12   -#import "CNUserInfoManager.h"
13   -
14   -#import "CNLiveBindingManageModel.h"
15   -
16   -//#import "CNThreeLoginModel.h"
17   -//#import "CNLiveShareImageManager.h"
18   -
19   -@implementation CNLiveBindingManageRequest
20   -+ (void)requestModel:(CNLiveBindingManageModel *)model block:(CNLiveBindingResponseBlock)block{
21   - if([model.isBinding isEqualToString:@"1"]){
22   - //解除绑定操作
23   - [CNLiveBindingManageRequest requestUnBindingModel:model block:^(BOOL isSuccess, CNLiveBindingManageModel * _Nullable model, BOOL isBinding) {
24   - block?block(isSuccess, model, isBinding):@"";
25   - }];
26   - }
27   - else{
28   - //绑定操作
29   - [CNLiveBindingManageRequest requestBindingModel:model block:^(BOOL isSuccess, CNLiveBindingManageModel * _Nullable model, BOOL isBinding) {
30   - block?block(isSuccess, model, isBinding):@"";
31   - }];
32   - }
33   -}
34   -
35   -//绑定操作
36   -+ (void)requestBindingModel:(CNLiveBindingManageModel *)model block:(CNLiveBindingResponseBlock)block{
37   - __weak typeof(self) weakSelf = self;
38   - // 获取第三方id
39   -// [CNLiveShareImageManager send:model.type authRespBlock:^(CNLiveSendAuthResp type, CNLiveThirdPartyModel *userInfo, NSError *error) {
40   -// __strong typeof(weakSelf) strongSelf = weakSelf;
41   -// if(!strongSelf) return;
42   -// if(error){
43   -// if(error.code == 10000){
44   -// //用户取消
45   -// }else{
46   -// [QMUITips showWithText:@"绑定失败" inView:AppKeyWindow hideAfterDelay:1.5];
47   -// }
48   -// return ;
49   -// }
50   -// if(userInfo.thirdPartyId&&![userInfo.thirdPartyId isEqualToString:@""]){
51   -// // 发起绑定请求
52   -// model.thirdPartyId = userInfo.thirdPartyId;
53   -// [strongSelf sendBindingModel:model block:block];
54   -//
55   -// }else{
56   -// [QMUITips showWithText:@"绑定失败" inView:AppKeyWindow hideAfterDelay:1.5];
57   -//
58   -// }
59   -//
60   -// }];
61   -
62   -}
63   -
64   -+ (void)sendBindingModel:(CNLiveBindingManageModel *)model block:(CNLiveBindingResponseBlock)block{
65   -// NSDictionary *params = @{
66   -// @"uid":CNUserShareModel.uid?CNUserShareModel.uid:@"",
67   -// @"thirdPartyPlat":model.thirdPartyPlat?model.thirdPartyPlat:@"",
68   -// @"thirdPartyId":model.thirdPartyId?model.thirdPartyId:@"",
69   -// @"token":CNUserShareModel.token?CNUserShareModel.token:@"",
70   -// @"clientPlat":@"i"};
71   -// [CNLiveNetworking setAllowRequestDefaultArgument:YES];
72   -// [CNLiveNetworking setupShowDataResult:NO];
73   -//
74   -// __weak typeof(self) weakSelf = self;
75   -// [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNLoginBind3rdUrl Param:params CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
76   -// __strong typeof(weakSelf) strongSelf = weakSelf;
77   -// if(!strongSelf) return;
78   -//
79   -// if ([responseObject isKindOfClass:[NSDictionary class]] && [responseObject[@"errorCode"] isEqualToString:@"0"]) {
80   -// //绑定,并更新本地数据
81   -// CNBindingManageModel *bindingModel = [strongSelf updateBindingModel:model isBinding:@"1"];
82   -// block?block(YES, bindingModel, YES):@"";
83   -// }
84   -// else if([responseObject isKindOfClass:[NSDictionary class]]) {
85   -// [QMUITips showWithText:responseObject[@"errorMessage"] inView:AppKeyWindow hideAfterDelay:1.5];
86   -// block?block(NO, nil, NO):@"";
87   -// }
88   -// else{
89   -// [QMUITips showWithText:@"绑定失败" inView:AppKeyWindow hideAfterDelay:1.5];
90   -// block?block(NO, nil, NO):@"";
91   -// }
92   -//
93   -// }];
94   -}
95   -
96   -//解除绑定操作
97   -+ (void)requestUnBindingModel:(CNLiveBindingManageModel *)model block:(CNLiveBindingResponseBlock)block{
98   -// NSDictionary *params = @{
99   -// @"uid":CNUserShareModel.uid?CNUserShareModel.uid:@"",
100   -// @"thirdPartyPlat":model.thirdPartyPlat?model.thirdPartyPlat:@"",
101   -// @"thirdPartyId":model.thirdPartyId?model.thirdPartyId:@"",
102   -// @"token":CNUserShareModel.token?CNUserShareModel.token:@"",
103   -// @"clientPlat":@"i"};
104   -//
105   -// [CNLiveNetworking setAllowRequestDefaultArgument:YES];
106   -// [CNLiveNetworking setupShowDataResult:NO];
107   -//
108   -// __weak typeof(self) weakSelf = self;
109   -// [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNLoginUnBind3rdUrl Param:params CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
110   -// __strong typeof(weakSelf) strongSelf = weakSelf;
111   -// if(!strongSelf) return;
112   -//
113   -// if ([responseObject isKindOfClass:[NSDictionary class]] && [responseObject[@"errorCode"] isEqualToString:@"0"]) {
114   -// //解除绑定,并更新本地数据
115   -// CNBindingManageModel *unbindingModel = [strongSelf updateBindingModel:model isBinding:@"0"];
116   -// block?block(YES, unbindingModel, NO):@"";
117   -// }
118   -// else if ([responseObject isKindOfClass:[NSDictionary class]]) {
119   -// [QMUITips showWithText:responseObject[@"errorMessage"] inView:AppKeyWindow hideAfterDelay:1.5];
120   -// block?block(NO, nil, NO):@"";
121   -// }
122   -// else{
123   -// [QMUITips showWithText:@"解除绑定失败" inView:AppKeyWindow hideAfterDelay:1.5];
124   -// block?block(NO, nil, NO):@"";
125   -// }
126   -//
127   -// }];
128   -
129   -}
130   -
131   -//改变绑定数据
132   -+ (CNLiveBindingManageModel *)updateBindingModel:(CNLiveBindingManageModel *)model isBinding:(NSString *)isBinding{
133   - if([isBinding isEqualToString:@"0"]){
134   - //解除绑定
135   - model.isBinding = @"0";
136   - //微博
137   - if([model.thirdPartyPlat isEqualToString:@"1"]){
138   - CNUserShareModel.sinaUid = @"";
139   -
140   - }
141   - //qq
142   - else if([model.thirdPartyPlat isEqualToString:@"2"]){
143   - CNUserShareModel.qqUid = @"";
144   -
145   - }
146   - //微信
147   - else if([model.thirdPartyPlat isEqualToString:@"3"]){
148   - CNUserShareModel.wxUid = @"";
149   -
150   - }
151   - //苹果
152   - else if([model.thirdPartyPlat isEqualToString:@"5"]){
153   - CNUserShareModel.appleUid = @"";
154   -
155   - }
156   - [QMUITips showWithText:@"解除绑定成功" inView:([UIApplication sharedApplication].delegate).window hideAfterDelay:1.5];
157   - return model;
158   - }
159   - else if ([isBinding isEqualToString:@"1"]){
160   - //添加绑定
161   - model.isBinding = @"1";
162   - //微博
163   - if([model.thirdPartyPlat isEqualToString:@"1"]){
164   - CNUserShareModel.sinaUid = model.thirdPartyId;
165   -
166   - }
167   - //qq
168   - else if([model.thirdPartyPlat isEqualToString:@"2"]){
169   - CNUserShareModel.qqUid = model.thirdPartyId;
170   -
171   - }
172   - //微信
173   - else if([model.thirdPartyPlat isEqualToString:@"3"]){
174   - CNUserShareModel.wxUid = model.thirdPartyId;
175   -
176   - }
177   - //苹果
178   - else if([model.thirdPartyPlat isEqualToString:@"5"]){
179   - CNUserShareModel.appleUid = model.thirdPartyId;
180   -
181   - }
182   - [QMUITips showWithText:@"绑定成功" inView:([UIApplication sharedApplication].delegate).window hideAfterDelay:1.5];
183   - return model;
184   -
185   - }
186   - return nil;
187   -
188   -}
189   -
190   -//请求绑定数据
191   -+ (void)requestModels:(CNLiveBindingArrayBlock)block{
192   - NSMutableArray *bindingData = [[NSMutableArray alloc] init];
193   - NSMutableArray *unBindingData = [[NSMutableArray alloc] init];
194   - CNLiveBindingManageModel *tmodel = [[CNLiveBindingManageModel alloc]init];
195   - tmodel.title = @"手机号";
196   - tmodel.image = @"login_telephone";
197   - NSString *mobile = [CNUserShareModel.mobile stringByReplacingCharactersInRange:NSMakeRange(3, 4) withString:@"****"];
198   - tmodel.desc = mobile;
199   - tmodel.isBinding = @"1";
200   - tmodel.thirdPartyPlat = @"10";
201   - tmodel.thirdPartyId = CNUserShareModel.uid;
202   - [bindingData addObject:tmodel];
203   -
204   - CNLiveBindingManageModel *wmodel = [[CNLiveBindingManageModel alloc]init];
205   - wmodel.title = @"微信";
206   - wmodel.image = @"login_wechat";
207   - wmodel.thirdPartyPlat = @"3";
208   -
209   - if(CNUserShareModel.wxUid&&![CNUserShareModel.wxUid isEqualToString:@""]){
210   - wmodel.desc = @"已绑定微信";
211   - wmodel.thirdPartyId = CNUserShareModel.wxUid;
212   - wmodel.isBinding = @"1";
213   - }else{
214   - wmodel.desc = @"未绑定微信";
215   - wmodel.isBinding = @"0";
216   - }
217   - [unBindingData addObject:wmodel];
218   -
219   - CNLiveBindingManageModel *qmodel = [[CNLiveBindingManageModel alloc]init];
220   - qmodel.title = @"QQ";
221   - qmodel.image = @"login_qq";
222   - qmodel.thirdPartyPlat = @"2";
223   - if(CNUserShareModel.qqUid&&![CNUserShareModel.qqUid isEqualToString:@""]){
224   - qmodel.desc = @"已绑定QQ";
225   - qmodel.thirdPartyId = CNUserShareModel.qqUid;
226   - qmodel.isBinding = @"1";
227   - }else{
228   - qmodel.desc = @"未绑定QQ";
229   - qmodel.isBinding = @"0";
230   - }
231   - [unBindingData addObject:qmodel];
232   -
233   - CNLiveBindingManageModel *smodel = [[CNLiveBindingManageModel alloc]init];
234   - smodel.title = @"微博";
235   - smodel.image = @"login_weibo";
236   - smodel.thirdPartyPlat = @"1";
237   - if(CNUserShareModel.sinaUid&&![CNUserShareModel.sinaUid isEqualToString:@""]){
238   - smodel.desc = @"已绑定微博";
239   - smodel.thirdPartyId = CNUserShareModel.sinaUid;
240   - smodel.isBinding = @"1";
241   - }else{
242   - smodel.desc = @"未绑定微博";
243   - smodel.isBinding = @"0";
244   - }
245   - [unBindingData addObject:smodel];
246   -
247   - CNLiveBindingManageModel *amodel = [[CNLiveBindingManageModel alloc]init];
248   - amodel.title = @"苹果账号";
249   - amodel.image = @"login_apple_icon";
250   - amodel.thirdPartyPlat = @"5";
251   - if(CNUserShareModel.appleUid&&![CNUserShareModel.appleUid isEqualToString:@""]){
252   - amodel.desc = @"已绑定苹果账号";
253   - amodel.thirdPartyId = CNUserShareModel.appleUid;
254   - amodel.isBinding = @"1";
255   - }else{
256   - amodel.desc = @"未绑定苹果账号";
257   - amodel.isBinding = @"0";
258   - }
259   - [unBindingData addObject:amodel];
260   -
261   - block?block(bindingData,unBindingData):@"";
262   -}
263   -
264   -//三方登录
265   -//+ (void)thirdPartyLoginWithType:(CNLiveSendAuthResp)type model:(CNThreeLoginModel *)model block:(CNLoginResponseBlock)block{
266   -// NSDictionary *params = @{@"thirdPartyPlat":model.thirdPartyPlat?model.thirdPartyPlat:@"",
267   -// @"thirdPartyId":model.thirdPartyId?model.thirdPartyId:@"",
268   -// @"frmId":model.frmId?model.frmId:@"",
269   -// @"clientPlat":@"i"};
270   -// [CNLiveNetworking setAllowRequestDefaultArgument:YES];
271   -// [CNLiveNetworking setupShowDataResult:NO];
272   -//
273   -// [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNLoginIn3rdForWJJUrl Param:params CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
274   -// block?block(requestTask, responseObject, error):@"";
275   -//
276   -// }];
277   -//
278   -//
279   -//}
280   -
281   -@end
CNLiveBLoginModule/Classes/Controller/CNLiveLoginController.m
... ... @@ -16,12 +16,15 @@
16 16 #import "CNLiveCategory.h"
17 17 #import "CNUserInfoManager.h"
18 18 #import "CNLiveEnvironment.h"
  19 +#import <CNLiveRequestBastKit/CNLiveNetworking.h>
19 20  
20 21 #import "CNLiveLoginView.h"
21 22 #import "CNLiveThreeLoginView.h"
22 23 #import "CNLiveBindingTelController.h"//绑定手机号
23 24 #import "CNLiveCompleteInfoController.h"//修改昵称
24 25 #import "CNLiveLoginRequest.h"
  26 +#import "CNLiveThreeLoginModel.h"
  27 +#import "CNLiveThreeLoginRequest.h"
25 28  
26 29 @interface CNLiveLoginController()<CNLiveLoginViewDelegate, CNLiveThreeLoginViewDelegate>
27 30 @property (nonatomic, weak) CNLiveLoginView *loginView;
... ... @@ -94,7 +97,7 @@
94 97  
95 98 #pragma mark - CNLiveLoginViewDelegate
96 99 - (void)loginSuccess:(CNLiveLoginView *)view isNewUser:(BOOL)isNewUser result:(id _Nonnull)result{
97   - if (!isNewUser) {
  100 + if (isNewUser) {
98 101 // 新用户 -> 设置昵称和头像
99 102 CNLiveCompleteInfoController *vc = [[CNLiveCompleteInfoController alloc]init];
100 103 vc.hidesBottomBarWhenPushed = YES;
... ... @@ -115,18 +118,124 @@
115 118 }
116 119  
117 120 #pragma mark - CNLiveThreeLoginViewDelegate
118   -- (void)clickedButton:(CNLiveThreeLoginView *)view type:(CNLiveThreeLoginType)type{
  121 +- (void)clickedButton:(CNLiveThreeLoginView *)view type:(CNLiveSendAuthResp)type{
119 122 // 1.请求三方平台
120   -
121   - // 2.绑定手机号
122   - [self jumpToBindingTelController:type];
  123 + if(![CNLiveNetworking isNetworking]){
  124 + [QMUITips showError:@"无法连接网络" inView:self.view hideAfterDelay:1.5];
  125 + return ;
  126 + }
  127 + [self.view endEditing:YES];
  128 + [QMUITips showLoadingInView:self.view];
  129 + __weak typeof(self) weakSelf = self;
  130 + [CNLiveShareImageManager send:type authRespBlock:^(CNLiveSendAuthResp type, CNLiveThirdPartyModel *userInfo, NSError *error) {
  131 + __strong typeof(weakSelf) strongSelf = weakSelf;
  132 + if(!strongSelf) return;
  133 + [QMUITips hideAllToastInView:strongSelf.view animated:YES];
  134 + if(error){
  135 + if (type == CNLiveSendAuthRespApple && error.code == 1001) {
  136 + [QMUITips showError:@"取消登录" inView:strongSelf.view hideAfterDelay:1.5];
  137 + return;
  138 + }
  139 + if(error.code == 10000){
  140 + //用户取消
  141 + [QMUITips showError:@"取消登录" inView:strongSelf.view hideAfterDelay:1.5];
  142 + }else{
  143 + [QMUITips showError:@"登录失败" inView:strongSelf.view hideAfterDelay:1.5];
  144 + }
  145 + return ;
  146 + }
  147 + CNLiveThreeLoginModel *model = [[CNLiveThreeLoginModel alloc]init];
  148 + model.nickName = userInfo.nickName;
  149 + model.gender = userInfo.gender;
  150 + model.location = userInfo.location;
  151 + model.faceUrl = userInfo.faceUrl;
  152 + model.thirdPartyId = userInfo.thirdPartyId;
  153 +
  154 +// model.countryName = strongSelf->_countryStr;
  155 +// model.countryCode = strongSelf->_codeStr;
  156 +// model.frmId = [CNTools getFrmId];
  157 + switch (type) {
  158 + case CNLiveSendAuthRespApple:
  159 + {
  160 + model.thirdPartyPlat = @"5";
  161 + }
  162 + break;
  163 + case CNLiveSendAuthRespWX:
  164 + {
  165 + model.thirdPartyPlat = @"3";
  166 + }
  167 + break;
  168 + case CNLiveSendAuthRespQQ:
  169 + {
  170 + model.thirdPartyPlat = @"2";
  171 + }
  172 + break;
  173 + case CNLiveSendAuthRespWB:
  174 + {
  175 + model.thirdPartyPlat = @"1";
  176 + }
  177 + break;
  178 + }
  179 + [strongSelf thirdPartyLoginWithType:type model:model];
  180 +
  181 + }];
123 182  
124 183 }
125 184  
126   -- (void)jumpToBindingTelController:(CNLiveThreeLoginType)type{
127   - CNLiveBindingTelController *vc = [[CNLiveBindingTelController alloc]initWithType:type];
128   - [self.navigationController pushViewController:vc animated:YES];
129   -
  185 +- (void)thirdPartyLoginWithType:(CNLiveSendAuthResp)type model:(CNLiveThreeLoginModel *)model{
  186 + [QMUITips showLoadingInView:self.view];
  187 + __weak typeof(self) weakSelf = self;
  188 + [CNLiveThreeLoginRequest thirdPartyLoginWithType:type model:model block:^(NSURLSessionTask * _Nonnull requestTask, id _Nonnull responseObject, NSError * _Nonnull error) {
  189 + __strong typeof(weakSelf) strongSelf = weakSelf;
  190 + if(!strongSelf) return;
  191 + [QMUITips hideAllToastInView:strongSelf.view animated:YES];
  192 + if ([responseObject isKindOfClass:[NSDictionary class]] && [responseObject[@"errorCode"] isEqualToString:@"42013"]) {
  193 + //未注册
  194 + CNLiveBindingTelController *vc = [[CNLiveBindingTelController alloc]initWithModel:model];
  195 + __weak typeof(strongSelf) weakSelf = strongSelf;
  196 + vc.block = ^(NSString * _Nonnull countryName, NSString * _Nonnull countryCode) {
  197 + __strong typeof(weakSelf) strongSelf = weakSelf;
  198 + if(!strongSelf) return;
  199 +// strongSelf->_mobileLocaLbl.text = countryName;
  200 +// strongSelf->_countryStr = countryName;
  201 +// strongSelf->_countryLbl.text = [NSString stringWithFormat:@"+%@",countryCode];
  202 +// strongSelf->_codeStr = countryCode;
  203 + };
  204 + vc.hidesBottomBarWhenPushed = YES;
  205 + [strongSelf presentViewController:vc animated:YES completion:nil];
  206 +
  207 + }
  208 + else if ([responseObject isKindOfClass:[NSDictionary class]] && [responseObject[@"errorCode"] isEqualToString:@"0"]) {
  209 + // 登录成功
  210 + // 给用户库使用
  211 + NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
  212 + [userDefaults setObject:responseObject[@"data"][@"token"] forKey:@"CNLiveAuthToken"];
  213 + [userDefaults setObject:responseObject[@"data"][@"uid"] forKey:@"CNLiveUserSid"];
  214 + [userDefaults synchronize];
  215 +
  216 + // 连接IM
  217 + __weak typeof(strongSelf) weakSelf = strongSelf;
  218 + [[CNLiveLoginRequest manager] loginTIM:CNUserShareModel.uid success:^{
  219 + // 进入tabbar
  220 +
  221 + } failed:^(int code, NSString * _Nonnull msg) {
  222 + // 错误逻辑
  223 + __strong typeof(weakSelf) strongSelf = weakSelf;
  224 + if(!strongSelf) return;
  225 +
  226 + }];
  227 +
  228 + }
  229 + else if ([responseObject isKindOfClass:[NSDictionary class]] ) {
  230 + [QMUITips showWithText:responseObject[@"errorMessage"] inView:strongSelf.view hideAfterDelay:1.5];
  231 + }
  232 + else{
  233 + [QMUITips hideAllToastInView:strongSelf.view animated:YES];
  234 + [QMUITips showError:@"登录失败" inView:strongSelf.view hideAfterDelay:1.5];
  235 +
  236 + }
  237 + }];
  238 +
130 239 }
131 240  
132 241 /*
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveBindingTelController.h
1 1 //
2 2 // CNLiveBindingTelController.h
3   -// CNLiveLoginModule
  3 +// CNLiveBLoginModule
4 4 //
5 5 // Created by CNLive-zxw on 2019/9/9.
6 6 // Copyright © 2019 153993236@qq.com. All rights reserved.
... ... @@ -10,9 +10,15 @@
10 10 #import "CNLiveThreeLoginType.h"
11 11  
12 12 NS_ASSUME_NONNULL_BEGIN
  13 +@class CNLiveThreeLoginModel;
  14 +
  15 +typedef void (^CNLiveBindingTelBlock) (NSString *countryName, NSString *countryCode);
13 16  
14 17 @interface CNLiveBindingTelController : UIViewController
15   -- (instancetype)initWithType:(CNLiveThreeLoginType)type;
  18 +@property (nonatomic, strong) CNLiveThreeLoginModel *model;
  19 +@property (nonatomic, copy) CNLiveBindingTelBlock block;
  20 +
  21 +- (instancetype)initWithModel:(CNLiveThreeLoginModel *)model;
16 22  
17 23  
18 24 @end
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveBindingTelController.m
1 1 //
2 2 // CNLiveBindingTelController.m
3   -// CNLiveLoginModule
  3 +// CNLiveBLoginModule
4 4 //
5 5 // Created by CNLive-zxw on 2019/9/9.
6 6 // Copyright © 2019 153993236@qq.com. All rights reserved.
... ... @@ -27,10 +27,10 @@
27 27 @end
28 28  
29 29 @implementation CNLiveBindingTelController
30   -- (instancetype)initWithType:(CNLiveThreeLoginType)type{
  30 +- (instancetype)initWithModel:(CNLiveThreeLoginModel *)model {
31 31 self = [super init];
32 32 if (self) {
33   - self.type = type;
  33 + self.model = model;
34 34 }
35 35 return self;
36 36  
... ... @@ -53,12 +53,10 @@
53 53 [self.view addSubview:self.navigationBar];
54 54 [self.view addSubview:self.bindingTelView];
55 55 [self.view addSubview:self.protocol];
56   -
57 56 }
58 57  
59 58 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
60 59 [self.view endEditing:YES];
61   -
62 60 }
63 61  
64 62 #pragma mark - CNLiveBindingTelViewDelegate
... ... @@ -75,6 +73,7 @@
75 73 // Pass the selected object to the new view controller.
76 74 }
77 75 */
  76 +
78 77 #pragma mark - 懒加载
79 78 - (CNLiveNavigationBar *)navigationBar {
80 79 if (!_navigationBar) {
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveBindingTelView.h
1 1 //
2 2 // CNLiveBindingTelView.h
3   -// CNLiveLoginModule
  3 +// CNLiveBLoginModule
4 4 //
5 5 // Created by CNLive-zxw on 2019/9/6.
6 6 // Copyright © 2019 153993236@qq.com. All rights reserved.
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveBindingTelView.m
1 1 //
2 2 // CNLiveBindingTelView.m
3   -// CNLiveLoginModule
  3 +// CNLiveBLoginModule
4 4 //
5 5 // Created by CNLive-zxw on 2019/9/6.
6 6 // Copyright © 2019 153993236@qq.com. All rights reserved.
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveThreeLoginModel.h 0 → 100644
  1 +//
  2 +// CNLiveThreeLoginModel.h
  3 +// CNLiveBLoginModule
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/10.
  6 +// Copyright © 2019 cnlive. All rights reserved.
  7 +//
  8 +
  9 +#import <Foundation/Foundation.h>
  10 +#import "CNLiveShareImageManager.h"
  11 +
  12 +NS_ASSUME_NONNULL_BEGIN
  13 +
  14 +@interface CNLiveThreeLoginModel : NSObject
  15 +/*
  16 + mobile true string 手机号
  17 + countryCode true string 手机号国家码;中国为86
  18 + verificationCode true string 手机验证码
  19 + thirdPartyPlat true int 第三方平台编号 [platform : 1:sina 2:qq 3:weixin 4:renren]
  20 + thirdPartyId true string 第三方用户ID
  21 + [qq: 建议使用openid, wx: 建议使用unionid, sina: 建议使用idstr];
  22 + 注意:同一用户在登录Sp下不同app时,thirdPartyId必须相同
  23 +
  24 + frmId true string 渠道ID
  25 + clientPlat true string 客户端平台[i:IOS客户端,a:Android客户端, w: 网页]
  26 + nickName true string 用户昵称
  27 + gender false string 性别,m:男、f:女、n:未知
  28 + location false string 用户所在地
  29 + faceUrl false string 头像,约100*100
  30 + */
  31 +
  32 +@property (nonatomic, copy) NSString *countryName;
  33 +@property (nonatomic, copy) NSString *countryCode;
  34 +@property (nonatomic, copy) NSString *thirdPartyPlat;
  35 +@property (nonatomic, copy) NSString *thirdPartyId;
  36 +@property (nonatomic, copy) NSString *frmId;
  37 +
  38 +@property (nonatomic, copy) NSString *nickName;
  39 +@property (nonatomic, copy) NSString *gender;
  40 +@property (nonatomic, copy) NSString *location;
  41 +@property (nonatomic, copy) NSString *faceUrl;
  42 +
  43 +@property (nonatomic, assign) CNLiveSendAuthResp type;
  44 +
  45 +@end
  46 +
  47 +NS_ASSUME_NONNULL_END
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveThreeLoginModel.m 0 → 100644
  1 +//
  2 +// CNLiveThreeLoginModel.m
  3 +// CNLiveBLoginModule
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/10.
  6 +// Copyright © 2019 cnlive. All rights reserved.
  7 +//
  8 +
  9 +#import "CNLiveThreeLoginModel.h"
  10 +
  11 +@implementation CNLiveThreeLoginModel
  12 +
  13 +- (CNLiveSendAuthResp)type{
  14 + CNLiveSendAuthResp type = CNLiveSendAuthRespWX;
  15 +
  16 + if([self.thirdPartyPlat isEqualToString:@"1"]){
  17 + type = CNLiveSendAuthRespWB;
  18 +
  19 + }else if ([self.thirdPartyPlat isEqualToString:@"2"]){
  20 + type = CNLiveSendAuthRespQQ;
  21 +
  22 + }else if([self.thirdPartyPlat isEqualToString:@"3"]){
  23 + type = CNLiveSendAuthRespWX;
  24 +
  25 + }else if([self.thirdPartyPlat isEqualToString:@"5"]){
  26 + type = CNLiveSendAuthRespApple;
  27 +
  28 + }
  29 + return type;
  30 +
  31 +}
  32 +
  33 +@end
... ...
CNLiveBLoginModule/Classes/BindingManage/CNLiveBindingManageRequest.h renamed to CNLiveBLoginModule/Classes/ThreeLogin/CNLiveThreeLoginRequest.h
1 1 //
2   -// CNLiveBindingManageRequest.h
3   -// CNLiveNetAdd
  2 +// CNLiveThreeLoginRequest.h
  3 +// CNLiveBLoginModule
4 4 //
5 5 // Created by CNLive-zxw on 2019/9/10.
6 6 // Copyright © 2019 cnlive. All rights reserved.
7 7 //
8 8  
9 9 #import <Foundation/Foundation.h>
10   -//#import "CNLiveShareImageManager.h"
  10 +#import "CNLiveShareImageManager.h"
11 11  
12 12 NS_ASSUME_NONNULL_BEGIN
13   -@class CNLiveBindingManageModel;
14   -@class CNThreeLoginModel;
  13 +@class CNLiveThreeLoginModel;
15 14  
16   -typedef void (^CNLiveBindingResponseBlock)(BOOL isSuccess, CNLiveBindingManageModel * _Nullable model, BOOL isBinding);
17   -typedef void (^CNLiveBindingArrayBlock)(NSArray * _Nullable bindingData, NSArray * _Nullable unBindingData);
18 15 typedef void (^CNLiveLoginResponseBlock)(NSURLSessionTask *requestTask, id responseObject, NSError *error);
19 16  
20   -@interface CNLiveBindingManageRequest : NSObject
21   -/**
22   - * @abstract 绑定/解除绑定
23   - *
24   - * @param model 模型
25   - * @param block 回调
26   - */
27   -+ (void)requestModel:(CNLiveBindingManageModel *)model block:(CNLiveBindingResponseBlock)block;
28   -
29   -/**
30   - * @abstract 获取绑定数据
31   - *
32   - * @param block 回调
33   - */
34   -+ (void)requestModels:(CNLiveBindingArrayBlock)block;
  17 +@interface CNLiveThreeLoginRequest : NSObject
35 18  
36 19 /**
37 20 * @abstract 三方登录
... ... @@ -40,7 +23,7 @@ typedef void (^CNLiveLoginResponseBlock)(NSURLSessionTask *requestTask, id respo
40 23 * @param model 模型
41 24 * @param block 回调
42 25 */
43   -//+ (void)thirdPartyLoginWithType:(CNLiveSendAuthResp)type model:(CNThreeLoginModel *)model block:(CNLoginResponseBlock)block;
  26 ++ (void)thirdPartyLoginWithType:(CNLiveSendAuthResp)type model:(CNLiveThreeLoginModel *)model block:(CNLiveLoginResponseBlock)block;
44 27  
45 28 @end
46 29  
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveThreeLoginRequest.m 0 → 100644
  1 +//
  2 +// CNLiveThreeLoginRequest.m
  3 +// CNLiveBLoginModule
  4 +//
  5 +// Created by CNLive-zxw on 2019/9/10.
  6 +// Copyright © 2019 cnlive. All rights reserved.
  7 +//
  8 +
  9 +#import "CNLiveThreeLoginRequest.h"
  10 +#import <CNLiveRequestBastKit/CNLiveNetworking.h>
  11 +#import "CNLiveThreeLoginModel.h"
  12 +#import "CNLiveShareImageManager.h"
  13 +
  14 +@implementation CNLiveThreeLoginRequest
  15 +
  16 +// 三方登录
  17 ++ (void)thirdPartyLoginWithType:(CNLiveSendAuthResp)type model:(CNLiveThreeLoginModel *)model block:(CNLiveLoginResponseBlock)block {
  18 + NSDictionary *params = @{@"thirdPartyPlat":model.thirdPartyPlat?model.thirdPartyPlat:@"",
  19 + @"thirdPartyId":model.thirdPartyId?model.thirdPartyId:@"",
  20 + @"frmId":model.frmId?model.frmId:@"",
  21 + @"clientPlat":@"i"};
  22 + [CNLiveNetworking setAllowRequestDefaultArgument:YES];
  23 + [CNLiveNetworking setupShowDataResult:NO];
  24 +
  25 + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNLoginIn3rdForWJJUrl Param:params CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
  26 + block?block(requestTask, responseObject, error):@"";
  27 + }];
  28 +
  29 +}
  30 +
  31 +@end
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveThreeLoginView.h
... ... @@ -7,13 +7,13 @@
7 7 //
8 8  
9 9 #import <UIKit/UIKit.h>
10   -//#import "CNLiveShareImageManager.h"
  10 +#import "CNLiveShareImageManager.h"
11 11  
12 12 NS_ASSUME_NONNULL_BEGIN
13 13  
14 14 @class CNLiveThreeLoginView;
15 15 @protocol CNLiveThreeLoginViewDelegate <NSObject>
16   -//- (void)clickedButton:(CNLiveThreeLoginView *)view type:(CNLiveSendAuthResp)type;
  16 +- (void)clickedButton:(CNLiveThreeLoginView *)view type:(CNLiveSendAuthResp)type;
17 17  
18 18 @end
19 19 @interface CNLiveThreeLoginView : UIView
... ...
CNLiveBLoginModule/Classes/ThreeLogin/CNLiveThreeLoginView.m
... ... @@ -9,106 +9,105 @@
9 9 #import "CNLiveThreeLoginView.h"
10 10 #import "YYKit.h"
11 11 #import "CNLiveCategory.h"
12   -//#import "CNLiveShareManager.h"
13   -//#import "WXApi.h"
  12 +#import "CNLiveShareImageManager.h"
  13 +#import "WXApi.h"
14 14  
15 15 @interface CNLiveThreeLoginView()
16 16  
17 17 @end
18 18 @implementation CNLiveThreeLoginView
19 19 static NSInteger const rowHeight = 60;
20   -//- (instancetype)initWithFrame:(CGRect)frame{
21   -// self = [super initWithFrame:frame];
22   -// if (self) {
23   -// [self createSubviews:frame];
24   -//
25   -// }
26   -// return self;
27   -//
28   -//}
29   -//- (void)createSubviews:(CGRect)frame{
30   -// CGFloat width = frame.size.width;
31   -// CGFloat nameWidth = width/3.0;
32   -// CGFloat lineLeft = 15;
33   -// CGFloat lineWidth = nameWidth - lineLeft*2;
34   -//
35   -// UIView *leftLine = [[UIView alloc] initWithFrame:CGRectMake(lineLeft, (rowHeight/3.0-1)/2.0, lineWidth, 1)];
36   -// leftLine.backgroundColor = [UIColor colorWithRed:173/255.0 green:173/255.0 blue:173/255.0 alpha:1.0];
37   -// [self addSubview:leftLine];
38   -//
39   -// UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(nameWidth, 0, nameWidth, rowHeight/3.0)];
40   -// name.textColor = [UIColor colorWithRed:173/255.0 green:173/255.0 blue:173/255.0 alpha:1.0];
41   -// name.font = [UIFont systemFontOfSize:14];
42   -// name.textAlignment = NSTextAlignmentCenter;
43   -// name.text = @"第三方账号登录";
44   -// [self addSubview:name];
45   -//
46   -// UILabel *rightLine = [[UILabel alloc] initWithFrame:CGRectMake(name.right+15, leftLine.top, leftLine.width, 1)];
47   -// rightLine.backgroundColor = [UIColor colorWithRed:173/255.0 green:173/255.0 blue:173/255.0 alpha:1.0];
48   -// [self addSubview:rightLine];
49   -//
50   -// NSMutableArray *pics = [NSMutableArray arrayWithArray:@[@"login_qq",@"login_weibo"]];
51   -// if([WXApi isWXAppInstalled]||[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"wechat://"]]){
52   -// [pics insertObject:@"login_wechat" atIndex:0];
53   -// }
54   -// NSUInteger number = pics.count;
55   -// if (@available(iOS 13, *)) {
56   -// [pics addObject:@"login_apple"];
57   -// number = pics.count + 1;
58   -// }
59   -// CGFloat btnWidth = width/number*1.0;
60   -//
61   -// for(int i = 0; i < pics.count; i++){
62   -// UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
63   -// btn.tag = 10000+i;
64   -// btn.frame = CGRectMake(btnWidth*i, name.bottom, btnWidth, rowHeight);
65   -// if (@available(iOS 13, *)) {
66   -// if (i == pics.count-1) {
67   -// btn.frame = CGRectMake(btnWidth*i, name.bottom, 2*btnWidth, rowHeight);
68   -// }
69   -// }
70   -// UIImage *image = [self getImageWithImageName:pics[i] bundleName:@"CNLiveBLoginModule" targetClass:[self class]];
71   -// [btn setImage:image forState:UIControlStateNormal];
72   -// btn.adjustsImageWhenHighlighted = NO;
73   -// [btn addTarget:self action:@selector(btnDidClicked:) forControlEvents:UIControlEventTouchUpInside];
74   -// [self addSubview:btn];
75   -//
76   -// }
77   -//
78   -//}
79   -//- (void)btnDidClicked:(UIButton *)btn{
80   -// if([WXApi isWXAppInstalled]||[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"wechat://"]]){
81   -// if (self.delegate && [self.delegate respondsToSelector:@selector(clickedButton:type:)]) {
82   -// if(btn.tag == 10000){
83   -// [self.delegate clickedButton:self type:CNLiveSendAuthRespWX];
84   -//
85   -// }else if (btn.tag == 10001){
86   -// [self.delegate clickedButton:self type:CNLiveSendAuthRespQQ];
87   -//
88   -// }else if(btn.tag == 10002){
89   -// [self.delegate clickedButton:self type:CNLiveSendAuthRespWB];
90   -//
91   -// }else if(btn.tag == 10003){
92   -// [self.delegate clickedButton:self type:CNLiveSendAuthRespApple];
93   -//
94   -// }
95   -// }
96   -// }else{
97   -// if (self.delegate && [self.delegate respondsToSelector:@selector(clickedButton:type:)]) {
98   -// if(btn.tag == 10000){
99   -// [self.delegate clickedButton:self type:CNLiveSendAuthRespQQ];
100   -//
101   -// }else if(btn.tag == 10001){
102   -// [self.delegate clickedButton:self type:CNLiveSendAuthRespWB];
103   -//
104   -// }else if(btn.tag == 10002){
105   -// [self.delegate clickedButton:self type:CNLiveSendAuthRespApple];
106   -//
107   -// }
108   -// }
109   -// }
110   -//
111   -//}
  20 +- (instancetype)initWithFrame:(CGRect)frame{
  21 + self = [super initWithFrame:frame];
  22 + if (self) {
  23 + [self createSubviews:frame];
  24 + }
  25 + return self;
  26 +
  27 +}
  28 +- (void)createSubviews:(CGRect)frame{
  29 + CGFloat width = frame.size.width;
  30 + CGFloat nameWidth = width/3.0;
  31 + CGFloat lineLeft = 15;
  32 + CGFloat lineWidth = nameWidth - lineLeft*2;
  33 +
  34 + UIView *leftLine = [[UIView alloc] initWithFrame:CGRectMake(lineLeft, (rowHeight/3.0-1)/2.0, lineWidth, 1)];
  35 + leftLine.backgroundColor = [UIColor colorWithRed:173/255.0 green:173/255.0 blue:173/255.0 alpha:1.0];
  36 + [self addSubview:leftLine];
  37 +
  38 + UILabel *name = [[UILabel alloc] initWithFrame:CGRectMake(nameWidth, 0, nameWidth, rowHeight/3.0)];
  39 + name.textColor = [UIColor colorWithRed:173/255.0 green:173/255.0 blue:173/255.0 alpha:1.0];
  40 + name.font = [UIFont systemFontOfSize:14];
  41 + name.textAlignment = NSTextAlignmentCenter;
  42 + name.text = @"第三方账号登录";
  43 + [self addSubview:name];
  44 +
  45 + UILabel *rightLine = [[UILabel alloc] initWithFrame:CGRectMake(name.right+15, leftLine.top, leftLine.width, 1)];
  46 + rightLine.backgroundColor = [UIColor colorWithRed:173/255.0 green:173/255.0 blue:173/255.0 alpha:1.0];
  47 + [self addSubview:rightLine];
  48 +
  49 + NSMutableArray *pics = [NSMutableArray arrayWithArray:@[@"login_qq",@"login_weibo"]];
  50 + if([WXApi isWXAppInstalled]||[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"wechat://"]]){
  51 + [pics insertObject:@"login_wechat" atIndex:0];
  52 + }
  53 + NSUInteger number = pics.count;
  54 + if (@available(iOS 13, *)) {
  55 + [pics addObject:@"login_apple"];
  56 + number = pics.count + 1;
  57 + }
  58 + CGFloat btnWidth = width/number*1.0;
  59 +
  60 + for(int i = 0; i < pics.count; i++){
  61 + UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
  62 + btn.tag = 10000+i;
  63 + btn.frame = CGRectMake(btnWidth*i, name.bottom, btnWidth, rowHeight);
  64 + if (@available(iOS 13, *)) {
  65 + if (i == pics.count-1) {
  66 + btn.frame = CGRectMake(btnWidth*i, name.bottom, 2*btnWidth, rowHeight);
  67 + }
  68 + }
  69 + UIImage *image = [self getImageWithImageName:pics[i] bundleName:@"CNLiveBLoginModule" targetClass:[self class]];
  70 + [btn setImage:image forState:UIControlStateNormal];
  71 + btn.adjustsImageWhenHighlighted = NO;
  72 + [btn addTarget:self action:@selector(btnDidClicked:) forControlEvents:UIControlEventTouchUpInside];
  73 + [self addSubview:btn];
  74 +
  75 + }
  76 +
  77 +}
  78 +- (void)btnDidClicked:(UIButton *)btn{
  79 + if([WXApi isWXAppInstalled]||[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"wechat://"]]){
  80 + if (self.delegate && [self.delegate respondsToSelector:@selector(clickedButton:type:)]) {
  81 + if(btn.tag == 10000){
  82 + [self.delegate clickedButton:self type:CNLiveSendAuthRespWX];
  83 +
  84 + }else if (btn.tag == 10001){
  85 + [self.delegate clickedButton:self type:CNLiveSendAuthRespQQ];
  86 +
  87 + }else if(btn.tag == 10002){
  88 + [self.delegate clickedButton:self type:CNLiveSendAuthRespWB];
  89 +
  90 + }else if(btn.tag == 10003){
  91 + [self.delegate clickedButton:self type:CNLiveSendAuthRespApple];
  92 +
  93 + }
  94 + }
  95 + }else{
  96 + if (self.delegate && [self.delegate respondsToSelector:@selector(clickedButton:type:)]) {
  97 + if(btn.tag == 10000){
  98 + [self.delegate clickedButton:self type:CNLiveSendAuthRespQQ];
  99 +
  100 + }else if(btn.tag == 10001){
  101 + [self.delegate clickedButton:self type:CNLiveSendAuthRespWB];
  102 +
  103 + }else if(btn.tag == 10002){
  104 + [self.delegate clickedButton:self type:CNLiveSendAuthRespApple];
  105 +
  106 + }
  107 + }
  108 + }
  109 +
  110 +}
112 111  
113 112 /*
114 113 // Only override drawRect: if you perform custom drawing.
... ...
Example/CNLiveBLoginModule.xcodeproj/project.pbxproj
... ... @@ -207,8 +207,8 @@
207 207 6003F586195388D20070C39A /* Sources */,
208 208 6003F587195388D20070C39A /* Frameworks */,
209 209 6003F588195388D20070C39A /* Resources */,
210   - BBC1C2A08E24C56EDE49DF37 /* [CP] Embed Pods Frameworks */,
211   - 15A7BE01FD10924E4F61D6AF /* [CP] Copy Pods Resources */,
  210 + 819DA7EE2304C4CDBD93DEFD /* [CP] Embed Pods Frameworks */,
  211 + D7ABAB38E741C83F2E6FB9FB /* [CP] Copy Pods Resources */,
212 212 );
213 213 buildRules = (
214 214 );
... ... @@ -299,26 +299,6 @@
299 299 /* End PBXResourcesBuildPhase section */
300 300  
301 301 /* Begin PBXShellScriptBuildPhase section */
302   - 15A7BE01FD10924E4F61D6AF /* [CP] Copy Pods Resources */ = {
303   - isa = PBXShellScriptBuildPhase;
304   - buildActionMask = 2147483647;
305   - files = (
306   - );
307   - inputPaths = (
308   - "${PODS_ROOT}/Target Support Files/Pods-CNLiveBLoginModule_Example/Pods-CNLiveBLoginModule_Example-resources.sh",
309   - "${PODS_CONFIGURATION_BUILD_DIR}/CNLiveBLoginModule/CNLiveBLoginModule.bundle",
310   - "${PODS_CONFIGURATION_BUILD_DIR}/CNLiveUserAgreementManager/CNLiveUserAgreementManager.bundle",
311   - );
312   - name = "[CP] Copy Pods Resources";
313   - outputPaths = (
314   - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/CNLiveBLoginModule.bundle",
315   - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/CNLiveUserAgreementManager.bundle",
316   - );
317   - runOnlyForDeploymentPostprocessing = 0;
318   - shellPath = /bin/sh;
319   - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CNLiveBLoginModule_Example/Pods-CNLiveBLoginModule_Example-resources.sh\"\n";
320   - showEnvVarsInLog = 0;
321   - };
322 302 6F4CF912241B66B2163C0256 /* [CP] Check Pods Manifest.lock */ = {
323 303 isa = PBXShellScriptBuildPhase;
324 304 buildActionMask = 2147483647;
... ... @@ -341,7 +321,7 @@
341 321 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
342 322 showEnvVarsInLog = 0;
343 323 };
344   - BBC1C2A08E24C56EDE49DF37 /* [CP] Embed Pods Frameworks */ = {
  324 + 819DA7EE2304C4CDBD93DEFD /* [CP] Embed Pods Frameworks */ = {
345 325 isa = PBXShellScriptBuildPhase;
346 326 buildActionMask = 2147483647;
347 327 files = (
... ... @@ -419,6 +399,30 @@
419 399 shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CNLiveBLoginModule_Example/Pods-CNLiveBLoginModule_Example-frameworks.sh\"\n";
420 400 showEnvVarsInLog = 0;
421 401 };
  402 + D7ABAB38E741C83F2E6FB9FB /* [CP] Copy Pods Resources */ = {
  403 + isa = PBXShellScriptBuildPhase;
  404 + buildActionMask = 2147483647;
  405 + files = (
  406 + );
  407 + inputPaths = (
  408 + "${PODS_ROOT}/Target Support Files/Pods-CNLiveBLoginModule_Example/Pods-CNLiveBLoginModule_Example-resources.sh",
  409 + "${PODS_CONFIGURATION_BUILD_DIR}/CNLiveBLoginModule/CNLiveBLoginModule.bundle",
  410 + "${PODS_CONFIGURATION_BUILD_DIR}/CNLiveShareToolKit/CNLiveShareToolKit.bundle",
  411 + "${PODS_CONFIGURATION_BUILD_DIR}/CNLiveUserAgreementManager/CNLiveUserAgreementManager.bundle",
  412 + "${PODS_ROOT}/WeiboSDK/libWeiboSDK/WeiboSDK.bundle",
  413 + );
  414 + name = "[CP] Copy Pods Resources";
  415 + outputPaths = (
  416 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/CNLiveBLoginModule.bundle",
  417 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/CNLiveShareToolKit.bundle",
  418 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/CNLiveUserAgreementManager.bundle",
  419 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/WeiboSDK.bundle",
  420 + );
  421 + runOnlyForDeploymentPostprocessing = 0;
  422 + shellPath = /bin/sh;
  423 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CNLiveBLoginModule_Example/Pods-CNLiveBLoginModule_Example-resources.sh\"\n";
  424 + showEnvVarsInLog = 0;
  425 + };
422 426 FB82CB4346E92958307849D9 /* [CP] Check Pods Manifest.lock */ = {
423 427 isa = PBXShellScriptBuildPhase;
424 428 buildActionMask = 2147483647;
... ... @@ -586,6 +590,7 @@
586 590 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetAdd;
587 591 PRODUCT_NAME = "$(TARGET_NAME)";
588 592 SWIFT_VERSION = 4.0;
  593 + TARGETED_DEVICE_FAMILY = 1;
589 594 WRAPPER_EXTENSION = app;
590 595 };
591 596 name = Debug;
... ... @@ -603,6 +608,7 @@
603 608 PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetAdd;
604 609 PRODUCT_NAME = "$(TARGET_NAME)";
605 610 SWIFT_VERSION = 4.0;
  611 + TARGETED_DEVICE_FAMILY = 1;
606 612 WRAPPER_EXTENSION = app;
607 613 };
608 614 name = Release;
... ...
Example/CNLiveBLoginModule/CNLIVEAppDelegate.m
... ... @@ -19,18 +19,19 @@
19 19 {
20 20 // Override point for customization after application launch.
21 21 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];//UIScreen mainScreen].bounds个人理解获取屏幕的硬件信息然后设置尺寸大小
22   - [CNLiveEnvironmentManager setAppType:CNLiveAppTypeBusiness environmentType:CNLiveProductionAppStore];
23   - [CNLiveUserSystemCenter setAppId:AppId appKey:APPKey appSecret:AppSecret isTestEnvironment:TestEnvironment];
24   - if ([CNUserShareManager isLogin]) {
25   - [CNLiveUserSystemCenter setUserId:CNUserShareModel.uid];
26   - }
27   - [self networkParamAction];
  22 + [CNLiveEnvironmentManager setAppType:CNLiveAppTypeBusiness environmentType:CNLiveProductionAppStore];
  23 + [CNLiveUserSystemCenter setAppId:AppId appKey:APPKey appSecret:AppSecret isTestEnvironment:TestEnvironment];
  24 +
  25 + if ([CNUserShareManager isLogin]) {
  26 + [CNLiveUserSystemCenter setUserId:CNUserShareModel.uid];
  27 + }
  28 + [self networkParamAction];
28 29  
29   - CNLiveLoginController *vc = [[CNLiveLoginController alloc] init];
30   - vc.isShowClose = NO;
31   - UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
32   - self.window.rootViewController = nav;//设置根视图控制器
33   - [self.window makeKeyAndVisible];//设置成为
  30 + CNLiveLoginController *vc = [[CNLiveLoginController alloc] init];
  31 + vc.isShowClose = NO;
  32 + UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
  33 + self.window.rootViewController = nav;
  34 + [self.window makeKeyAndVisible];
34 35 return YES;
35 36 }
36 37  
... ...
Example/CNLiveBLoginModule/CNLiveBLoginModule-Info.plist
... ... @@ -2,11 +2,6 @@
2 2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3 3 <plist version="1.0">
4 4 <dict>
5   - <key>NSAppTransportSecurity</key>
6   - <dict>
7   - <key>NSAllowsArbitraryLoads</key>
8   - <true/>
9   - </dict>
10 5 <key>CFBundleDevelopmentRegion</key>
11 6 <string>en</string>
12 7 <key>CFBundleDisplayName</key>
... ... @@ -25,10 +20,114 @@
25 20 <string>1.0</string>
26 21 <key>CFBundleSignature</key>
27 22 <string>????</string>
  23 + <key>CFBundleURLTypes</key>
  24 + <array>
  25 + <dict>
  26 + <key>CFBundleTypeRole</key>
  27 + <string>Editor</string>
  28 + <key>CFBundleURLName</key>
  29 + <string>微信正式</string>
  30 + <key>CFBundleURLSchemes</key>
  31 + <array>
  32 + <string>wxed528fc749b7ee88</string>
  33 + </array>
  34 + </dict>
  35 + <dict>
  36 + <key>CFBundleTypeRole</key>
  37 + <string>Editor</string>
  38 + <key>CFBundleURLName</key>
  39 + <string>QQ正式个人</string>
  40 + <key>CFBundleURLSchemes</key>
  41 + <array>
  42 + <string>tencent1106691520</string>
  43 + </array>
  44 + </dict>
  45 + <dict>
  46 + <key>CFBundleTypeRole</key>
  47 + <string>Editor</string>
  48 + <key>CFBundleURLName</key>
  49 + <string>QQ正式个人</string>
  50 + <key>CFBundleURLSchemes</key>
  51 + <array>
  52 + <string>QQ41F6C5C0</string>
  53 + </array>
  54 + </dict>
  55 + <dict>
  56 + <key>CFBundleTypeRole</key>
  57 + <string>Editor</string>
  58 + <key>CFBundleURLName</key>
  59 + <string>QQ正式企业</string>
  60 + <key>CFBundleURLSchemes</key>
  61 + <array>
  62 + <string>QQ41FF0268</string>
  63 + </array>
  64 + </dict>
  65 + <dict>
  66 + <key>CFBundleTypeRole</key>
  67 + <string>Editor</string>
  68 + <key>CFBundleURLName</key>
  69 + <string>微信测试</string>
  70 + <key>CFBundleURLSchemes</key>
  71 + <array>
  72 + <string>wx9b7f9443a8ccf15a</string>
  73 + </array>
  74 + </dict>
  75 + <dict>
  76 + <key>CFBundleTypeRole</key>
  77 + <string>Editor</string>
  78 + <key>CFBundleURLName</key>
  79 + <string>QQ测试个人</string>
  80 + <key>CFBundleURLSchemes</key>
  81 + <array>
  82 + <string>QQ41FB075B</string>
  83 + </array>
  84 + </dict>
  85 + <dict>
  86 + <key>CFBundleTypeRole</key>
  87 + <string>Editor</string>
  88 + <key>CFBundleURLName</key>
  89 + <string>QQ测试企业</string>
  90 + <key>CFBundleURLSchemes</key>
  91 + <array>
  92 + <string>QQ41FB074D</string>
  93 + </array>
  94 + </dict>
  95 + <dict>
  96 + <key>CFBundleTypeRole</key>
  97 + <string>Editor</string>
  98 + <key>CFBundleURLName</key>
  99 + <string>QQ测试企业</string>
  100 + <key>CFBundleURLSchemes</key>
  101 + <array>
  102 + <string>tencent1106970445</string>
  103 + </array>
  104 + </dict>
  105 + <dict>
  106 + <key>CFBundleTypeRole</key>
  107 + <string>Editor</string>
  108 + <key>CFBundleURLName</key>
  109 + <string>微博分享</string>
  110 + <key>CFBundleURLSchemes</key>
  111 + <array>
  112 + <string>wb3884700821</string>
  113 + </array>
  114 + </dict>
  115 + </array>
28 116 <key>CFBundleVersion</key>
29 117 <string>1.0</string>
30 118 <key>LSRequiresIPhoneOS</key>
31 119 <true/>
  120 + <key>NSAppTransportSecurity</key>
  121 + <dict>
  122 + <key>NSAllowsArbitraryLoads</key>
  123 + <true/>
  124 + </dict>
  125 + <key>NSCameraUsageDescription</key>
  126 + <string>需要允许开启相机才能在发布生活圈或聊天时使用录制视频和拍照功能</string>
  127 + <key>NSPhotoLibraryAddUsageDescription</key>
  128 + <string>需要允许打开相册才能访问相册照片和保存照片</string>
  129 + <key>NSPhotoLibraryUsageDescription</key>
  130 + <string>需要允许打开相册才能访问相册照片和保存照片</string>
32 131 <key>UILaunchStoryboardName</key>
33 132 <string>LaunchScreen</string>
34 133 <key>UIMainStoryboardFile</key>
... ...