最近重构了一个项目,中间大量运用了原生的项目与web的交互,因为此前接触的web仅仅只是展示一下内容,如企业的注册协议及联系方式等信息。因此学习并整理了一下中间的用法,希望给有需要的人参考。
//当程序以UIWebView以loadRequest进行加载的时候就会调用到此函数,然后执行webViewDidStartLoad函数,所以我们可以在此函数中进行一些请求解析,URL地址分析的工作。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
- {
- NSURL * url = [request URL];
- NSString *str =[url absoluteString];
- if ([str rangeOfString:@"webSetTitle" options:NSCaseInsensitiveSearch].length>0) {
- NSString *title = [[[url path] componentsSeparatedByString:@"/"] objectAtIndex:2];
- NSString *dataGBK = [title stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- [self setWebSetTitle:dataGBK];
- return YES;
- }else if ([str rangeOfString:@"webGetSession" options:NSCaseInsensitiveSearch].length>0){
- NSString *callback = [[[url path] componentsSeparatedByString:@"/"] objectAtIndex:1];
- [self getNativeSessionID:callback];
- return YES;
- }else if ([str rangeOfString:@"webLogin" options:NSCaseInsensitiveSearch].length>0){
- NSString *callback = [[[url path] componentsSeparatedByString:@"/"] objectAtIndex:1];
- [self getWebLogin:callback];
- [[NSUserDefaults standardUserDefaults] setObject:callback forKey:@"callback"];
- [[NSUserDefaults standardUserDefaults] synchronize];
- return YES;
- }else if ([str rangeOfString:@"webGoHome" options:NSCaseInsensitiveSearch].length>0){
- NSString *page = [[[url path] componentsSeparatedByString:@"/"] objectAtIndex:2];
- [self popPage:page];
- return YES;
- }else if ([str rangeOfString:@"webPayOrder" options:NSCaseInsensitiveSearch].length>0){
- NSString * callback = [[[url path] componentsSeparatedByString:@"/"] objectAtIndex:1];
- NSString * orderInfo =[[[url path] componentsSeparatedByString:@"/"] objectAtIndex:2];
- [self getWebPayOrder:callback andOrderInfo:orderInfo];
- return YES;
- }
- return YES;
- }
- -(void)getNativeSessionID:(NSString *)callback{
- NSString * sessionId = @"" ;
- if (USER_SESSODONID) {
- sessionId = USER_SESSODONID;
- }
- NSString * callbackFunction = [NSString stringWithFormat:@"%@('%@')",callback,sessionId];
- [_web stringByEvaluatingJavaScriptFromString:callbackFunction];
- }