#import
"ZrExamTrainDetailViewController.h"
#import
"CheckNetwork.h"
#import
< JavaScriptCore/JavaScriptCore.h >
@interface
ZrExamTrainDetailViewController ()
@property (nonatomic,strong)
UIWebView
*mWeb;
@property (nonatomic,strong)
UIActivityIndicatorView
*activityView;
@end
@implementation
ZrExamTrainDetailViewController
- (void)viewDidLoad
{
[super
viewDidLoad];
[self
initWeb];
[self
initActivity];
[self.navigationItem.leftBarButtonItem
setAction:@selector(goback)];
}
-(void)initWeb
{
_mWeb
=
[[UIWebView
alloc]
initWithFrame:CGRectMake(0,
0,
MAIN_WIDTH,
MAIN_HEIGHT-64)];
NSURL
*url = [NSURL
URLWithString:self.string];
// NSURL *url = [NSURL URLWithString:[NSString
stringWithFormat:@"%@examcourse/coursedetail?id=2&accessToken=%@",JC_SERVER_CLIENT,[LoginUserUtil
accessToken]]];
[_mWeb
loadRequest:[NSURLRequest
requestWithURL:url]];
_mWeb.backgroundColor
=
[UIColor
clearColor];
_mWeb.scrollView.bounces
=
NO;
_mWeb.scalesPageToFit
=
YES;
_mWeb.delegate
= self;
[self.view
addSubview:_mWeb];
}
-(void)initActivity
{
self.activityView
=
[[UIActivityIndicatorView
alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.activityView.frame
= CGRectMake(MAIN_WIDTH/2-20,
MAIN_HEIGHT/3,
40,
40);
[self.view
addSubview:self.activityView];
}
#pragma mark -------------------
UIWebview delegate---------------------------------
- (void)webViewDidStartLoad:(UIWebView
*)webView
{
[self.activityView
startAnimating];
//[self configJSContext];
}
- (void)webViewDidFinishLoad:(UIWebView
*)webView
{
NSString
*js = [NSString
stringWithFormat:@"getToken('%@')",[LoginUserUtil
accessToken]];
[_mWeb
stringByEvaluatingJavaScriptFromString:js];
BOOL
isWifi
= [CheckNetwork
checkNetworkStatusWhetherOrNotWifi];
[webView
stringByEvaluatingJavaScriptFromString:[NSString
stringWithFormat:@"pupWindeowByWifi(%d)",isWifi]];
[self.activityView
stopAnimating];
}
- (void)goback
{
if
(![_mWeb.request.URL.relativeString
containsString:self.string])
{
[_mWeb
goBack];
}
else
{
[self.navigationController
popViewControllerAnimated:YES];
}
}
-(void)configJSContext
{
JSContext
*context
= [_mWeb
valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
// 判断是否WiFi状态
context[@"isWifi"]
= ^() {
NSLog(@"+++++++Begin
Log+++++++");
NSArray
*args = [JSContext
currentArguments];
//
js传递的参数
for
(JSValue
*jsVal in
args) {
NSLog(@"%@",
jsVal);
}
JSValue
*this = [JSContext
currentThis];
NSLog(@"this:
%@",this);
BOOL
isWifi
= [CheckNetwork
checkNetworkStatusWhetherOrNotWifi];
int
ret = isWifi == YES
? 1
: 0;
NSLog(@"-------End
Log-------");
return
ret;
};
// 向Html传递Token
context[@"getAccessToken"]
= ^() {
NSLog(@"+++++++Begin
Log+++++++");
NSArray
*args = [JSContext
currentArguments];
//
js传递的参数
for
(JSValue
*jsVal in
args) {
NSLog(@"%@",
jsVal);
}
JSValue
*this = [JSContext
currentThis];
NSLog(@"this:
%@",this);
NSString
*token = [LoginUserUtil
accessToken];
NSLog(@"-------End
Log-------");
return
token;
};
context[@"videoCache"]
= ^() {//'%@', '%@', '%@', '%@','%@', '%@', '%@'
NSLog(@"+++++++Begin
Log+++++++");
NSArray
*args = [JSContext
currentArguments];
//
js传递的参数
//
存放js参数
NSMutableArray *parmArr
= [[NSMutableArray alloc]
init];
for
(JSValue
*jsVal in
args) {
NSLog(@"%@",
jsVal);
[parmArr addObject:[CommonUtil
string:jsVal]];
}
JSValue
*this = [JSContext
currentThis];
NSLog(@"this:
%@",this);
NSString
*picUrl
= [CommonUtil
stringCombine:@"picture/cover/"
string:parmArr[6]];
[self
videoCache:parmArr[0]
mp4:parmArr[1]
filename:parmArr[2]
contentLength:parmArr[3]
videolength:parmArr[4]provider:parmArr[5]
picurl:picUrl];
NSLog(@"-------End
Log-------");
};
}
-(BOOL)webView:(UIWebView
*)webView shouldStartLoadWithRequest:(NSURLRequest
*)request navigationType:(UIWebViewNavigationType)navigationType
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,
(int64_t)(0.8
*
NSEC_PER_SEC)),
dispatch_get_main_queue(),
^{
[self
configJSContext];
});
return YES;
}
- (void)webView:(UIWebView
*)webView didFailLoadWithError:(NSError
*)error {
NetworkErrorViewController *errorVC
= [NetworkErrorViewController new];
[self.navigationController
pushViewController:errorVC
animated:YES];
NSLog(@"Error:%@\nwebview载入失败",error.userInfo);
}
- (void)videoCache:(NSString
*)url mp4:(NSString
*)mp4 filename:(NSString
*)filename contentLength:(NSString
*)contentLength videolength:(NSString
*)videolength provider:(NSString
*)provider picurl:(NSString
*)picurl {
if
(!url) { return;
}
if
([url isEqualToString:@""])
{
[PubllicMaskViewHelper
showTipViewWith:@"无播放资源"
inSuperView:self.view
withDuration:1];
return;
}
// 构造字典
视频详情参数
NSMutableDictionary *info
= [[NSMutableDictionary alloc]
init];
[info setValue:url
forKey:@"url"];
[info setValue:mp4
forKey:@"type"];
[info setValue:filename
forKey:@"name"];
[info setValue:provider
forKey:@"provider"];
[info setValue:contentLength
forKey:@"size"];
[info setValue:picurl
forKey:@"cover"];
BOOL
isExist
= [[CacheHelper
shareInstance]
isExistInSqlite:info];
if
(isExist == YES)
{
[PubllicMaskViewHelper
showTipViewWith:@"已缓存"
inSuperView:self.view
withDuration:1];
}
else{
[[CacheHelper
instance:info]
show];
}
}
@end