ios 修改webview的 ua

本文介绍了一种在iOS应用中修改WebView默认UserAgent的方法,并通过一个具体实现案例展示了如何结合应用程序的版本信息定制UserAgent字符串。



转)iOS中修改WebView默认的User Agent


使用了第二种方法,略作修改,



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    //欢迎页显示3秒
    [NSThread sleepForTimeInterval:2.0];

    //修改app默认UA
    @autoreleasepool {
        UIWebView* tempWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
        NSString* userAgent = [tempWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
//        NSLog(@"------%@",userAgent);
        NSString *executableFile = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleExecutableKey];
        NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey];
        NSString *ua = [NSString stringWithFormat:@"%@ %@/%@",
                        userAgent,
                        executableFile,version];
//        NSLog(@"------%@",ua);
        
        [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent" : ua, @"User-Agent" : ua}];
#if !__has_feature(objc_arc)
        [tempWebView release];
#endif
    }
}

在网页中查看效果

//在Safari中打开文章中的文档
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
    NSLog(@"ua=======%@",[request valueForHTTPHeaderField:@"User-Agent" ]);
    //判断是否是单击
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        NSURL *url = [request URL];
        [[UIApplication sharedApplication]openURL:url];
        return NO;
    }
    return YES;
}




iOS系统中,修改user - agent有以下几种情况和方法: ### 针对UIWebView - **获取原User - Agent**:可以使用以下代码获取原来的User - Agent。 ```objc NSString *oldUserAgent = [[[UIWebView alloc]init] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; ``` - **修改全局User - Agent值**:在原有基础上拼接自定义的字符串,可在`application:didFinishLaunchingWithOptions:`方法中修改app默认UA。示例代码如下: ```objc -(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{ //欢迎页显示3秒 [NSThread sleepForTimeInterval:2.0]; //修改app默认UA @autoreleasepool{ UIWebView* tempWebView = [[UIWebView alloc] initWithFrame:CGRectZero]; NSString* userAgent = [tempWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; //NSLog(@"------%@",userAgent); NSString* executableFile = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleExecutableKey]; NSString* version = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey]; NSString* ua = [NSString stringWithFormat:@"%@ %@/%@", userAgent, executableFile, version]; //NSLog(@"------%@",ua); [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":ua, @"User - Agent":ua}]; #if!__has_feature(objc_arc) [tempWebView release]; #endif } return YES; } ``` 需要注意的是,需要获取原来的UIWebView的User - Agent,然后拼接上自己新的User - Agent,直接替换原来的可能无效,修改User - Agent之后需要重新创建UIWebView加载网页。若需要在WebView使用过程中再次变更user - agent,则需要再通过这种方式修改user - agent,然后再重新实例化一个WebView [^1][^2][^4][^5]。 ### 针对WKWebView 获取原User - Agent的代码如下: ```objc [self evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable result, NSError * _Nullable error) { NSString *oldUserAgent = result; }]; ``` 不过引用中未提及WKWebView修改User - Agent的具体拼接和设置方法 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值