Commit 58a060fc authored by “Icebear”'s avatar “Icebear”

添加腾讯识别文件忽略,手动添加到Podfile里,因为其中有引用文件上传不了,完成登录页验证码登录、密码登录测试、完成注册页面测试

parent 792807de
...@@ -50,6 +50,7 @@ playground.xcworkspace ...@@ -50,6 +50,7 @@ playground.xcworkspace
# #
Podfile.lock Podfile.lock
Pods/ Pods/
WBCloudReflectionFaceVerify_framework/
# #
# Add this line if you want to avoid checking in source code from the Xcode workspace # Add this line if you want to avoid checking in source code from the Xcode workspace
*.xcworkspace *.xcworkspace
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
334824EA2535AC5B00EB3141 /* NRHomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 334824E82535AC5B00EB3141 /* NRHomeViewController.xib */; }; 334824EA2535AC5B00EB3141 /* NRHomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 334824E82535AC5B00EB3141 /* NRHomeViewController.xib */; };
334824F42535AF3300EB3141 /* Target_HomeCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 334824F32535AF3300EB3141 /* Target_HomeCoordinator.m */; }; 334824F42535AF3300EB3141 /* Target_HomeCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 334824F32535AF3300EB3141 /* Target_HomeCoordinator.m */; };
334824F92535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 334824F82535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.m */; }; 334824F92535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 334824F82535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.m */; };
3348250E2536C81300EB3141 /* WXCloudManage.m in Sources */ = {isa = PBXBuildFile; fileRef = 3348250C2536C81300EB3141 /* WXCloudManage.m */; };
335609B7251B23E500628080 /* Target_LoginCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 335609B6251B23E500628080 /* Target_LoginCoordinator.m */; }; 335609B7251B23E500628080 /* Target_LoginCoordinator.m in Sources */ = {isa = PBXBuildFile; fileRef = 335609B6251B23E500628080 /* Target_LoginCoordinator.m */; };
335609EA251B4D9900628080 /* CTMediator+LoginCoordinatorActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 335609E9251B4D9900628080 /* CTMediator+LoginCoordinatorActions.m */; }; 335609EA251B4D9900628080 /* CTMediator+LoginCoordinatorActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 335609E9251B4D9900628080 /* CTMediator+LoginCoordinatorActions.m */; };
33560A01251B5AAF00628080 /* NRPasswordLoginRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33560A00251B5AAF00628080 /* NRPasswordLoginRequest.m */; }; 33560A01251B5AAF00628080 /* NRPasswordLoginRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 33560A00251B5AAF00628080 /* NRPasswordLoginRequest.m */; };
...@@ -79,6 +80,8 @@ ...@@ -79,6 +80,8 @@
334824F32535AF3300EB3141 /* Target_HomeCoordinator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Target_HomeCoordinator.m; sourceTree = "<group>"; }; 334824F32535AF3300EB3141 /* Target_HomeCoordinator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Target_HomeCoordinator.m; sourceTree = "<group>"; };
334824F72535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CTMediator+HomeCoordinatorActions.h"; sourceTree = "<group>"; }; 334824F72535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CTMediator+HomeCoordinatorActions.h"; sourceTree = "<group>"; };
334824F82535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "CTMediator+HomeCoordinatorActions.m"; sourceTree = "<group>"; }; 334824F82535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "CTMediator+HomeCoordinatorActions.m"; sourceTree = "<group>"; };
3348250C2536C81300EB3141 /* WXCloudManage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXCloudManage.m; sourceTree = "<group>"; };
3348250D2536C81300EB3141 /* WXCloudManage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXCloudManage.h; sourceTree = "<group>"; };
335609B5251B23E500628080 /* Target_LoginCoordinator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Target_LoginCoordinator.h; sourceTree = "<group>"; }; 335609B5251B23E500628080 /* Target_LoginCoordinator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Target_LoginCoordinator.h; sourceTree = "<group>"; };
335609B6251B23E500628080 /* Target_LoginCoordinator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Target_LoginCoordinator.m; sourceTree = "<group>"; }; 335609B6251B23E500628080 /* Target_LoginCoordinator.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Target_LoginCoordinator.m; sourceTree = "<group>"; };
335609E8251B4D9900628080 /* CTMediator+LoginCoordinatorActions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CTMediator+LoginCoordinatorActions.h"; sourceTree = "<group>"; }; 335609E8251B4D9900628080 /* CTMediator+LoginCoordinatorActions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CTMediator+LoginCoordinatorActions.h"; sourceTree = "<group>"; };
...@@ -195,6 +198,15 @@ ...@@ -195,6 +198,15 @@
path = Coordinator; path = Coordinator;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
3348250B2536C81300EB3141 /* WXCloudManage */ = {
isa = PBXGroup;
children = (
3348250D2536C81300EB3141 /* WXCloudManage.h */,
3348250C2536C81300EB3141 /* WXCloudManage.m */,
);
path = WXCloudManage;
sourceTree = "<group>";
};
335609B4251B23D100628080 /* Coordinator */ = { 335609B4251B23D100628080 /* Coordinator */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -335,6 +347,7 @@ ...@@ -335,6 +347,7 @@
335F6ABC251895660083A571 /* Manager */ = { 335F6ABC251895660083A571 /* Manager */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
3348250B2536C81300EB3141 /* WXCloudManage */,
334824CA25357FA400EB3141 /* NetworkManager */, 334824CA25357FA400EB3141 /* NetworkManager */,
); );
path = Manager; path = Manager;
...@@ -538,6 +551,7 @@ ...@@ -538,6 +551,7 @@
335F6A5625184A5D0083A571 /* Frameworks */, 335F6A5625184A5D0083A571 /* Frameworks */,
335F6A5725184A5D0083A571 /* Resources */, 335F6A5725184A5D0083A571 /* Resources */,
0BD46D426B97060152956B4A /* [CP] Embed Pods Frameworks */, 0BD46D426B97060152956B4A /* [CP] Embed Pods Frameworks */,
5BC835D7CBE8E9B628DED090 /* [CP] Copy Pods Resources */,
); );
buildRules = ( buildRules = (
); );
...@@ -641,6 +655,23 @@ ...@@ -641,6 +655,23 @@
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"; 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";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
5BC835D7CBE8E9B628DED090 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-NetrainFrame/Pods-NetrainFrame-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-NetrainFrame/Pods-NetrainFrame-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NetrainFrame/Pods-NetrainFrame-resources.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */
...@@ -653,6 +684,7 @@ ...@@ -653,6 +684,7 @@
33E97AED251CB37200437015 /* NSString+NRAdd.m in Sources */, 33E97AED251CB37200437015 /* NSString+NRAdd.m in Sources */,
335F6AD125189B130083A571 /* AppDelegate+AppService.m in Sources */, 335F6AD125189B130083A571 /* AppDelegate+AppService.m in Sources */,
33E979C1251CA2E100437015 /* NRLoginPublicKeyRequest.m in Sources */, 33E979C1251CA2E100437015 /* NRLoginPublicKeyRequest.m in Sources */,
3348250E2536C81300EB3141 /* WXCloudManage.m in Sources */,
33E97993251C476300437015 /* NRBaseModelAgent.m in Sources */, 33E97993251C476300437015 /* NRBaseModelAgent.m in Sources */,
335609EA251B4D9900628080 /* CTMediator+LoginCoordinatorActions.m in Sources */, 335609EA251B4D9900628080 /* CTMediator+LoginCoordinatorActions.m in Sources */,
334824F92535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.m in Sources */, 334824F92535AFB300EB3141 /* CTMediator+HomeCoordinatorActions.m in Sources */,
......
...@@ -15,6 +15,8 @@ typedef enum : NSUInteger { ...@@ -15,6 +15,8 @@ typedef enum : NSUInteger {
kHttpCode_Success = 0, kHttpCode_Success = 0,
kHttpCode_NotPublic, kHttpCode_NotPublic,
kHttpCode_OtherLogin, kHttpCode_OtherLogin,
kHttpCode_NoRegister = 30106,
kHttpCode_tencentFaceAuth = 13060108
} kHttpCode; } kHttpCode;
@interface BaseHttpModel : NSObject @interface BaseHttpModel : NSObject
......
//
// WXCloudManage.h
// ShenWeiHospital
//
// Created by zouzhisheng on 2020/5/1.
// Copyright © 2020 HC. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <WBCloudReflectionFaceVerify/WBFaceVerifyCustomerService.h>
NS_ASSUME_NONNULL_BEGIN
@interface WXCloudManage : NSObject<WBFaceVerifyCustomerServiceDelegate>
@property (nonatomic, copy) void(^cloundBlock)(WBFaceVerifyResult* result);
+(WXCloudManage*)shareWXCloudManage;
-(void)loginWXCloudWith:(NSDictionary *)cloudJSon;
@end
NS_ASSUME_NONNULL_END
//
// WXCloudManage.m
// ShenWeiHospital
//
// Created by zouzhisheng on 2020/5/1.
// Copyright © 2020 HC. All rights reserved.
//
#import "WXCloudManage.h"
static WXCloudManage *shareWXCloudManage=nil;
@implementation WXCloudManage
+(WXCloudManage*)shareWXCloudManage{
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
shareWXCloudManage = [[self alloc] init];
});
return shareWXCloudManage;
}
-(WBFaceVerifySDKConfig *)getSDKSettings{
WBFaceVerifySDKConfig *config = [WBFaceVerifySDKConfig sdkConfig];
config.recordVideo = YES;
config.theme = WBFaceVerifyThemeDarkness;
return config;
}
-(void)loginWXCloudWith:(NSDictionary *)cloudJSon{
[QMUITips hideAllTips];
[WBFaceVerifyCustomerService sharedInstance].delegate = self;
NSLog(@"openApiUserId==%@",[cloudJSon objectForKey:@"openApiUserId"]);
// QLKSubBasicData *modle = [QLKUser sharedInstance].basicData.data[0];
dispatch_async(dispatch_get_main_queue(), ^{
///TO DO 通过app启动获取到的基础配置信息,添加腾讯人脸识别ID
[[WBFaceVerifyCustomerService sharedInstance] loginInLiveCheckAndCompareWithIdImageService:[cloudJSon objectForKey:@"openApiUserId"] nonce:[cloudJSon objectForKey:@"openApiNonce"] sign:[cloudJSon objectForKey:@"openApiSign"] appid:@"" orderNo:[cloudJSon objectForKey:@"agreementNo"] apiVersion:@"1.0.0" licence:@"" faceType:WBFaceVerifyLivingType_Action faceId:[cloudJSon objectForKey:@"faceId"] sdkConfig:[self getSDKSettings] success:^{
NSLog(@"识别成功");
} failure:^(WBFaceError * _Nonnull error) {
NSLog(@"错误==%@",error);
}];
});
}
-(void)wbfaceVerifyCustomerServiceDidFinishedWithFaceVerifyResult:(WBFaceVerifyResult *)faceVerifyResult{
NSLog(@"%@",faceVerifyResult);
if (self.cloundBlock) {
self.cloundBlock(faceVerifyResult);
}
}
@end
...@@ -212,7 +212,7 @@ ...@@ -212,7 +212,7 @@
<color key="titleColor" red="0.0" green="0.60392156860000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="titleColor" red="0.0" green="0.60392156860000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state> </state>
<connections> <connections>
<segue destination="h8n-sm-Z0M" kind="push" id="9nW-H0-Bk4"/> <action selector="registerBtnClick:" destination="lEQ-vc-MoR" eventType="touchUpInside" id="W9t-dl-CSf"/>
</connections> </connections>
</button> </button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2wm-Ty-33d"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2wm-Ty-33d">
...@@ -309,11 +309,11 @@ ...@@ -309,11 +309,11 @@
<viewControllerLayoutGuide type="bottom" id="8YR-t7-0xR"/> <viewControllerLayoutGuide type="bottom" id="8YR-t7-0xR"/>
</layoutGuides> </layoutGuides>
<view key="view" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="gET-G4-phc"> <view key="view" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="gET-G4-phc">
<rect key="frame" x="0.0" y="0.0" width="414" height="842"/> <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lPh-dV-0j3" userLabel="scroll content view"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lPh-dV-0j3" userLabel="scroll content view">
<rect key="frame" x="0.0" y="0.0" width="414" height="842"/> <rect key="frame" x="0.0" y="44" width="414" height="852"/>
<subviews> <subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zEA-3t-Mru" userLabel="account view"> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="zEA-3t-Mru" userLabel="account view">
<rect key="frame" x="20" y="20" width="379" height="50"/> <rect key="frame" x="20" y="20" width="379" height="50"/>
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
- (void)loginSuccessAction; - (void)loginSuccessAction;
- (void)toRegisterAction;
@end @end
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
......
...@@ -146,12 +146,17 @@ typedef NS_ENUM(NSUInteger, UserSelectLoginMode) { ...@@ -146,12 +146,17 @@ typedef NS_ENUM(NSUInteger, UserSelectLoginMode) {
btn.selected = !btn.selected; btn.selected = !btn.selected;
self.passwdField.secureTextEntry = btn.selected ? NO : YES; self.passwdField.secureTextEntry = btn.selected ? NO : YES;
} }
- (IBAction)registerBtnClick:(id)sender {
if(self.controllerDelegate && [self.controllerDelegate respondsToSelector:@selector(toRegisterAction)]){
[self.controllerDelegate toRegisterAction];
}
}
///点击登录 ///点击登录
- (IBAction)loginBtnClick:(id)sender { - (IBAction)loginBtnClick:(id)sender {
[QMUITips showLoadingInView:self.view]; [QMUITips showLoadingInView:self.view];
if(self.loginMode == verificationLogin){ if(self.loginMode == verificationLogin){
[self.loginLogic verifyCodeLoginAction]; [self.loginLogic verifyCodeLoginWithPhoneNumber:self.phoneNumberField.text verifyCode:self.passwdField.text];
}else{ }else{
[self.loginLogic passwordLoginWithPhoneNumber:self.phoneNumberField.text password:self.passwdField.text]; [self.loginLogic passwordLoginWithPhoneNumber:self.phoneNumberField.text password:self.passwdField.text];
} }
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#import "NRCommonViewController.h" #import "NRCommonViewController.h"
@protocol NRRegisterViewControllerDelegate <NSObject> @protocol NRRegisterViewControllerDelegate <NSObject>
///注册完成登录成功
- (void)registerLoginSuccessAction;
///用户协议 ///用户协议
- (void)toUserProtocolAction; - (void)toUserProtocolAction;
///隐私政策 ///隐私政策
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#import "NRRegisterLogic.h" #import "NRRegisterLogic.h"
#import "NRCountDownButton.h" #import "NRCountDownButton.h"
@interface NRRegisterViewController ()<QMUITextFieldDelegate> @interface NRRegisterViewController ()<QMUITextFieldDelegate,NRRegisterLogicDelegate>
@property (weak, nonatomic) IBOutlet UIView *backView; @property (weak, nonatomic) IBOutlet UIView *backView;
@property (weak, nonatomic) IBOutlet QMUITextField *nameTextField;//姓名输入框 @property (weak, nonatomic) IBOutlet QMUITextField *nameTextField;//姓名输入框
...@@ -109,6 +109,29 @@ ...@@ -109,6 +109,29 @@
} }
} }
#pragma mark -- NRLoginLogicDelegate
-(void)sendMessageCompleted:(BaseHttpModel *)httpModel{
[QMUITips hideAllTips];
if(httpModel.isSucc){
[QMUITips showSucceed:httpModel.errorMsg];
[self.verificationBtn startTimer];
}else{
[QMUITips showError:httpModel.errorMsg];
}
}
-(void)requestDataCompleted:(BaseHttpModel *)httpModel{
[QMUITips hideAllTips];
if(httpModel.isSucc){
[QMUITips showSucceed:httpModel.errorMsg];
if(self.controllerDelegate && [self.controllerDelegate respondsToSelector:@selector(registerLoginSuccessAction)]){
[self.controllerDelegate registerLoginSuccessAction];
}
}else{
[QMUITips showError:httpModel.errorMsg];
}
}
#pragma mark -- IBAaction #pragma mark -- IBAaction
- (IBAction)privacyPolicyBtnAction:(id)sender {//隐私政策]; - (IBAction)privacyPolicyBtnAction:(id)sender {//隐私政策];
if(self.controllerDelegate && [self.controllerDelegate respondsToSelector:@selector(toPrivacyPolicyAction)]){ if(self.controllerDelegate && [self.controllerDelegate respondsToSelector:@selector(toPrivacyPolicyAction)]){
...@@ -145,14 +168,12 @@ ...@@ -145,14 +168,12 @@
params[@"phoneNum"] = self.phoneTextField.text; params[@"phoneNum"] = self.phoneTextField.text;
params[@"inviterCode"] = self.checkCodeTF.text; params[@"inviterCode"] = self.checkCodeTF.text;
params[@"password"] = self.passwordTextField.text; params[@"password"] = self.passwordTextField.text;
params[@"purepassword"] = self.passwordTextField.text;
params[@"regSource"] = @"0"; params[@"regSource"] = @"0";
[self.registerLogic registerRequestStepWithParams:params.copy]; [self.registerLogic registerRequestStepWithParams:params.mutableCopy];
} }
- (IBAction)getVerficationAction:(id)sender { - (IBAction)getVerficationAction:(id)sender {
[self.verificationBtn startTimer]; [self.registerLogic getVerifyCodeWithPhoneNumber:self.phoneTextField.text];
// [self.registerLogic getVerifyCodeWithPhoneNumber:self.phoneTextField.text];
} }
- (IBAction)isShowAction:(id)sender { - (IBAction)isShowAction:(id)sender {
UIButton *btn = (UIButton *)sender; UIButton *btn = (UIButton *)sender;
...@@ -184,7 +205,7 @@ ...@@ -184,7 +205,7 @@
-(NRRegisterLogic *)registerLogic{ -(NRRegisterLogic *)registerLogic{
if(!_registerLogic){ if(!_registerLogic){
_registerLogic = [[NRRegisterLogic alloc] init]; _registerLogic = [[NRRegisterLogic alloc] init];
// _registerLogic.logicDelegate = self; _registerLogic.logicDelegate = self;
} }
return _registerLogic; return _registerLogic;
} }
......
...@@ -7,11 +7,12 @@ ...@@ -7,11 +7,12 @@
#import "Target_LoginCoordinator.h" #import "Target_LoginCoordinator.h"
#import "NRLoginViewController.h" #import "NRLoginViewController.h"
#import "NRRegisterViewController.h"
#import "NRCommonNavigationViewController.h" #import "NRCommonNavigationViewController.h"
#import "CTMediator+LoginCoordinatorActions.h" #import "CTMediator+LoginCoordinatorActions.h"
#import "CTMediator+HomeCoordinatorActions.h" #import "CTMediator+HomeCoordinatorActions.h"
@interface Target_LoginCoordinator()<NRLoginViewControllerDelegate> @interface Target_LoginCoordinator()<NRLoginViewControllerDelegate,NRRegisterViewControllerDelegate>
@property(nonatomic, weak) UINavigationController *navigationController; @property(nonatomic, weak) UINavigationController *navigationController;
...@@ -23,6 +24,7 @@ ...@@ -23,6 +24,7 @@
NRLoginViewController *loginVC = [NRLoginViewController instantiateWithStoryboardName:@"NRLogin"]; NRLoginViewController *loginVC = [NRLoginViewController instantiateWithStoryboardName:@"NRLogin"];
loginVC.controllerDelegate = self; loginVC.controllerDelegate = self;
NRCommonNavigationViewController *navigationController = [[NRCommonNavigationViewController alloc] initWithRootViewController:loginVC]; NRCommonNavigationViewController *navigationController = [[NRCommonNavigationViewController alloc] initWithRootViewController:loginVC];
self.navigationController = navigationController;
return navigationController; return navigationController;
} }
...@@ -36,6 +38,22 @@ ...@@ -36,6 +38,22 @@
[[CTMediator sharedInstance] CTMediator_removeLoginCoordinator]; [[CTMediator sharedInstance] CTMediator_removeLoginCoordinator];
} }
- (void)toRegisterAction{
NRRegisterViewController *registerVC = [NRRegisterViewController instantiateWithStoryboardName:@"NRLogin"];
registerVC.controllerDelegate = self;
[self.navigationController pushViewController:registerVC animated:YES];
}
- (void)registerLoginSuccessAction{
UIWindow *window = [UIApplication sharedApplication].windows.firstObject;
UIViewController *viewController = [[CTMediator sharedInstance] CTMediator_viewControllerForHomeCoordinator];
window.rootViewController = viewController;
[window makeKeyAndVisible];
// 在Controller被回收的时候,把相关的target也回收掉
[[CTMediator sharedInstance] CTMediator_removeLoginCoordinator];
}
-(void)dealloc{ -(void)dealloc{
NSLog(@"Target_LoginCoordinator dealloc"); NSLog(@"Target_LoginCoordinator dealloc");
} }
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#import "NRVerifyCodeRequest.h" #import "NRVerifyCodeRequest.h"
#import "NRLoginKeyRequest.h" #import "NRLoginKeyRequest.h"
#import "NRLoginPublicKeyRequest.h" #import "NRLoginPublicKeyRequest.h"
#import "NRVerifyCodeLoginRequest.h"
@protocol NRLoginLogicDelegate <NSObject> @protocol NRLoginLogicDelegate <NSObject>
@optional @optional
...@@ -34,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -34,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)getVerifyCodeWithPhoneNumber:(NSString *)phoneNumber; - (void)getVerifyCodeWithPhoneNumber:(NSString *)phoneNumber;
- (void)verifyCodeLoginAction; - (void)verifyCodeLoginWithPhoneNumber:(NSString *)phoneNumber verifyCode:(NSString *)verifyCode;
- (void)passwordLoginWithPhoneNumber:(NSString *)phoneNumber password:(NSString *)password; - (void)passwordLoginWithPhoneNumber:(NSString *)phoneNumber password:(NSString *)password;
......
...@@ -7,6 +7,15 @@ ...@@ -7,6 +7,15 @@
#import "NRLoginLogic.h" #import "NRLoginLogic.h"
#import "NRUserModel.h" #import "NRUserModel.h"
#import "WXCloudManage.h"
@interface NRLoginLogic()
@property(nonatomic, copy) NSString *phoneNumer;
@property(nonatomic, copy) NSString *password;
@property(nonatomic, copy) NSString *verifyCode;
@end
@implementation NRLoginLogic @implementation NRLoginLogic
...@@ -39,11 +48,41 @@ ...@@ -39,11 +48,41 @@
}]; }];
} }
- (void)verifyCodeLoginAction{ - (void)verifyCodeLoginWithPhoneNumber:(NSString *)phoneNumber verifyCode:(NSString *)verifyCode{
self.phoneNumer = phoneNumber;
self.verifyCode = verifyCode;
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
NRVerifyCodeLoginRequest *verifyLoginRequest = [[NRVerifyCodeLoginRequest alloc] init];
NSString *deviceIdentifier = [UIDevice deviceIdentifier];
if (!deviceIdentifier.isNotBlank) {
deviceIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
}
if(deviceIdentifier.isNotBlank){
[params setObject:deviceIdentifier forKey:@"deviceSN"];
}
params[@"phoneNum"] = phoneNumber;
params[@"verifyCode"] = verifyCode;
verifyLoginRequest.params = params;
[verifyLoginRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) {
if(!error){
[verifyLoginRequest saveModel];
if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
[self.logicDelegate requestDataCompleted:request.httpModel];
}
}else if(request.httpModel.code == kHttpCode_tencentFaceAuth){
[self wbcloudFaceAuthAction:params requset:request isPasswordLogin:NO];
}else{
if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
[self.logicDelegate requestDataCompleted:request.httpModel];
}
}
}];
} }
- (void)passwordLoginWithPhoneNumber:(NSString *)phoneNumber password:(NSString *)password{ - (void)passwordLoginWithPhoneNumber:(NSString *)phoneNumber password:(NSString *)password{
self.phoneNumer = phoneNumber;
self.password = password;
NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
NRLoginKeyRequest *loginKeyRequest = [[NRLoginKeyRequest alloc] init]; NRLoginKeyRequest *loginKeyRequest = [[NRLoginKeyRequest alloc] init];
loginKeyRequest.phoneNumber = phoneNumber; loginKeyRequest.phoneNumber = phoneNumber;
...@@ -101,12 +140,40 @@ ...@@ -101,12 +140,40 @@
[pwdLoginRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) { [pwdLoginRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) {
if(!error){ if(!error){
[pwdLoginRequest saveModel]; [pwdLoginRequest saveModel];
if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
[self.logicDelegate requestDataCompleted:request.httpModel];
}
///TO DO 当deviceFlag == 0时,说明退出过程中有其他人登录该账号,该设备的记录将被清除 ///TO DO 当deviceFlag == 0时,说明退出过程中有其他人登录该账号,该设备的记录将被清除
}else if(request.httpModel.code == kHttpCode_tencentFaceAuth){
[self wbcloudFaceAuthAction:params requset:request isPasswordLogin:YES];
}else{
if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
[self.logicDelegate requestDataCompleted:request.httpModel];
}
} }
if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
[self.logicDelegate requestDataCompleted:request.httpModel]; }];
}
- (void)wbcloudFaceAuthAction:(NSDictionary *)params requset:(NRBaseRequest *)request isPasswordLogin:(BOOL)isPasswordLogin{
[[WXCloudManage shareWXCloudManage] loginWXCloudWith:params];
[[WXCloudManage shareWXCloudManage] setCloundBlock:^(WBFaceVerifyResult *result) {
if (result.isSuccess) {
if(isPasswordLogin){
[self passwordLoginWithPhoneNumber:self.phoneNumer password:self.password];
}else{
[self verifyCodeLoginWithPhoneNumber:self.phoneNumer verifyCode:self.verifyCode];
}
}else{
request.httpModel.code = kHttpCode_NotPublic;
request.httpModel.msg = result.description;
if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
[self.logicDelegate requestDataCompleted:request.httpModel];
}
} }
}]; }];
} }
@end @end
...@@ -18,6 +18,10 @@ ...@@ -18,6 +18,10 @@
@protocol NRRegisterLogicDelegate <NSObject> @protocol NRRegisterLogicDelegate <NSObject>
@optional @optional
/**
发送短信
*/
-(void)sendMessageCompleted:(BaseHttpModel *_Nullable)httpModel;
/** /**
数据加载完成 数据加载完成
*/ */
......
...@@ -7,6 +7,11 @@ ...@@ -7,6 +7,11 @@
#import "NRRegisterLogic.h" #import "NRRegisterLogic.h"
@interface NRRegisterLogic()
@property(nonatomic, copy) NSString *password;
@end
@implementation NRRegisterLogic @implementation NRRegisterLogic
...@@ -17,9 +22,9 @@ ...@@ -17,9 +22,9 @@
NSString *tvalue = [servertimeRequest.httpModel.data objectAtIndex:0]; NSString *tvalue = [servertimeRequest.httpModel.data objectAtIndex:0];
[self sendVerifyCodeRequest:tvalue phoneNumber:phoneNumber]; [self sendVerifyCodeRequest:tvalue phoneNumber:phoneNumber];
}else{ }else{
// if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) { if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(sendMessageCompleted:)]) {
// [self.logicDelegate requestDataCompleted:request.httpModel]; [self.logicDelegate sendMessageCompleted:request.httpModel];
// } }
} }
}]; }];
} }
...@@ -33,13 +38,14 @@ ...@@ -33,13 +38,14 @@
if (!error) { if (!error) {
} }
// if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) { if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(sendMessageCompleted:)]) {
// [self.logicDelegate requestDataCompleted:request.httpModel]; [self.logicDelegate sendMessageCompleted:request.httpModel];
// } }
}]; }];
} }
///注册
- (void)registerRequestStepWithParams:(NSMutableDictionary *)params{ - (void)registerRequestStepWithParams:(NSMutableDictionary *)params{
self.password = params[@"password"];
///检查验证码 ///检查验证码
NRRegisterCheckVerifyCodeRequest *checkVerifyCodeRequest = [[NRRegisterCheckVerifyCodeRequest alloc] init]; NRRegisterCheckVerifyCodeRequest *checkVerifyCodeRequest = [[NRRegisterCheckVerifyCodeRequest alloc] init];
checkVerifyCodeRequest.phoneNumber = params[@"phoneNum"]; checkVerifyCodeRequest.phoneNumber = params[@"phoneNum"];
...@@ -48,6 +54,10 @@ ...@@ -48,6 +54,10 @@
[checkVerifyCodeRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) { [checkVerifyCodeRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) {
if (!error) { if (!error) {
[self getRegisterPublicKeyRequest:params]; [self getRegisterPublicKeyRequest:params];
}else{
if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
[self.logicDelegate requestDataCompleted:request.httpModel];
}
} }
}]; }];
} }
...@@ -62,12 +72,12 @@ ...@@ -62,12 +72,12 @@
if(!publicKey.isNotBlank){ if(!publicKey.isNotBlank){
return ; return ;
} }
[params setObject:publicKey forKey:@"password"]; params[@"password"] = publicKey;
[self registerActionRequest:params]; [self registerActionRequest:params];
}else{ }else{
// if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) { if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
// [self.logicDelegate requestDataCompleted:request.httpModel]; [self.logicDelegate requestDataCompleted:request.httpModel];
// } }
} }
}]; }];
} }
...@@ -78,11 +88,12 @@ ...@@ -78,11 +88,12 @@
registerRequest.params = params; registerRequest.params = params;
[registerRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) { [registerRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) {
if(!error){ if(!error){
[self passwordLoginWithPhoneNumber:params[@"phoneNum"] password:params[@"purepassword"]]; [self passwordLoginWithPhoneNumber:params[@"phoneNum"] password:self.password];
}else{
if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
[self.logicDelegate requestDataCompleted:request.httpModel];
}
} }
// if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
// [self.logicDelegate requestDataCompleted:request.httpModel];
// }
}]; }];
} }
...@@ -93,15 +104,15 @@ ...@@ -93,15 +104,15 @@
[loginKeyRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) { [loginKeyRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) {
if(!error){ if(!error){
NSDictionary *loginKeyDict = [loginKeyRequest.httpModel.data objectAtIndex:0]; NSDictionary *loginKeyDict = [loginKeyRequest.httpModel.data objectAtIndex:0];
[params setObject:[loginKeyDict objectForKey:@"loginKey"] forKey:@"loginKey"]; params[@"loginKey"] = [loginKeyDict objectForKey:@"loginKey"];
[params setObject:[loginKeyDict objectForKey:@"loginId"] forKey:@"loginId"]; params[@"loginId"] = [loginKeyDict objectForKey:@"loginId"];
[params setObject:phoneNumber forKey:@"phoneNum"]; params[@"phoneNum"] = phoneNumber;
[params setObject:password forKey:@"password"]; params[@"password"] = password;
[self getLoginPublicKeyRequest:params]; [self getLoginPublicKeyRequest:params];
}else{ }else{
// if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) { if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
// [self.logicDelegate requestDataCompleted:request.httpModel]; [self.logicDelegate requestDataCompleted:request.httpModel];
// } }
} }
}]; }];
} }
...@@ -116,17 +127,17 @@ ...@@ -116,17 +127,17 @@
if(!publicKey.isNotBlank){ if(!publicKey.isNotBlank){
request.httpModel.code = kHttpCode_NotPublic; request.httpModel.code = kHttpCode_NotPublic;
request.httpModel.msg = @"登录失败,请重新登录"; request.httpModel.msg = @"登录失败,请重新登录";
// if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) { if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
// [self.logicDelegate requestDataCompleted:request.httpModel]; [self.logicDelegate requestDataCompleted:request.httpModel];
// } }
return ; return ;
} }
[params setObject:publicKey forKey:@"password"]; params[@"password"] = publicKey;
[self passwordLoginRequest:params]; [self passwordLoginRequest:params];
}else{ }else{
// if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) { if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
// [self.logicDelegate requestDataCompleted:request.httpModel]; [self.logicDelegate requestDataCompleted:request.httpModel];
// } }
} }
}]; }];
} }
...@@ -138,17 +149,16 @@ ...@@ -138,17 +149,16 @@
deviceIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; deviceIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
} }
if(deviceIdentifier.isNotBlank){ if(deviceIdentifier.isNotBlank){
[params setObject:deviceIdentifier forKey:@"deviceSN"]; params[@"deviceSN"] = deviceIdentifier;
} }
pwdLoginRequest.params = params; pwdLoginRequest.params = params;
[pwdLoginRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) { [pwdLoginRequest startWithCompletionBlock:^(NRBaseRequest * _Nonnull request, NSString * _Nonnull error) {
if(!error){ if(!error){
[pwdLoginRequest saveModel]; [pwdLoginRequest saveModel];
///TO DO 退出过程中有其他人登录该账号,该设备的记录将被清除
} }
// if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) { if (self.logicDelegate && [self.logicDelegate respondsToSelector:@selector(requestDataCompleted:)]) {
// [self.logicDelegate requestDataCompleted:request.httpModel]; [self.logicDelegate requestDataCompleted:request.httpModel];
// } }
}]; }];
} }
......
...@@ -11,6 +11,10 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -11,6 +11,10 @@ NS_ASSUME_NONNULL_BEGIN
@interface NRVerifyCodeLoginRequest : NRBaseRequest @interface NRVerifyCodeLoginRequest : NRBaseRequest
@property(copy, nonatomic) NSDictionary *params;
-(void)saveModel;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
// //
#import "NRVerifyCodeLoginRequest.h" #import "NRVerifyCodeLoginRequest.h"
#import "NRUserModel.h"
@implementation NRVerifyCodeLoginRequest @implementation NRVerifyCodeLoginRequest
...@@ -14,6 +15,16 @@ ...@@ -14,6 +15,16 @@
} }
-(id)requestArgument{ -(id)requestArgument{
return @{}; return self.params;
}
-(void)saveModel{
NSArray *arr = [[NRBaseModelAgent agent] createModel:NRUserModel.class fromJson:self.httpModel.data];
NRUserModel *userModel = [arr objectAtIndex:0];
if(!userModel.status){
userModel.status = @"4";
}
userModel.phoneNum = [self.params objectForKey:@"phoneNum"];
[[NRBaseModelAgent agent] writeModel:userModel];
} }
@end @end
...@@ -44,5 +44,7 @@ ...@@ -44,5 +44,7 @@
<key>NSAllowsArbitraryLoads</key> <key>NSAllowsArbitraryLoads</key>
<true/> <true/>
</dict> </dict>
<key>NSCameraUsageDescription</key>
<string>APP需要您的同意,才能访问相机,以便于上传照片信息</string>
</dict> </dict>
</plist> </plist>
...@@ -14,6 +14,8 @@ pod 'QMUIKit','4.2.0' ...@@ -14,6 +14,8 @@ pod 'QMUIKit','4.2.0'
pod "CTMediator",'44' pod "CTMediator",'44'
pod 'YYCategories','1.0.4' pod 'YYCategories','1.0.4'
pod 'RSA', '1.0.1' pod 'RSA', '1.0.1'
pod WBCloudReflectionFaceVerify_framework, :path=> ./WBCloudReflectionFaceVerify_framework
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment