/**************************WebView的代理方法*******************/
//webView 加载结束调用此方法
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//objc调用Js /** getMessageFromApp('%@') 是JS中的方法***/
NSString *jsCode = [NSString stringWithFormat:@"getMessageFromApp('%@')",@"我是app发来的消息"];
//app向 js发送信息调用此方法
[_myWebVIew stringByEvaluatingJavaScriptFromString:jsCode];
//app发送的消息将会显示在网页上
}
//js向app提交信息时的回调方法
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
//从回调方法里app可以截获Js提交的信息
NSString *requestString = [[request URL] absoluteString]; //获取请求的绝对路径
NSString *requestStrJm = [self URLDecodedString:requestString];//将截获的信息解码
NSLog(@"截获的信息====%@",requestStrJm);
//======信息判断==========
NSArray *commponents = [requestStrJm componentsSeparatedByString:@":"]; //提交请求时候分割参数的分隔符
if ([commponents count] > 1 && [(NSString *)[commponents objectAtIndex:0] isEqualToString:@"testapp"]) {
if ([(NSString *)[commponents objectAtIndex:1] isEqualToString:@"alert"]) {
NSString *message = (NSString *)[commponents objectAtIndex:2];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"下面是js向app提交的信息" message:message delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
[alert show];
}
return NO;
}
return YES;
}
#pragma mark -------------- url 解码 -----------------
-(NSString *)URLDecodedString:(NSString *)str
{
NSString *decodedString=(__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)str, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
return decodedString;
}