|
@@ -0,0 +1,1213 @@
|
|
|
|
+//
|
|
|
|
+// JYSearchViewController.m
|
|
|
|
+// JianYuIOS
|
|
|
|
+//
|
|
|
|
+// Created by apple on 2018/11/8.
|
|
|
|
+// Copyright © 2018年 lixianglan. All rights reserved.
|
|
|
|
+//
|
|
|
|
+
|
|
|
|
+#import "JYSearchViewController.h"
|
|
|
|
+#import "JYTabBarController.h"
|
|
|
|
+
|
|
|
|
+@protocol JYSearchViewControllerJSExport<JSExport>
|
|
|
|
+
|
|
|
|
+JSExportAs(loginByWeixin, -(NSString *)jsLoginByWeixin:(NSString *)str);// 微信登录 openid
|
|
|
|
+JSExportAs(share, -(void)jsShare:(NSString *)type title:(NSString *)title content:(NSString *)content link:(NSString *)link); // 调用分享
|
|
|
|
+JSExportAs(saveUserToken, -(void)jsSaveUserToken:(NSString *)token);// 登录时获取令牌 保存
|
|
|
|
+JSExportAs(getUserToken, -(NSString *)jsGetUserToken:(NSString *)str);// 取本地存的令牌
|
|
|
|
+JSExportAs(removeUserToken, -(void)jsRemoveUserToken:(NSString *)str); // 退出时清空数据
|
|
|
|
+JSExportAs(checkNoticePermission, -(int)jsCheckNoticePermission:(NSString *)str); // 查询手机通知是否打开
|
|
|
|
+JSExportAs(openSystemNotification, -(void)jsOpenSystemNotification:(NSString *)str);// 跳转到系统设置
|
|
|
|
+JSExportAs(getPushRid, -(NSString *)jsGetPushRid:(NSString *)str);// 返回极光id
|
|
|
|
+JSExportAs(getMessageList, -(NSString *)jsGetMessageList:(NSString *)openid);// 按通知接收时间倒排,取前100条
|
|
|
|
+JSExportAs(updateMessageState, -(void)jsUpdateMessageState:(NSString *)lxID state:(NSString *)state);// 更新状态
|
|
|
|
+JSExportAs(deleteMessageById, -(void)jsDeleteMessageById:(NSString *)lxID);// 删除一条消息
|
|
|
|
+JSExportAs(getMessage, -(NSString *)jsGetMessage:(NSString *)lxID);// 取单条数据
|
|
|
|
+JSExportAs(getUnReadMessageCount, -(int)jsGetUnReadMessageCount:(NSString *)openid);// 获取未读消息总数
|
|
|
|
+JSExportAs(updateAllUnReadMessage, -(void)jsUpdateAllUnReadMessage:(NSString *)openid);// 全部置为已读
|
|
|
|
+JSExportAs(lightStatusBar, -(void)jsLightStatusBar:(NSString *)status);// 导航栏文字颜色
|
|
|
|
+JSExportAs(openExternalLink, -(void)jsOpenExternalLink:(NSString *)url title:(NSString *)title);// 打开新控制器 加载新web
|
|
|
|
+JSExportAs(getVersion, -(NSString *)jsGetVersion:(NSString *)str);// 获取当前版本号
|
|
|
|
+JSExportAs(alert, -(void)jsAlert:(NSString *)content);// 弹框
|
|
|
|
+JSExportAs(isInstallWeixin, -(int)jsIsInstallWeixin:(NSString *)str);// 是否安装微信
|
|
|
|
+JSExportAs(changeMessageType, -(void)jsChangeMessageType:(NSString *)link);//已读操作处理
|
|
|
|
+JSExportAs(openActivityPage, -(void)jsOpenActivityPage:(NSString *)url rectype:(NSString *)rectype openid:(NSString *)openid);
|
|
|
|
+
|
|
|
|
+JSExportAs(getCipherText, -(NSString *)jsGGetCipherText:(NSString *)phone);
|
|
|
|
+
|
|
|
|
+JSExportAs(business, -(NSInteger)jsBusiness:(NSInteger)shooID shopType:(NSInteger )shopType);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+//新增
|
|
|
|
+JSExportAs(hiddenBottom, -(void)jsHiddenBottom:(NSString*)hidden);
|
|
|
|
+
|
|
|
|
+JSExportAs(loginSuccess, -(void)jsLoginSuccess:(NSString*)status);
|
|
|
|
+
|
|
|
|
+JSExportAs(backUrl, -(void)jsBackUrl:(NSString*)str);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+JSExportAs(redirectKeyset, -(void)jsRedirectKeyset:(NSString*)str);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@end
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@interface JYSearchViewController ()<UIWebViewDelegate, JYSearchViewControllerJSExport>
|
|
|
|
+{
|
|
|
|
+ CGPoint startTouch;
|
|
|
|
+ BOOL _isMoving;
|
|
|
|
+
|
|
|
|
+ NSInteger pushIndex;
|
|
|
|
+
|
|
|
|
+ NSInteger _timeTick;
|
|
|
|
+ NSInteger _time;
|
|
|
|
+
|
|
|
|
+ BOOL autologin;
|
|
|
|
+ BOOL notiFinish;
|
|
|
|
+
|
|
|
|
+ BOOL expRefreshBool; //实验室 是否刷新
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@property(nonatomic, strong)UIWebView *webView;
|
|
|
|
+
|
|
|
|
+//@property (weak, nonatomic) IBOutlet UIWebView *webView;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@property(nonatomic, assign)BOOL updateNotify;
|
|
|
|
+@property(nonatomic, assign)BOOL afterOpenPushMessage;
|
|
|
|
+@property(nonatomic, strong)NoNetView *noNetView;
|
|
|
|
+@property(nonatomic, strong)NSURLRequest *errRequest;
|
|
|
|
+@property(nonatomic, strong)NSString *signOutContent;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@property (nonatomic, strong)NSMutableDictionary *notiDict;
|
|
|
|
+@property (nonatomic,weak)NSTimer *timer;
|
|
|
|
+
|
|
|
|
+@end
|
|
|
|
+
|
|
|
|
+NSString *const kInitVector_0 = @"1389461544135476";
|
|
|
|
+size_t const kKeySize_0 = kCCKeySizeAES128;
|
|
|
|
+NSString *const AesKey_0 = @"mGlAgnIBB8bx2nch";
|
|
|
|
+
|
|
|
|
+@implementation JYSearchViewController
|
|
|
|
+
|
|
|
|
+-(void)viewWillAppear:(BOOL)animated
|
|
|
|
+{
|
|
|
|
+ [super viewWillAppear:animated];
|
|
|
|
+ [self.navigationController setNavigationBarHidden:YES animated:animated];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+- (void)viewDidLoad {
|
|
|
|
+ [super viewDidLoad];
|
|
|
|
+ self.view.backgroundColor = [UIColor whiteColor];
|
|
|
|
+ self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, -STATUS_BAR_HEIGHT, WIDTH, HEIGHT-TAB_BAR_HEIGHT+STATUS_BAR_HEIGHT)];
|
|
|
|
+ [self.view addSubview: self.webView];
|
|
|
|
+ self.webView.scrollView.bounces = NO;
|
|
|
|
+ self.webView.delegate = self;
|
|
|
|
+
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudText:nil];
|
|
|
|
+ [self webViewFirstRequest];//请求页面数据
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(requestWebView:) name:kRequestWebViewWithUrl object:nil];
|
|
|
|
+ //点击订阅通知
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(clickSubNotiMethods:) name:ClickSubNotiMethods object:nil];
|
|
|
|
+
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateNotifyState) name:kUpdateNotifyState object:nil];
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(afterReceiveNewMsg) name:kAfterReceiveNewMsg object:nil];
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadWebView) name:kReloadWebVIew object:nil];
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginOut:) name:kLoginOut object:nil];
|
|
|
|
+
|
|
|
|
+ [[AFNetworkReachabilityManager sharedManager] startMonitoring];
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(netReachChanged:) name:AFNetworkingReachabilityDidChangeNotification object:nil];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //前往登录通知-tabbar
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(isLoginTabBar:) name:@"isLoginTabBar" object:nil];
|
|
|
|
+
|
|
|
|
+ UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(paningGestureReceive:)];
|
|
|
|
+ [recognizer delaysTouchesBegan];
|
|
|
|
+ [self.view addGestureRecognizer:recognizer];
|
|
|
|
+ //手势
|
|
|
|
+
|
|
|
|
+// [self clearWeb];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //新增监听
|
|
|
|
+ self.notiDict = [[NSMutableDictionary alloc]initWithDictionary:[[NSUserDefaults standardUserDefaults] objectForKey:@"NotiDict"]];
|
|
|
|
+ if(self.notiDict.count) {
|
|
|
|
+ self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeFireMethod) userInfo:nil repeats:YES];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //新增刷新通知
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshSS:) name:@"refreshSS" object:nil];
|
|
|
|
+
|
|
|
|
+ //展示底部红的通知
|
|
|
|
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(newsRedPoint:) name:JYNewsRedPoint object:nil];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //是否需要显示小红点
|
|
|
|
+ [self haveRedPoint];
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+-(void)newsRedPoint:(NSNotification *)notificaition
|
|
|
|
+{
|
|
|
|
+ NSDictionary *dict = notificaition.userInfo;
|
|
|
|
+ NSLog(@"%@",dict);
|
|
|
|
+ NSInteger type = [dict[@"type"] integerValue];
|
|
|
|
+ if(type==1) {
|
|
|
|
+ //显示
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self.tabBarController.tabBar showBadgeOnItemIndex:1];
|
|
|
|
+ });
|
|
|
|
+ }else if (type==2) {
|
|
|
|
+ //显示
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self.tabBarController.tabBar showBadgeOnItemIndex:3];
|
|
|
|
+ });
|
|
|
|
+ }else {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ NSString *textJS = [NSString stringWithFormat:@"afterReceivePushMessage('%@','%@')",dict[@"typeMsg"],dict[@"url"]];
|
|
|
|
+ NSLog(@"%@",textJS);
|
|
|
|
+ JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ [context evaluateScript:textJS];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)haveRedPoint
|
|
|
|
+{
|
|
|
|
+ NSString *token = [LXUserDefaults token];
|
|
|
|
+ if (token) {
|
|
|
|
+ [[LXNetworkManager shareLXNetworkManager]postWithURLStr:[NSString stringWithFormat:@"%@jyapp/free/showRedSpotOnMenu",kHost] parameters:@{@"token":token} progress:^(NSProgress *progress) {
|
|
|
|
+ NSLog(@"%@",progress);
|
|
|
|
+ } success:^(id responseObject) {
|
|
|
|
+ NSLog(@"responseObject=%@",responseObject);
|
|
|
|
+
|
|
|
|
+ if([responseObject[@"subscribe"] integerValue]>=1) {
|
|
|
|
+ //显示
|
|
|
|
+ [GlobalData shareInstance].subIsRed = YES;
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self.tabBarController.tabBar showBadgeOnItemIndex:1];
|
|
|
|
+ });
|
|
|
|
+ }else {
|
|
|
|
+ [GlobalData shareInstance].subIsRed = NO;
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self.tabBarController.tabBar hideBadgeOnItemIndex:1];
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if([responseObject[@"my"] integerValue]>=1) {
|
|
|
|
+ //显示
|
|
|
|
+ [GlobalData shareInstance].mineIsRed = YES;
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self.tabBarController.tabBar showBadgeOnItemIndex:3];
|
|
|
|
+ });
|
|
|
|
+ }else {
|
|
|
|
+ [GlobalData shareInstance].mineIsRed = NO;
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self.tabBarController.tabBar hideBadgeOnItemIndex:3];
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } failure:^(NSError *error) {
|
|
|
|
+ NSLog(@"error=%@",error);
|
|
|
|
+ }];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+//2.5.1
|
|
|
|
+-(void)timeFireMethod{
|
|
|
|
+ _timeTick++;
|
|
|
|
+ NSLog(@"定时器");
|
|
|
|
+ if(self.webView&¬iFinish) {
|
|
|
|
+ NSString * urlStr = [NSString stringWithFormat:@"%@",self.notiDict[@"info"][@"url"]];
|
|
|
|
+
|
|
|
|
+ if (urlStr) {
|
|
|
|
+ if([self.notiDict[@"type"] isEqualToString:@"bid"]) {
|
|
|
|
+ AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
|
|
|
|
+ JYTabBarController *tab = (JYTabBarController *)delegate.window.rootViewController;
|
|
|
|
+ tab.selectedIndex = 1;
|
|
|
|
+ }else {
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudText:nil];
|
|
|
|
+ self.afterOpenPushMessage = YES;
|
|
|
|
+ [self performSelector:@selector(requestWebTime:) withObject:self.notiDict afterDelay:1];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ [self.timer invalidate];
|
|
|
|
+ self.timer = nil;
|
|
|
|
+ _timeTick = 0;
|
|
|
|
+ [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NotiDict"];
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (_timeTick == 60) {
|
|
|
|
+ [self.timer invalidate];
|
|
|
|
+ self.timer = nil;
|
|
|
|
+ _timeTick = 0;
|
|
|
|
+ [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"NotiDict"];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+-(void)moveViewWithX:(float)x
|
|
|
|
+{
|
|
|
|
+ CGRect rect = self.view.bounds;
|
|
|
|
+ CGFloat width = CGRectGetWidth(rect);
|
|
|
|
+ x = x>width?width:x;
|
|
|
|
+ x = x<0?0:x;
|
|
|
|
+ CGRect frame = self.webView.frame;
|
|
|
|
+ frame.origin.x = x;
|
|
|
|
+ self.webView.frame = frame;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#pragma mark – Gesture Recognizer –
|
|
|
|
+-(void)paningGestureReceive:(UIPanGestureRecognizer *)recoginzer
|
|
|
|
+{
|
|
|
|
+ NSString *current_url = [self.webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
|
|
|
|
+ NSLog(@"当前页面:%@",current_url);
|
|
|
|
+ CGRect rect = self.view.bounds;
|
|
|
|
+ CGFloat width = CGRectGetWidth(rect);
|
|
|
|
+ if (![self.webView canGoBack]) {
|
|
|
|
+ NSLog(@"不可返回");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if([current_url containsString:@"jyapp/free/login"]) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // NSString *current_url = self.webView.request.URL.absoluteString;
|
|
|
|
+ if([current_url isEqualToString:[NSString stringWithFormat:@"%@jyapp/free/me",kHost]]||[current_url isEqualToString:[NSString stringWithFormat:@"%@jyapp/jylab/index",kHost]]||[current_url isEqualToString:[NSString stringWithFormat:@"%@jyapp/wxkeyset/keyset/index",kHost]]||[current_url isEqualToString:[NSString stringWithFormat:@"%@jyapp/jylab/mainSearch",kHost]]){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //https://www.jianyu360.com/jyapp/free/me
|
|
|
|
+ //https://www.jianyu360.com/jyapp/jylab/index
|
|
|
|
+ //https://www.jianyu360.com/jyapp/wxkeyset/keyset/index
|
|
|
|
+ //https://www.jianyu360.com/jyapp/jylab/mainSearch
|
|
|
|
+
|
|
|
|
+ CGPoint touchPoint = [recoginzer locationInView:[UIApplication sharedApplication].keyWindow];
|
|
|
|
+ if (recoginzer.state==UIGestureRecognizerStateBegan) {
|
|
|
|
+ _isMoving = YES;
|
|
|
|
+ startTouch = touchPoint;
|
|
|
|
+ } else if (recoginzer.state==UIGestureRecognizerStateEnded){
|
|
|
|
+ if (touchPoint.x - startTouch.x > width*0.125) {
|
|
|
|
+ [UIView animateWithDuration:0.3 animations:^{
|
|
|
|
+ [self moveViewWithX:width];
|
|
|
|
+ [self.webView goBack];
|
|
|
|
+ } completion:^(BOOL finished) {
|
|
|
|
+ _isMoving = NO;
|
|
|
|
+ [self moveViewWithX:0];
|
|
|
|
+ }];
|
|
|
|
+ } else {
|
|
|
|
+ [UIView animateWithDuration:0.3 animations:^{
|
|
|
|
+ [self moveViewWithX:0];
|
|
|
|
+ } completion:^(BOOL finished) {
|
|
|
|
+ _isMoving = NO;
|
|
|
|
+ }];
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ } else if (recoginzer.state==UIGestureRecognizerStateCancelled){
|
|
|
|
+ [UIView animateWithDuration:0.3 animations:^{
|
|
|
|
+ [self moveViewWithX:0];
|
|
|
|
+ } completion:^(BOOL finished) {
|
|
|
|
+ _isMoving = NO;
|
|
|
|
+ }];
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if (_isMoving) {
|
|
|
|
+ [self moveViewWithX:touchPoint.x - startTouch.x];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 监控网络状态变化
|
|
|
|
+-(void)netReachChanged:(NSNotification *)notificaition{
|
|
|
|
+ NSDictionary *userInfo = notificaition.userInfo;
|
|
|
|
+ if ([userInfo[@"AFNetworkingReachabilityNotificationStatusItem"] intValue] == 0 || [userInfo[@"AFNetworkingReachabilityNotificationStatusItem"] intValue] == -1) {
|
|
|
|
+ [self addNoNetViews];
|
|
|
|
+ }else{
|
|
|
|
+ if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"firstLoad"] intValue] == 0) {
|
|
|
|
+ [[NSUserDefaults standardUserDefaults] setObject:@"1" forKey:@"firstLoad"];
|
|
|
|
+ [self removeNoNetViews];
|
|
|
|
+ [self webViewFirstRequest];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 再次加载页面
|
|
|
|
+-(void)reloadWebView{
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudText:nil];
|
|
|
|
+ if (!self.webView.canGoBack) {
|
|
|
|
+ [self webViewFirstRequest];
|
|
|
|
+ }else{
|
|
|
|
+ [self.webView reload];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 首次加载web
|
|
|
|
+-(void)webViewFirstRequest{
|
|
|
|
+ NSString *url = [NSString stringWithFormat:@"%@%@", kHost, @"jyapp/free/index"];
|
|
|
|
+ NSString *token = [LXUserDefaults token];
|
|
|
|
+ if (token) {
|
|
|
|
+ url = [url stringByAppendingString:[NSString stringWithFormat:@"?sign=%@&url=/jyapp/jylab/mainSearch&from=restart", token]];
|
|
|
|
+ }
|
|
|
|
+ NSLog(@"111第一次加载%@",url);
|
|
|
|
+
|
|
|
|
+ url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadRevalidatingCacheData timeoutInterval:20]];
|
|
|
|
+
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//收到消息退出并重新加载web
|
|
|
|
+-(void)webViewRequestByMsg{
|
|
|
|
+// NSString *url = [NSString stringWithFormat:@"%@%@", kHost, @"jyapp/free/kicked"];
|
|
|
|
+ NSString *url = [NSString stringWithFormat:@"%@%@", kHost, @"jyapp/free/login?back=index&isios=t"];
|
|
|
|
+
|
|
|
|
+ url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
|
|
|
+ [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)requestWebTime:(NSDictionary *)infoDict
|
|
|
|
+{
|
|
|
|
+ NSString * urlStr = [NSString stringWithFormat:@"%@",infoDict[@"url"]];
|
|
|
|
+
|
|
|
|
+ if([infoDict[@"type"] isEqualToString:@"message"]) {
|
|
|
|
+ NSString *url = [NSString stringWithFormat:@"%@",urlStr];
|
|
|
|
+ NSArray * array = [url componentsSeparatedByString:@"=="];
|
|
|
|
+ url = [array.firstObject stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
|
|
|
+ [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
|
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"kNewWebControllerDismiss" object:nil];
|
|
|
|
+ //
|
|
|
|
+ }else {
|
|
|
|
+ NSString *url = [NSString stringWithFormat:@"%@%@", kHost, urlStr];
|
|
|
|
+ url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
|
|
|
+ [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
|
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"kNewWebControllerDismiss" object:nil];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 点击通知 跳转到通知内url
|
|
|
|
+-(void)requestWebView:(NSNotification *)notification{
|
|
|
|
+ NSDictionary * infoDict = [notification object];
|
|
|
|
+ if (!infoDict) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ NSString * urlStr = [NSString stringWithFormat:@"%@",infoDict[@"url"]];
|
|
|
|
+
|
|
|
|
+ if (urlStr) {
|
|
|
|
+ //当前控制器
|
|
|
|
+ if(self.tabBarController.selectedIndex != 0) {
|
|
|
|
+ return;
|
|
|
|
+ }else {
|
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"refreshMine" object:nil];;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudText:nil];
|
|
|
|
+ self.afterOpenPushMessage = YES;
|
|
|
|
+ [self performSelector:@selector(requestWebTime:) withObject:infoDict afterDelay:1];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)clickSubNotiMethods:(NSNotification *)notification{
|
|
|
|
+ NSDictionary * infoDict = [notification object][@"info"];
|
|
|
|
+ if (!infoDict) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ NSString * urlStr = [NSString stringWithFormat:@"%@",infoDict[@"url"]];
|
|
|
|
+ if (urlStr) {
|
|
|
|
+ if(self.tabBarController.selectedIndex == 0) {
|
|
|
|
+ //底部栏置换到订阅
|
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"refreshDY" object:nil userInfo:nil];
|
|
|
|
+ AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
|
|
|
|
+ JYTabBarController *tab = (JYTabBarController *)delegate.window.rootViewController;
|
|
|
|
+ tab.selectedIndex = 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 收到通知消息
|
|
|
|
+-(void)afterReceiveNewMsg{
|
|
|
|
+ NSLog(@"afterReceiveNewMsg");
|
|
|
|
+ JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ [context evaluateScript:@"afterReceiveNewMsg()"];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 收到退出登录消息
|
|
|
|
+-(void)loginOut:(NSNotification *)notification{
|
|
|
|
+ if([notification.userInfo[@"item_index"] integerValue]!=0) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ self.signOutContent = notification.object;
|
|
|
|
+ if (!self.signOutContent) {
|
|
|
|
+ self.signOutContent = @"1";
|
|
|
|
+ }
|
|
|
|
+ NSString *url = [NSString stringWithFormat:@"%@%@?sign=%@", kHost, @"jyapp/free/signOut", [LXUserDefaults token]];
|
|
|
|
+ url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
|
|
|
+
|
|
|
|
+// UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
|
|
|
|
+// webView.delegate = self;
|
|
|
|
+// [self.view addSubview:webView];
|
|
|
|
+// [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
|
|
|
|
+
|
|
|
|
+ [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
|
|
|
|
+ [self jsRemoveUserToken:nil];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//前往登录页面
|
|
|
|
+-(void)isLoginTabBar:(NSNotification *)notification
|
|
|
|
+{
|
|
|
|
+ NSDictionary *dict = notification.userInfo;
|
|
|
|
+ //
|
|
|
|
+ NSLog(@"我从第几个页面过来:%@",dict[@"item_index"]);
|
|
|
|
+ pushIndex = [dict[@"item_index"] integerValue];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //
|
|
|
|
+ NSString *url = [NSString stringWithFormat:@"%@%@", kHost, @"jyapp/free/login"];
|
|
|
|
+ url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
|
|
|
+ [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// NSString *index = [NSString stringWithFormat:@"%ld",pushIndex];
|
|
|
|
+// [[NSNotificationCenter defaultCenter] postNotificationName:@"isLoginTabBar" object:nil userInfo:@{@"item_index":index}];
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//js返回首页
|
|
|
|
+-(void)jsBackUrl:(NSString*)str
|
|
|
|
+{
|
|
|
|
+ NSLog(@"search返回首页,search返回首页,search返回首页,search返回首页,search返回首页,search返回首页");
|
|
|
|
+ if([str isEqualToString:@"H"]) {
|
|
|
|
+ pushIndex = 0;
|
|
|
|
+ [self webViewFirstRequest];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//js方法登录成功
|
|
|
|
+-(void)jsLoginSuccess:(NSString*)status
|
|
|
|
+{
|
|
|
|
+ NSLog(@"Search登录成功提示;;;%@当前下标:%ld",status,(long)pushIndex);
|
|
|
|
+
|
|
|
|
+ //显示
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self.tabBarController.tabBar showBadgeOnItemIndex:3];
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if([status isEqualToString:@"S"]) {
|
|
|
|
+ if(pushIndex!=0) {
|
|
|
|
+ NSLog(@"SSSSSS");
|
|
|
|
+
|
|
|
|
+ kMainQueue((^{
|
|
|
|
+ NSString *index = [NSString stringWithFormat:@"%ld",pushIndex];
|
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"changeItems" object:nil userInfo:@{@"item_index":index}];
|
|
|
|
+ AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
|
|
|
|
+ JYTabBarController *tab = (JYTabBarController *)delegate.window.rootViewController;
|
|
|
|
+ tab.selectedIndex = pushIndex;
|
|
|
|
+ pushIndex = 0;
|
|
|
|
+ }));
|
|
|
|
+ }else {
|
|
|
|
+ [self webViewFirstRequest];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }else if ([status isEqualToString:@""]) {
|
|
|
|
+ //手动tabbar点击
|
|
|
|
+ NSLog(@"statusstatusstatusstatusstatusstatusstatusstatusstatusstatus=======%@",status);
|
|
|
|
+// NSString *index = [NSString stringWithFormat:@"%ld",pushIndex];
|
|
|
|
+// [[NSNotificationCenter defaultCenter] postNotificationName:@"changeItems" object:nil userInfo:@{@"item_index":index}];
|
|
|
|
+// pushIndex = 0;
|
|
|
|
+
|
|
|
|
+ //刷新 订阅 和 我的
|
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"refreshAllVC" object:nil userInfo:nil];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //首页跳转登录刷新 我们+订阅
|
|
|
|
+
|
|
|
|
+ }else {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)dealTabBar
|
|
|
|
+{
|
|
|
|
+ NSLog(@"刷新第一个页面");
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+// [self showTabBar];
|
|
|
|
+// self.webView.frame = CGRectMake(0, -STATUS_BAR_HEIGHT, WIDTH, HEIGHT-TAB_BAR_HEIGHT+STATUS_BAR_HEIGHT);
|
|
|
|
+ [self webViewFirstRequest];
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+- (void)hideTabBar {
|
|
|
|
+ NSLog(@"隐藏tabbar");
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ if (self.tabBarController.tabBar.hidden == YES) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ UIView *contentView;
|
|
|
|
+ if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )
|
|
|
|
+ contentView = [self.tabBarController.view.subviews objectAtIndex:1];
|
|
|
|
+ else
|
|
|
|
+ contentView = [self.tabBarController.view.subviews objectAtIndex:0];
|
|
|
|
+ contentView.frame = CGRectMake(contentView.bounds.origin.x, contentView.bounds.origin.y, contentView.bounds.size.width, contentView.bounds.size.height + self.tabBarController.tabBar.frame.size.height);
|
|
|
|
+ self.tabBarController.tabBar.hidden = YES;
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+- (void)showTabBar{
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ if (self.tabBarController.tabBar.hidden == NO)
|
|
|
|
+ {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ UIView *contentView;
|
|
|
|
+ if ([[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]])
|
|
|
|
+
|
|
|
|
+ contentView = [self.tabBarController.view.subviews objectAtIndex:1];
|
|
|
|
+
|
|
|
|
+ else
|
|
|
|
+
|
|
|
|
+ contentView = [self.tabBarController.view.subviews objectAtIndex:0];
|
|
|
|
+ contentView.frame = CGRectMake(contentView.bounds.origin.x, contentView.bounds.origin.y, contentView.bounds.size.width, contentView.bounds.size.height - self.tabBarController.tabBar.frame.size.height);
|
|
|
|
+ self.tabBarController.tabBar.hidden = NO;
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)jsHiddenBottom:(NSString *)hidden
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+ NSLog(@"让我展示隐藏bottom==%@",hidden);
|
|
|
|
+ if([hidden integerValue]==0) {
|
|
|
|
+
|
|
|
|
+ [self hideTabBar];
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ self.webView.frame = CGRectMake(0, -STATUS_BAR_HEIGHT, WIDTH, HEIGHT+STATUS_BAR_HEIGHT);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ }else {
|
|
|
|
+ [self showTabBar];
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ self.webView.frame = CGRectMake(0, -STATUS_BAR_HEIGHT, WIDTH, HEIGHT-TAB_BAR_HEIGHT+STATUS_BAR_HEIGHT);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)judgeIsHidden
|
|
|
|
+{
|
|
|
|
+ NSString *current_url = [self.webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
|
|
|
|
+
|
|
|
|
+ //[current_url isEqualToString:[NSString stringWithFormat:@"%@jyapp/free/index",kHost]]
|
|
|
|
+ NSLog(@"%@",current_url);
|
|
|
|
+ if([current_url isEqualToString:[NSString stringWithFormat:@"%@jyapp/jylab/mainSearch",kHost]]){
|
|
|
|
+ NSLog(@"展示");
|
|
|
|
+ [self showTabBar];
|
|
|
|
+ self.webView.frame = CGRectMake(0, -STATUS_BAR_HEIGHT, WIDTH, HEIGHT-TAB_BAR_HEIGHT+STATUS_BAR_HEIGHT);
|
|
|
|
+ }else {
|
|
|
|
+ NSLog(@"隐藏");
|
|
|
|
+ [self hideTabBar];
|
|
|
|
+ self.webView.frame = CGRectMake(0, -STATUS_BAR_HEIGHT, WIDTH, HEIGHT+STATUS_BAR_HEIGHT);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#pragma mark 捕获js中调用的方法
|
|
|
|
+
|
|
|
|
+//捕获js中调用的方法
|
|
|
|
+- (void)webViewDidFinishLoad:(UIWebView *)webView{
|
|
|
|
+
|
|
|
|
+ if(!notiFinish) {
|
|
|
|
+ notiFinish = YES;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(expRefreshBool) {
|
|
|
|
+ expRefreshBool = NO;
|
|
|
|
+ }else {
|
|
|
|
+ //正常的网页加载
|
|
|
|
+ [self judgeIsHidden];//是否隐藏
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ [self removeNoNetViews];
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] hideHud];
|
|
|
|
+ JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ // Disable user selection
|
|
|
|
+ [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';"];
|
|
|
|
+ // Disable callout
|
|
|
|
+ [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';"];
|
|
|
|
+
|
|
|
|
+ context[@"JyObj"] = self;
|
|
|
|
+
|
|
|
|
+ [context evaluateScript:@"afterPageInit()"];
|
|
|
|
+ if (self.afterOpenPushMessage) {
|
|
|
|
+ self.afterOpenPushMessage = NO;
|
|
|
|
+ // [context evaluateScript:@"afterOpenPushMessage()"];
|
|
|
|
+ [context evaluateScript:[NSString stringWithFormat:@"afterOpenPushMessage('%d')", [self jsIsCanBack:nil]]];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ NSString *url = webView.request.URL.absoluteString;
|
|
|
|
+ [self doSomeWithLoadUrl:url];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //加载第一次成功的时候 调JS
|
|
|
|
+// if(!autologin&&[LXUserDefaults token]) {
|
|
|
|
+// autologin = YES;
|
|
|
|
+// NSString *textJS = [NSString stringWithFormat:@"refAutoLogin('%@')",@"S"];
|
|
|
|
+// JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+// [context evaluateScript:textJS];
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ if(!autologin) {
|
|
|
|
+ //第一次加载页面成功
|
|
|
|
+ if([LXUserDefaults token]) {
|
|
|
|
+ //如果登录
|
|
|
|
+ NSString *textJS = [NSString stringWithFormat:@"refAutoLogin('%@')",@"S"];
|
|
|
|
+ JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ [context evaluateScript:textJS];
|
|
|
|
+ }
|
|
|
|
+ autologin = YES;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// CGSize actualSize =[webView sizeThatFits:CGSizeZero];
|
|
|
|
+//
|
|
|
|
+// CGRect newFrame = webView.frame;
|
|
|
|
+//
|
|
|
|
+// newFrame.size.height = actualSize.height;
|
|
|
|
+//
|
|
|
|
+// webView.frame = newFrame;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//15737190152
|
|
|
|
+-(void)doSomeWithLoadUrl:(NSString *)url{
|
|
|
|
+ if (!url) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ if ([url containsString:@"signOut"]) { // 收到退出消息后 跳转到登录页面
|
|
|
|
+ // [self webViewFirstRequest];
|
|
|
|
+ [self webViewRequestByMsg];
|
|
|
|
+ }else if ([url containsString:@"/free/login"]){ // 如果通过接收消息 跳转到登录页面 展示消息内容
|
|
|
|
+ if (self.signOutContent && ![self.signOutContent isEqualToString:@"1"]) {
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showAlertViewWithTitle:@"提示" message:self.signOutContent actions:@[[UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
|
|
|
+ self.signOutContent = nil;
|
|
|
|
+ }]]];
|
|
|
|
+ }else{
|
|
|
|
+ self.signOutContent = nil;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] hideHud];
|
|
|
|
+
|
|
|
|
+ NSString *url = webView.request.URL.absoluteString;
|
|
|
|
+ [self doSomeWithLoadUrl:url];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+-(void)webViewDidStartLoad:(UIWebView *)webView{
|
|
|
|
+ // if ([[UIDevice currentDevice].systemVersion floatValue] < 10) {
|
|
|
|
+ // [[LXViewControllerManager shareViewControllerManager] hideHud];
|
|
|
|
+ // }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+- (void)didReceiveMemoryWarning {
|
|
|
|
+ [super didReceiveMemoryWarning];
|
|
|
|
+// [self clearWeb];
|
|
|
|
+ // Dispose of any resources that can be recreated.
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)clearWeb{
|
|
|
|
+ NSURLCache * cache = [NSURLCache sharedURLCache];
|
|
|
|
+ [cache removeAllCachedResponses];
|
|
|
|
+ [cache setDiskCapacity:0];
|
|
|
|
+ [cache setMemoryCapacity:0];
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)addNoNetViews{
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self removeNoNetViews];
|
|
|
|
+ self.noNetView = [NoNetView shareView];
|
|
|
|
+ [self.view addSubview:self.noNetView];
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+-(void)removeNoNetViews{
|
|
|
|
+ if (self.noNetView ) {
|
|
|
|
+ [self.noNetView removeFromSuperview];
|
|
|
|
+ self.noNetView = nil;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#pragma mark JS 回调
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 微信登录
|
|
|
|
+-(NSString *)jsLoginByWeixin:(NSString *)str{
|
|
|
|
+
|
|
|
|
+ if ([LXUserDefaults isInstallWeiXin] != 1) { // 没有安装微信 不走友盟
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudOnlyText:@"微信登录失败,没有安装微信" delay:1.5];
|
|
|
|
+ return nil;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+
|
|
|
|
+ [[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_WechatSession currentViewController:self completion:^(id result, NSError *error) {
|
|
|
|
+
|
|
|
|
+ UMSocialUserInfoResponse *resp = result;
|
|
|
|
+
|
|
|
|
+ [self dealWXDic:(NSDictionary *)resp.originalResponse];
|
|
|
|
+
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] hideHud];
|
|
|
|
+ }];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ return nil;
|
|
|
|
+}
|
|
|
|
+// 处理微信登录获取到的数据
|
|
|
|
+-(void)dealWXDic:(NSDictionary *)dictionary{
|
|
|
|
+
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudText:nil];
|
|
|
|
+ //如果获取到用户信息,即用户点击了“登录”,则进行用户信息获取
|
|
|
|
+ if (dictionary.count > 0) {
|
|
|
|
+
|
|
|
|
+ NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:dictionary];
|
|
|
|
+
|
|
|
|
+ if (dic) {
|
|
|
|
+ [dic removeObjectForKey:@"privilege"];
|
|
|
|
+ [dic removeObjectForKey:@"language"];
|
|
|
|
+ double currDouble = [[NSDate date] timeIntervalSince1970];
|
|
|
|
+ [dic setObject:[NSNumber numberWithLong:(long)currDouble] forKey:@"createtime"];
|
|
|
|
+
|
|
|
|
+ // 拼接标志位
|
|
|
|
+ NSString *sign = [NSString stringWithFormat:@"city=%@&country=%@&createtime=%@&headimgurl=%@&nickname=%@&openid=%@&province=%@&sex=%@&unionid=%@", dic[@"city"], dic[@"country"], dic[@"createtime"], dic[@"headimgurl"], dic[@"nickname"], dic[@"openid"], dic[@"province"],dic[@"sex"],dic[@"unionid"]];
|
|
|
|
+ sign = [LXMD5 md532BitLower:sign];
|
|
|
|
+ [dic setObject:sign forKey:@"sign"];
|
|
|
|
+ NSString *endStr = [[LXViewControllerManager shareViewControllerManager] getJsonStr:dic];
|
|
|
|
+ NSData *data = [endStr dataUsingEncoding:NSUTF8StringEncoding];
|
|
|
|
+ endStr = [data base64EncodedStringWithOptions:0];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ NSString * textJS1 = [NSString stringWithFormat:@"loginByWeixinCallBack('%@')", endStr];
|
|
|
|
+ JSValue *value = [context evaluateScript:textJS1];
|
|
|
|
+ NSLog(@"%@", value);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// js 调用分享
|
|
|
|
+-(void)jsShare:(NSString *)type title:(NSString *)title content:(NSString *)content link:(NSString *)link{
|
|
|
|
+ UMSocialPlatformType shareType;
|
|
|
|
+
|
|
|
|
+ if ([type intValue] == 1) { // 微信好友
|
|
|
|
+ shareType = UMSocialPlatformType_WechatSession;
|
|
|
|
+ }else if ([type intValue] == 2){ /// qq好友
|
|
|
|
+ shareType = UMSocialPlatformType_QQ;
|
|
|
|
+ }else if ([type intValue] == 3){ // 朋友圈
|
|
|
|
+ shareType = UMSocialPlatformType_WechatTimeLine;
|
|
|
|
+ }else{
|
|
|
|
+ shareType = UMSocialPlatformType_WechatSession;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ kMainQueue((^{
|
|
|
|
+
|
|
|
|
+ // 没有安装app 不走分享逻辑
|
|
|
|
+ if ([type intValue] == 1 || [type intValue] == 3) {
|
|
|
|
+ if ([LXUserDefaults isInstallWeiXin] != 1) {
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudOnlyText:@"没有安装微信" delay:1.5];
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 没有安装app 不走分享逻辑
|
|
|
|
+ if ([type intValue] == 2) {
|
|
|
|
+ if (![[UMSocialManager defaultManager] isInstall:UMSocialPlatformType_QQ]) {
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudOnlyText:@"没有安装QQ" delay:1.5];
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //创建分享消息对象
|
|
|
|
+ UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
|
|
|
|
+ //创建网页内容对象
|
|
|
|
+ UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:title descr:content thumImage:[UIImage imageNamed:@"logo"]];
|
|
|
|
+ //设置网页地址
|
|
|
|
+ shareObject.webpageUrl = link;
|
|
|
|
+ messageObject.shareObject = shareObject;
|
|
|
|
+ //调用分享接口
|
|
|
|
+ [[UMSocialManager defaultManager] shareToPlatform:shareType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
|
|
|
|
+ if (error) {
|
|
|
|
+ NSLog(@"22222222%@",error.userInfo);
|
|
|
|
+ if (error.userInfo[@"message"] && [error.userInfo[@"message"] containsString:@"Operation is cancel"]) {
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudOnlyText:@"取消分享" delay:1];
|
|
|
|
+ }else{
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showHudOnlyText:error.userInfo[@"message"] delay:1];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ NSString *textJS = [NSString stringWithFormat:@"shareCallBack('%@','%@')",type,@"0"];
|
|
|
|
+ JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ [context evaluateScript:textJS];
|
|
|
|
+
|
|
|
|
+ }else{
|
|
|
|
+ if ([data isKindOfClass:[UMSocialShareResponse class]]) {
|
|
|
|
+ UMSocialShareResponse *resp = data;
|
|
|
|
+ NSLog(@"33333%@",resp.message);
|
|
|
|
+ NSLog(@"44444%@",resp.originalResponse);
|
|
|
|
+
|
|
|
|
+ NSString *textJS = [NSString stringWithFormat:@"shareCallBack('%@','%@')",type,@"1"];
|
|
|
|
+ JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ [context evaluateScript:textJS];
|
|
|
|
+
|
|
|
|
+ }else{
|
|
|
|
+ UMSocialLogInfo(@"response data is %@",data);
|
|
|
|
+ NSLog(@"55555%@",data);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }];
|
|
|
|
+ }));
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 登录时获取到令牌 并保存
|
|
|
|
+-(void)jsSaveUserToken:(NSString *)token{
|
|
|
|
+ NSLog(@"登陆成功");
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] hideHud];
|
|
|
|
+ [LXUserDefaults saveToken:token];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 取本地的用户令牌
|
|
|
|
+-(NSString *)jsGetUserToken:(NSString *)str{
|
|
|
|
+ NSLog(@"取用户token");
|
|
|
|
+ return [LXUserDefaults token];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 退出时 清空用户数据
|
|
|
|
+-(void)jsRemoveUserToken:(NSString *)str{
|
|
|
|
+ NSLog(@"清除用户token");
|
|
|
|
+ [LXUserDefaults clearAll];
|
|
|
|
+ // [[LXDataBaseManager shareDataBaseManager] clearAll];
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 手机通知权限是否打开
|
|
|
|
+-(int)jsCheckNoticePermission:(NSString *)str{
|
|
|
|
+ int a = [LXUserDefaults notifyState];
|
|
|
|
+ return a;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 跳转到系统设置
|
|
|
|
+-(void)jsOpenSystemNotification:(NSString *)str{
|
|
|
|
+ self.updateNotify = YES;
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 调用js方法 刷新推送权限状态
|
|
|
|
+-(void)updateNotifyState{
|
|
|
|
+ if (self.updateNotify) {
|
|
|
|
+ self.updateNotify = NO;
|
|
|
|
+ JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ NSString * textJS1 = [NSString stringWithFormat:@"updateNoticeSwitch()"];
|
|
|
|
+ [context evaluateScript:textJS1];
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+// 获取推送id
|
|
|
|
+-(NSString *)jsGetPushRid:(NSString *)str{
|
|
|
|
+ return [LXUserDefaults registrationID];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 按通知取数据
|
|
|
|
+-(NSString *)jsGetMessageList:(NSString *)openid{
|
|
|
|
+ NSArray *arr = [[LXDataBaseManager shareDataBaseManager] getMessageWithKey:nil openid:openid fromTable:kNewsTable start:0 length:100];
|
|
|
|
+ if (arr.count > 0) {
|
|
|
|
+ return [[LXViewControllerManager shareViewControllerManager] getJsonStr:arr];
|
|
|
|
+ }
|
|
|
|
+ return @"";
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 更新消息状态
|
|
|
|
+-(void)jsUpdateMessageState:(NSNumber *)lxID state:(NSNumber *)state{
|
|
|
|
+ [[LXDataBaseManager shareDataBaseManager] changeReadedWithID:lxID state:state];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 删除一条数据
|
|
|
|
+-(void)jsDeleteMessageById:(NSNumber *)lxID{
|
|
|
|
+ [[LXDataBaseManager shareDataBaseManager] deleteMessage:lxID fromTable:kNewsTable];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 取单条数据
|
|
|
|
+-(NSString *)jsGetMessage:(NSString *)lxID{
|
|
|
|
+ return [[LXViewControllerManager shareViewControllerManager] getJsonStr:[[LXDataBaseManager shareDataBaseManager] getMessageWithKey:lxID openid:nil fromTable:kNewsTable start:0 length:0]];
|
|
|
|
+}
|
|
|
|
+// 取未读消息总数
|
|
|
|
+-(int)jsGetUnReadMessageCount:(NSString *)openid{
|
|
|
|
+ NSLog(@"openid=%@",openid);
|
|
|
|
+ // NSLog(@"%d",[[LXDataBaseManager shareDataBaseManager] getUnReadMessageCount:openid]);
|
|
|
|
+// if([[LXDataBaseManager shareDataBaseManager] getUnReadMessageCount:openid] ==0){
|
|
|
|
+// //显示
|
|
|
|
+// kMainQueue(^{
|
|
|
|
+// [self.tabBarController.tabBar hideBadgeOnItemIndex:3];
|
|
|
|
+// });
|
|
|
|
+// }else {
|
|
|
|
+// kMainQueue(^{
|
|
|
|
+// [self.tabBarController.tabBar showBadgeOnItemIndex:3];
|
|
|
|
+// });
|
|
|
|
+// }
|
|
|
|
+ return [[LXDataBaseManager shareDataBaseManager] getUnReadMessageCount:openid];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 全部置为已读
|
|
|
|
+-(void)jsUpdateAllUnReadMessage:(NSString *)openid{
|
|
|
|
+ [[LXDataBaseManager shareDataBaseManager] updateAllUnReadMessage:openid];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 改变状态栏文字颜色
|
|
|
|
+-(void)jsLightStatusBar:(NSString *)status{
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ NSInteger index = 0;
|
|
|
|
+ if ([status intValue] == 1) {
|
|
|
|
+ index = 1;// hei
|
|
|
|
+ }else{
|
|
|
|
+ index = 0;// bai
|
|
|
|
+ }
|
|
|
|
+ [[UIApplication sharedApplication] setStatusBarStyle:index];
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+// 打开新页面 加载新web
|
|
|
|
+-(void)jsOpenExternalLink:(NSString *)url title:(NSString *)title{
|
|
|
|
+ if (url) {
|
|
|
|
+ if ([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable || [AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusUnknown) {
|
|
|
|
+ // [self addNoNetViews];
|
|
|
|
+ }
|
|
|
|
+ NewWebController *ctr = [[NewWebController alloc] init];
|
|
|
|
+ ctr.url = url;
|
|
|
|
+ // 有title的话 会显示自定义的导航栏 没有的话不显示导航栏 显示加载进度条
|
|
|
|
+ if (!title || [title isEqualToString:@""] || [title isEqualToString:@"undefined"]) {
|
|
|
|
+ ctr.titleShow = nil;
|
|
|
|
+ }else{
|
|
|
|
+ ctr.titleShow = title;
|
|
|
|
+ }
|
|
|
|
+ kMainQueue(^{
|
|
|
|
+ [self presentViewController:ctr animated:NO completion:nil];
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 获取当前版本号
|
|
|
|
+-(NSString *)jsGetVersion:(NSString *)str{
|
|
|
|
+ return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// web是否可退回上页面
|
|
|
|
+-(int)jsIsCanBack:(NSString *)str{
|
|
|
|
+ return self.webView.canGoBack ? 1:0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 弹框
|
|
|
|
+-(void)jsAlert:(NSString *)content{
|
|
|
|
+ [[LXViewControllerManager shareViewControllerManager] showAlertViewWithMessage:content];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 是否安装微信
|
|
|
|
+-(int)jsIsInstallWeixin:(NSString *)str{
|
|
|
|
+ return [LXUserDefaults isInstallWeiXin];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+-(void)jsChangeMessageType:(NSString *)link
|
|
|
|
+{
|
|
|
|
+ //已读操作处理
|
|
|
|
+ NSLog(@"已读操作处理-更改");
|
|
|
|
+ [[LXDataBaseManager shareDataBaseManager] changeCatagoryTypeWithURL:link];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+-(void)jsOpenActivityPage:(NSString *)url rectype:(NSString *)rectype openid:(NSString *)openid
|
|
|
|
+{
|
|
|
|
+ NSDictionary * infoDic = @{@"url":url,
|
|
|
|
+ @"rectype":rectype,
|
|
|
|
+ @"openid":openid,
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ // NSString *textJS = [NSString stringWithFormat:@"messageAccept('%@','%@','%@')",infoDic[@"mid"],infoDic[@"rectype"],infoDic[@"openid"]];
|
|
|
|
+ // JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
|
|
|
|
+ // [context evaluateScript:textJS];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //post请求
|
|
|
|
+ NSLog(@"%@",[NSString stringWithFormat:@"%@jyapp/free/message/receive",kHost]);
|
|
|
|
+ [[LXNetworkManager shareLXNetworkManager]postWithURLStr:[NSString stringWithFormat:@"%@jyapp/free/message/receive",kHost] parameters:infoDic progress:^(NSProgress *progress) {
|
|
|
|
+ NSLog(@"成功:%@",progress);
|
|
|
|
+ } success:^(id responseObject) {
|
|
|
|
+ NSLog(@"responseObject=%@",responseObject);
|
|
|
|
+ } failure:^(NSError *error) {
|
|
|
|
+ NSLog(@"error=%@",error);
|
|
|
|
+ }];
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+-(NSString *)jsGGetCipherText:(NSString *)phone
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+ NSDate *date=[NSDate date];
|
|
|
|
+ NSDateFormatter *format1=[[NSDateFormatter alloc] init];
|
|
|
|
+ [format1 setDateFormat:@"yyyyMMddhhmmss"];
|
|
|
|
+ NSString *dateStr;
|
|
|
|
+ dateStr=[format1 stringFromDate:date];
|
|
|
|
+ NSLog(@"%@",dateStr);
|
|
|
|
+
|
|
|
|
+ NSString *content = [[NSString stringWithFormat:@"%@_%@",phone,dateStr] stringByAppendingString:[NSString stringWithFormat:@"_%@",[LXMD5 md532BitLower:[NSString stringWithFormat:@"%@&%@",phone,dateStr]]]];
|
|
|
|
+ NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding];
|
|
|
|
+ NSUInteger dataLength = contentData.length;
|
|
|
|
+ // 为结束符'\\0' +1
|
|
|
|
+ char keyPtr[kKeySize_0 + 1];
|
|
|
|
+ memset(keyPtr, 0, sizeof(keyPtr));
|
|
|
|
+ [AesKey_0 getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
|
|
|
|
+ // 密文长度 <= 明文长度 + BlockSize
|
|
|
|
+ size_t encryptSize = dataLength + kCCBlockSizeAES128;
|
|
|
|
+ void *encryptedBytes = malloc(encryptSize);
|
|
|
|
+ size_t actualOutSize = 0;
|
|
|
|
+ NSData *initVector = [kInitVector_0 dataUsingEncoding:NSUTF8StringEncoding];
|
|
|
|
+ CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
|
|
|
|
+ kCCAlgorithmAES,
|
|
|
|
+ kCCOptionPKCS7Padding, // 系统默认使用 CBC,然后指明使用 PKCS7Padding
|
|
|
|
+ keyPtr,
|
|
|
|
+ kKeySize_0,
|
|
|
|
+ initVector.bytes,
|
|
|
|
+ contentData.bytes,
|
|
|
|
+ dataLength,
|
|
|
|
+ encryptedBytes,
|
|
|
|
+ encryptSize,
|
|
|
|
+ &actualOutSize);
|
|
|
|
+ if (cryptStatus == kCCSuccess) {
|
|
|
|
+ // 对加密后的数据进行 base64 编码
|
|
|
|
+ return [[NSData dataWithBytesNoCopy:encryptedBytes length:actualOutSize] base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
|
|
|
|
+ }
|
|
|
|
+ free(encryptedBytes);
|
|
|
|
+ return nil;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+-(void)jsRedirectKeyset:(NSString*)str
|
|
|
|
+{
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ [[NSNotificationCenter defaultCenter] postNotificationName:@"refreshDY" object:nil userInfo:nil];
|
|
|
|
+
|
|
|
|
+ [self performSelector:@selector(nextVC) withObject:nil afterDelay:0.5];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+-(void)nextVC
|
|
|
|
+{
|
|
|
|
+ AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
|
|
|
|
+ JYTabBarController *tab = (JYTabBarController *)delegate.window.rootViewController;
|
|
|
|
+ tab.selectedIndex = 1;
|
|
|
|
+
|
|
|
|
+ [self webViewFirstRequest];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+//通知刷新页面
|
|
|
|
+-(void)refreshSS:(NSNotification *)notificaition{
|
|
|
|
+
|
|
|
|
+ expRefreshBool = YES;
|
|
|
|
+ [self webViewFirstRequest];
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+#pragma mark - Navigation
|
|
|
|
+
|
|
|
|
+// In a storyboard-based application, you will often want to do a little preparation before navigation
|
|
|
|
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
|
|
|
+ // Get the new view controller using [segue destinationViewController].
|
|
|
|
+ // Pass the selected object to the new view controller.
|
|
|
|
+}
|
|
|
|
+*/
|
|
|
|
+
|
|
|
|
+@end
|