Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
VirtualCard-iOS
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
APP
VirtualCard-iOS
Commits
3cff0867
Commit
3cff0867
authored
May 19, 2020
by
IOS-张 博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改token限制,并修改保存图片逻辑
parent
959db4c5
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
57 additions
and
186 deletions
+57
-186
AppDelegate.m
VirtualPayment/VirtualPayment/Application/AppDelegate.m
+4
-24
QGDefaultLaunchViewController.m
...ot/Function/DefaultLaunch/QGDefaultLaunchViewController.m
+26
-26
MagnifyImageView.m
...nt/QGUtils/QGCommonUI/MagnifyImageView/MagnifyImageView.m
+18
-11
SystemManager.h
VirtualPayment/VirtualPayment/QGUtils/QGTool/SystemManager.h
+1
-2
SystemManager.m
VirtualPayment/VirtualPayment/QGUtils/QGTool/SystemManager.m
+8
-123
No files found.
VirtualPayment/VirtualPayment/Application/AppDelegate.m
View file @
3cff0867
...
...
@@ -46,38 +46,18 @@
//1.创建Window
self
.
window
=
[[
UIWindow
alloc
]
initWithFrame
:[[
UIScreen
mainScreen
]
bounds
]];
self
.
window
.
backgroundColor
=
[
UIColor
whiteColor
];
QGDefaultLaunchViewController
*
defaultVC
=
[[
QGDefaultLaunchViewController
alloc
]
init
];
self
.
window
.
rootViewController
=
defaultVC
;
@weakify
(
self
);
defaultVC
.
continueBlock
=
^
{
@strongify
(
self
);
NSLog
(
@"______自由的飞翔"
);
[
self
refreshTokenFinishWithOptions
:
launchOptions
];
};
[
self
refreshTokenFinishWithOptions
:
launchOptions
];
//2.设置Window为主窗口并显示出来
[
self
.
window
makeKeyAndVisible
];
/*
//不管成功失败,继续回调
@weakify(self);
[[SystemManager shareInstance] refreshTokenWithResult:^(BOOL isSuccess, NSString *token) {
@strongify(self);
NSLog(@"[Message]----- Token:%@",token);
[self refreshTokenFinishWithOptions:launchOptions];
}];
*/
return
YES
;
}
/// 刷新token接口是最大的接口,优先请求
-
(
void
)
refreshTokenFinishWithOptions
:(
NSDictionary
*
)
launchOptions
{
//刷新token
[[
SystemManager
shareInstance
]
refreshTokenWithSuccess
:
nil
failure
:
nil
];
QGRootTabbarController
*
tabbar
=
[[
QGRootTabbarController
alloc
]
init
];
self
.
window
.
rootViewController
=
tabbar
;
//友盟统计
...
...
VirtualPayment/VirtualPayment/QGClasses/MainRoot/Function/DefaultLaunch/QGDefaultLaunchViewController.m
View file @
3cff0867
...
...
@@ -81,32 +81,32 @@
[
QGHUDManager
showHud
:
nil
];
}
@weakify
(
self
);
[[
SystemManager
shareInstance
]
refreshTokenWithTimeoutInterval
:
timeoutInterval
Success
:
^
(
BOOL
isSuccess
,
NSString
*
token
)
{
@strongify
(
self
);
//隐藏loading
if
(
self
.
requestCount
>
1
)
{
[
QGHUDManager
hideHud
];
}
//请求成功,并且是0000
//皆大欢喜,直接执行成功回调,正常显示页面
if
(
isSuccess
)
{
if
(
self
.
continueBlock
)
{
self
.
continueBlock
();
}
}
else
{
[
self
refreshTokenRequestFail
];
}
}
failure
:^
(
NSError
*
error
)
{
@strongify
(
self
);
//隐藏loading
if
(
self
.
requestCount
>
1
)
{
[
QGHUDManager
hideHud
];
}
[
self
refreshTokenRequestFail
];
}];
//
[[SystemManager shareInstance] refreshTokenWithTimeoutInterval:timeoutInterval Success:^(BOOL isSuccess, NSString *token) {
//
@strongify(self);
//
//隐藏loading
//
if (self.requestCount > 1) {
//
[QGHUDManager hideHud];
//
}
//
//请求成功,并且是0000
//
//皆大欢喜,直接执行成功回调,正常显示页面
//
if (isSuccess) {
//
if (self.continueBlock) {
//
self.continueBlock();
//
}
//
}
//
else
//
{
//
[self refreshTokenRequestFail];
//
}
//
} failure:^(NSError *error) {
//
@strongify(self);
//
//隐藏loading
//
if (self.requestCount > 1) {
//
[QGHUDManager hideHud];
//
}
//
//
[self refreshTokenRequestFail];
//
}];
}
///没有获取到token
...
...
VirtualPayment/VirtualPayment/QGUtils/QGCommonUI/MagnifyImageView/MagnifyImageView.m
View file @
3cff0867
...
...
@@ -14,6 +14,7 @@
#import "SystemManager.h"
#import "QGBasicUITool.h"
#import "QGAlertView.h"
#import "QGActionSheetView.h"
#import <Photos/Photos.h>
@interface
MagnifyImageView
()
<
UIScrollViewDelegate
>
...
...
@@ -65,24 +66,16 @@
self
.
scrollView
.
clipsToBounds
=
NO
;
[
self
addSubview
:
self
.
scrollView
];
//下载图片按钮
UIButton
*
saveImgButton
=
[
UIButton
creatButtonWithSuperView
:
self
title
:
nil
titleFont
:
nil
textColor
:
nil
];
[
saveImgButton
mas_makeConstraints
:
^
(
MASConstraintMaker
*
make
)
{
make
.
right
.
inset
(
10
);
make
.
size
.
mas_equalTo
(
CGSizeMake
(
50
,
50
));
make
.
bottom
.
inset
(
70
);
}];
saveImgButton
.
backgroundColor
=
[
UIColor
redColor
];
[
saveImgButton
addTarget
:
self
action
:
@selector
(
saveImgButtonClick
)
forControlEvents
:
UIControlEventTouchUpInside
];
// add image views
__weak
typeof
(
self
)
weakSelf
=
self
;
for
(
NSInteger
i
=
0
;
i
<
images
.
count
;
i
++
)
{
DMOScalingImageView
*
scalingImageView
=
[[
DMOScalingImageView
alloc
]
initWithFrame
:
CGRectMake
(
ScreenWidth
*
i
,
0
,
ScreenWidth
,
ScreenHeight
)];
scalingImageView
.
imageURL
=
[
NSURL
URLWithString
:
images
[
i
]];
@weakify
(
self
);
scalingImageView
.
longPressHandler
=
^
(
UIImage
*
image
)
{
@strongify
(
self
);
[
self
showSheetView
];
};
scalingImageView
.
tapGestureHandler
=
^
(
DMOScalingImageView
*
scalingImageView
)
{
[
weakSelf
tapGestureHandlerWithScalingImageView
:
scalingImageView
];
...
...
@@ -191,6 +184,20 @@
}
///显示图片保存选项
-
(
void
)
showSheetView
{
@weakify
(
self
);
QGActionSheetView
*
sheetView
=
[[
QGActionSheetView
alloc
]
initWithTitle
:
nil
options
:@[@[
@"保存图片"
],@[
@"取消"
]]
clickBlock
:^
(
NSInteger
index
)
{
@strongify
(
self
);
if
(
index
==
1
)
{
[
self
saveImgButtonClick
];
}
}];
[
sheetView
showInView
:
nil
];
}
/// 保存图片到本地
-
(
void
)
saveImgButtonClick
{
...
...
VirtualPayment/VirtualPayment/QGUtils/QGTool/SystemManager.h
View file @
3cff0867
...
...
@@ -34,12 +34,11 @@
/// 刷新token接口,内部判断登录状态下每日调用一次接口
/// @param timeoutInterval 超时时间,外部设置
/// @param successBlock 成功回调
/// isSuccess = YES 请求成功并且业务处理成功,token可用 场景:当日已经刷新过 | 首次刷新成功时调用(状态码为0000)
/// isSuccess = NO 请求成功业务处理失败,token不可用 场景:状态码非0000
/// @param failureBlock 网络请求失败回调
-
(
void
)
refreshTokenWith
TimeoutInterval
:(
NSTimeInterval
)
timeoutInterval
Success
:(
void
(
^
)(
BOOL
isSuccess
,
NSString
*
token
))
successBlock
failure
:(
void
(
^
)(
NSError
*
error
))
failureBlock
;
-
(
void
)
refreshTokenWithSuccess
:(
void
(
^
)(
BOOL
isSuccess
,
NSString
*
token
))
successBlock
failure
:(
void
(
^
)(
NSError
*
error
))
failureBlock
;
/// 检查升级
...
...
VirtualPayment/VirtualPayment/QGUtils/QGTool/SystemManager.m
View file @
3cff0867
...
...
@@ -22,8 +22,7 @@
#import "DeveloperFileManager.h"
#import "QGAnalyticsService.h"
///刷新token的日期
#define VCCRefreshTokenDate @"VCCRefreshTokenDate"
///上次推荐更新提示的日期
#define VCCLastUpdateHintDate @"VCCLastUpdateHintDate"
...
...
@@ -45,21 +44,11 @@ static SystemManager * shareManager = nil;
static
dispatch_once_t
onceToken
;
dispatch_once
(
&
onceToken
,
^
{
shareManager
=
[[
SystemManager
alloc
]
init
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
shareManager
selector
:
@selector
(
reloadRefreshTokenDate
)
name
:
ModelCenterUserLoginNotification
object
:
nil
];
});
return
shareManager
;
}
///登录后,记录今天已经刷新过
-
(
void
)
reloadRefreshTokenDate
{
NSDate
*
todayDate
=
[
NSDate
date
];
//每日一次
NSString
*
todayStr
=
[[
QGCalendarManager
shareInstance
]
getStringFromDate
:
todayDate
formatter
:
@"yyyyMMdd"
];
//记录日期
[[
QGCacheManager
shareCacheManager
]
setUserConfigInfoValue
:
todayStr
forKey
:
VCCRefreshTokenDate
];
}
...
...
@@ -67,13 +56,12 @@ static SystemManager * shareManager = nil;
#pragma mark -
/*************************/
/// 刷新token接口,内部判断登录状态下每日调用一次接口
/// @param timeoutInterval 超时时间,外部设置
/// 刷新token接口,启动时调用
/// @param successBlock 成功回调
/// isSuccess = YES 请求成功并且业务处理成功,token可用 场景:
当日已经刷新过 | 首次
刷新成功时调用(状态码为0000)
/// isSuccess = YES 请求成功并且业务处理成功,token可用 场景:刷新成功时调用(状态码为0000)
/// isSuccess = NO 请求成功业务处理失败,token不可用 场景:状态码非0000
/// @param failureBlock 网络请求失败回调
-
(
void
)
refreshTokenWith
TimeoutInterval
:(
NSTimeInterval
)
timeoutInterval
Success
:(
void
(
^
)(
BOOL
isSuccess
,
NSString
*
token
))
successBlock
failure
:(
void
(
^
)(
NSError
*
error
))
failureBlock
-
(
void
)
refreshTokenWithSuccess
:(
void
(
^
)(
BOOL
isSuccess
,
NSString
*
token
))
successBlock
failure
:(
void
(
^
)(
NSError
*
error
))
failureBlock
{
//未登陆直接返回
if
(
!
[
QGUserInfo
sharedUserInfo
].
isLogin
)
{
...
...
@@ -83,26 +71,12 @@ static SystemManager * shareManager = nil;
return
;
}
//首先检测今日是否已经触发过
NSDate
*
todayDate
=
[
NSDate
date
];
//每日一次
NSString
*
todayStr
=
[[
QGCalendarManager
shareInstance
]
getStringFromDate
:
todayDate
formatter
:
@"yyyyMMdd"
];
NSString
*
refreshDate
=
[[
QGCacheManager
shareCacheManager
]
userConfigInfoValueForKey
:
VCCRefreshTokenDate
];
//本地有存储数据,并且日期与今天一致,说明今天已经请求过了,今日不再请求
if
(
!
[
NSString
isEmpty
:
refreshDate
]
&&
[
refreshDate
isEqualToString
:
todayStr
])
{
//成功回调
if
(
successBlock
)
{
successBlock
(
YES
,
[
QGUserInfo
sharedUserInfo
].
token
);
}
return
;
}
//进入请求流程
NSString
*
urlString
=
[
QGLoginRequestApi
urlWithQGLoginRequestServerMethod
:
QGLoginRequestServerMethodAuthRefreshToken
];
NSMutableDictionary
*
headerParam
=
[
NSMutableDictionary
dictionary
];
[
headerParam
setObject
:[
QGUserInfo
sharedUserInfo
].
vccRefreshToken
forKey
:
@"vcc-refresh-token"
];
[[
QGTalosNetwork
shareManager
]
sendBaseRequestWithUrlString
:
urlString
headers
:
headerParam
timeoutInterval
:
timeoutInterval
opt
:
BASE_OPT_GET
parameters
:
nil
success
:^
(
id
_Nonnull
responseObject
)
{
[[
QGTalosNetwork
shareManager
]
GET
:
urlString
headers
:
headerParam
parameters
:
nil
success
:^
(
id
_Nonnull
responseObject
)
{
if
([
QGBaseNetwork
checkBusinessCodeAndCodeWithResponseObjectObject
:
responseObject
])
{
NSDictionary
*
dataDic
=
responseObject
[
@"data"
];
[
QGUserInfo
sharedUserInfo
].
token
=
dataDic
[
@"token"
];
...
...
@@ -111,8 +85,7 @@ static SystemManager * shareManager = nil;
[
QGUserInfo
sharedUserInfo
].
userId
=
[
NSString
stringWithFormat
:
@"%@"
,
dataDic
[
@"userId"
]];;
[
QGUserInfo
sharedUserInfo
].
userName
=
dataDic
[
@"phoneNo"
];
//记录日期
[[
QGCacheManager
shareCacheManager
]
setUserConfigInfoValue
:
todayStr
forKey
:
VCCRefreshTokenDate
];
[[
NSNotificationCenter
defaultCenter
]
postNotificationName
:
ModelCenterUserRefreshToken
object
:
nil
];
//添加刷新token成功
...
...
@@ -134,6 +107,8 @@ static SystemManager * shareManager = nil;
if
(
successBlock
)
{
successBlock
(
NO
,
nil
);
}
[
QGUserInfo
logOut
];
}
}
failure
:^
(
NSURLSessionDataTask
*
_Nonnull
task
,
NSError
*
_Nonnull
error
)
{
//添加刷新token失败埋点
...
...
@@ -145,97 +120,7 @@ static SystemManager * shareManager = nil;
failureBlock
(
error
);
}
}];
}
/*
/// 刷新token接口,登录状态下每日一次 限时1s
/// @param resultBlock 结果回调
/// isSuccess = YES 处理成功,token可用 场景:当日已经刷新过 | 首次刷新成功时调用
/// isSuccess = NO 处理失败,清除登录状态 场景:请求时长超过1s | 请求失败 | 未登陆
- (void)refreshTokenWithResult:(void(^)(BOOL isSuccess, NSString * token))resultBlock
{
//已登录
if ([QGUserInfo sharedUserInfo].isLogin) {
//首先检测今日是否已经触发过
//遗留问题:应用杀死时,didFinishLaunchingWithOptions会被再次调用
NSDate * todayDate = [NSDate date];
//每日一次
NSString * todayStr = [[QGCalendarManager shareInstance] getStringFromDate:todayDate formatter:@"yyyyMMdd"];
NSString * refreshDate = [[QGCacheManager shareCacheManager] userConfigInfoValueForKey:VCCRefreshTokenDate];
//本地有存储数据,并且日期与今天一致,说明今天已经请求过了,今日不再请求
if (![NSString isEmpty:refreshDate] && [refreshDate isEqualToString:todayStr]) {
//成功回调
if (resultBlock) {
resultBlock(YES, [QGUserInfo sharedUserInfo].token);
}
return;
}
//进入请求流程
NSString * urlString = [QGLoginRequestApi urlWithQGLoginRequestServerMethod:QGLoginRequestServerMethodAuthRefreshToken];
NSMutableDictionary * headerParam = [NSMutableDictionary dictionary];
[headerParam setObject:[QGUserInfo sharedUserInfo].vccRefreshToken forKey:@"vcc-refresh-token"];
[[QGTalosNetwork shareManager] sendBaseRequestWithUrlString:urlString headers:headerParam timeoutInterval:5 opt:BASE_OPT_GET parameters:nil success:^(id _Nonnull responseObject) {
if ([QGBaseNetwork checkBusinessCodeAndCodeWithResponseObjectObject:responseObject]) {
NSDictionary * dataDic = responseObject[@"data"];
[QGUserInfo sharedUserInfo].token = dataDic[@"token"];
[QGUserInfo sharedUserInfo].vccRefreshToken = dataDic[@"vccRefreshToken"];
[QGUserInfo sharedUserInfo].uuid = dataDic[@"uuid"];
[QGUserInfo sharedUserInfo].userName = dataDic[@"phoneNo"];
//成功回调
if (resultBlock) {
resultBlock(YES, [QGUserInfo sharedUserInfo].token);
}
//记录日期
[[QGCacheManager shareCacheManager] setUserConfigInfoValue:todayStr forKey:VCCRefreshTokenDate];
[[NSNotificationCenter defaultCenter] postNotificationName:ModelCenterUserRefreshToken object:nil];
//添加刷新token成功
QGAppBusinessStateEvent * event = [QGAppBusinessStateEvent abseEventWithPage:@"APP启动" action:@"刷新token" value:@"success" code:nil desc:nil phone:[QGUserInfo sharedUserInfo].userName];
[QGAnalyticsService analyticsTrackWithEvent:event];
}
else
{
//添加刷新token失败埋点
QGAppBusinessStateEvent * event = [QGAppBusinessStateEvent abseEventWithPage:@"APP启动" action:@"刷新token" value:@"failed" code:responseObject[@"code"] desc:responseObject[@"msg"] phone:[QGUserInfo sharedUserInfo].userName];
[QGAnalyticsService analyticsTrackWithEvent:event];
//业务异常,退出登录
[QGUserInfo logOut];
//失败回调
if (resultBlock) {
resultBlock(NO, nil);
}
}
} failure:^(NSURLSessionDataTask * _Nonnull task, NSError * _Nonnull error) {
//添加刷新token失败埋点
QGAppBusinessStateEvent * event = [QGAppBusinessStateEvent abseEventWithPage:@"APP启动" action:@"刷新token" value:@"failed" code:nil desc:nil phone:[QGUserInfo sharedUserInfo].userName];
[QGAnalyticsService analyticsTrackWithEvent:event];
//请求失败,退出登录
[QGUserInfo logOut];
//失败回调
if (resultBlock) {
resultBlock(NO, nil);
}
}];
}
//未登录,处理回调
else
{
if (resultBlock) {
resultBlock(NO, nil);
}
}
}
*/
#pragma mark - 检查升级
/// 检查升级
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment