增加ShareView&TTPopup

This commit is contained in:
zu
2021-09-23 18:10:20 +08:00
parent 0a3fb5e26e
commit 7bad0b77a5
62 changed files with 2460 additions and 58 deletions

View File

@@ -11,6 +11,9 @@
#import "ApiHost.h"
#import "YYUtility.h"
#import "HttpRequestHelper.h"
#import "XCShareView.h"
#import "TTPopup.h"
#import "XPMacro.h"
#import <Masonry/Masonry.h>
#import <MJExtension/MJExtension.h>
#import <RPSDK/RPSDK.h>
@@ -44,7 +47,7 @@
@end
@interface XPWebViewController () <WKNavigationDelegate, WKScriptMessageHandler>
@interface XPWebViewController () <WKNavigationDelegate, WKScriptMessageHandler, XCShareViewDelegate>
@property (strong, nonatomic) WKWebView *webview;
@property (strong, nonatomic) UIProgressView *progressView;
@@ -85,60 +88,65 @@ NSString * const kJSOpenFaceLiveness = @"openFaceLiveness";
[self.view addSubview:self.progressView];
}
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
if ([message.name isEqualToString:kJSOpenSharePage]) {
[self showSuccessToast:@"打开分享面板,尚未实现"];
} else if ([message.name isEqualToString:kJSGetUid]) {
NSString *uid = [[AccountInfoStorage instance] getUid];
NSString *js = [NSString stringWithFormat:@"getMessage(\"uid\",%@)", uid];
[self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) {
NSLog(@"%@",error);
}];
} else if ([message.name isEqualToString:kJSGetTicket]) {
NSString *ticket = [[AccountInfoStorage instance] getTicket];
NSString *js = [NSString stringWithFormat:@"getMessage(\"ticket\",\"%@\")",ticket];
[self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) {
NSLog(@"%@",error);
}];
} else if ([message.name isEqualToString:kJSGetDeviceId]) {
NSString *js = [NSString stringWithFormat:@"getMessage(\"deviceId\",\"%@\")",[YYUtility deviceUniqueIdentification]];
[self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) {
NSLog(@"%@",error);
}];
} else if ([message.name isEqualToString:kJSGetDeviceInfo]) {
NSDictionary *basicParmars = [HttpRequestHelper configBaseParmars:[[NSDictionary alloc] init]];
NSString *json = [basicParmars mj_JSONString];
NSString *js = [NSString stringWithFormat:@"getMessage(\"deviceInfo\",%@)", json];
[self.webview evaluateJavaScript:js completionHandler:^(id _Nullable ohter, NSError * _Nullable error) {
NSLog(@"%@", error);
}];
} else if ([message.name isEqualToString:kJSOpenPurse]) {
} else if ([message.name isEqualToString:kJSOpenChargePage]) {
} else if ([message.name isEqualToString:kJSOpenFaceLiveness]) {
NSString *verifyToken = message.body;
[self.webview evaluateJavaScript:@"document.location.href" completionHandler:^(id _Nullable response, NSError * _Nullable error) {
NSLog(@"%@", response);
NSString *currentUrl = [NSString stringWithFormat:@"%@", response];
if (currentUrl != nil && [currentUrl containsString:API_HOST_URL]) {
if ([message.name isEqualToString:kJSOpenSharePage]) {
[self showSharePanel];
} else if ([message.name isEqualToString:kJSGetUid]) {
NSString *uid = [[AccountInfoStorage instance] getUid];
NSString *js = [NSString stringWithFormat:@"getMessage(\"uid\",%@)", uid];
[self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) {
NSLog(@"%@",error);
}];
} else if ([message.name isEqualToString:kJSGetTicket]) {
NSString *ticket = [[AccountInfoStorage instance] getTicket];
NSString *js = [NSString stringWithFormat:@"getMessage(\"ticket\",\"%@\")",ticket];
[self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) {
NSLog(@"%@",error);
}];
} else if ([message.name isEqualToString:kJSGetDeviceId]) {
NSString *js = [NSString stringWithFormat:@"getMessage(\"deviceId\",\"%@\")",[YYUtility deviceUniqueIdentification]];
[self.webview evaluateJavaScript:js completionHandler:^(id _Nullable other, NSError * _Nullable error) {
NSLog(@"%@",error);
}];
} else if ([message.name isEqualToString:kJSGetDeviceInfo]) {
NSDictionary *basicParmars = [HttpRequestHelper configBaseParmars:[[NSDictionary alloc] init]];
NSString *json = [basicParmars mj_JSONString];
NSString *js = [NSString stringWithFormat:@"getMessage(\"deviceInfo\",%@)", json];
[self.webview evaluateJavaScript:js completionHandler:^(id _Nullable ohter, NSError * _Nullable error) {
NSLog(@"%@", error);
}];
} else if ([message.name isEqualToString:kJSOpenPurse]) {
} else if ([message.name isEqualToString:kJSOpenChargePage]) {
} else if ([message.name isEqualToString:kJSOpenFaceLiveness]) {
NSString *verifyToken = message.body;
#if TARGET_OS_IPHONE
[RPSDK startWithVerifyToken:verifyToken viewController:self.navigationController completion:^(RPResult * _Nonnull auditState) {
NSString *jsStrUrl;
switch (auditState.state) {
case RPStatePass:
jsStrUrl = [NSString stringWithFormat:@"renderByStatus(\"%d\")", 2];
break;
case RPStateFail:
jsStrUrl = [NSString stringWithFormat:@"renderByStatus(\"%d\")", 1];
break;
case RPStateNotVerify:
jsStrUrl = [NSString stringWithFormat:@"renderByStatus(\"%d\")", -1];
break;
}
[self.webview evaluateJavaScript:jsStrUrl completionHandler:^(id _Nullable other, NSError * _Nullable error) {
NSLog(@"%@",error);
}];
}];
[RPSDK startWithVerifyToken:verifyToken viewController:self.navigationController completion:^(RPResult * _Nonnull auditState) {
NSString *jsStrUrl;
switch (auditState.state) {
case RPStatePass:
jsStrUrl = [NSString stringWithFormat:@"renderByStatus(\"%d\")", 2];
break;
case RPStateFail:
jsStrUrl = [NSString stringWithFormat:@"renderByStatus(\"%d\")", 1];
break;
case RPStateNotVerify:
jsStrUrl = [NSString stringWithFormat:@"renderByStatus(\"%d\")", -1];
break;
}
[self.webview evaluateJavaScript:jsStrUrl completionHandler:^(id _Nullable other, NSError * _Nullable error) {
NSLog(@"%@",error);
}];
}];
#endif
}
}
}
}];
}
- (void)setUrl:(NSString *)urlString{
@@ -177,6 +185,50 @@ NSString * const kJSOpenFaceLiveness = @"openFaceLiveness";
}
}
- (void)showSharePanel {
XCShareItem *cycle = [[XCShareItem alloc]init];
cycle.title = @"朋友圈";
cycle.imageName = @"share_wxcircle";
cycle.disableImageName = @"share_wxcircle_disable";
cycle.disable = NO;
cycle.itemTag = XCShareItemTagMoments;
XCShareItem *wfriend = [[XCShareItem alloc]init];
wfriend.title = @"微信好友";
wfriend.imageName = @"share_wx";
wfriend.disableImageName = @"share_wx_disable";
wfriend.disable = NO;
wfriend.itemTag = XCShareItemTagWeChat;
XCShareItem *zone = [[XCShareItem alloc]init];
zone.title = @"QQ空间";
zone.imageName = @"share_qqzone";
zone.disableImageName = @"share_qqzone_disable";
zone.disable = NO;
zone.itemTag = XCShareItemTagQQZone;
XCShareItem *qfriend = [[XCShareItem alloc]init];
qfriend.title = @"QQ好友";
qfriend.imageName = @"share_qq";
qfriend.disableImageName = @"share_qq_disable";
qfriend.disable = NO;
qfriend.itemTag = XCShareItemTagQQ;
CGFloat margin = 9;
CGSize itemSize = CGSizeMake((KScreenWidth-2*margin)/4, 111);
XCShareView *shareView = [[XCShareView alloc]initWithItemSize:itemSize items:@[cycle,wfriend,zone,qfriend] margin:margin];
shareView.delegate = self;
[TTPopup popupView:shareView style:TTPopupStyleActionSheet];
}
- (void)shareView:(XCShareView *)shareView didSelected:(XCShareItemTag)itemTag {
}
- (void)shareViewDidClickCancle:(XCShareView *)shareView {
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if ([keyPath isEqualToString:@"estimatedProgress"]) {
self.progressView.progress = self.webview.estimatedProgress;