多次更改用户代理

时间:2013-02-26 20:11:10

标签: iphone ios uiwebview

我正在尝试在iPhone和iPad之间切换用户代理以获取uiwebview。因此,要有一个按钮,将从iPad用户代理更改为iPhone用户代理并向后。

我找到了这个链接:http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview

不幸的是,即使重新创建uiwebview,用户代理也只能更改一次。

有没有人知道如何做到这一点?

顺便说一句,我也尝试在urlrequest标头中设置用户代理,但没有成功。

由于

2 个答案:

答案 0 :(得分:1)

我也是,我只能设置一次UserAgent。然后我不能再改变了。我也尝试过模拟器和设备。同样的麻烦。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSDictionary *dictionary = @{@"UserAgent" : @"MyOWnUserAgent_2"};
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
}

我不使用网络浏览量。我只是打电话:

NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:urlRequest] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)

我清理了,从设备上删除了应用程序,我重建了,我退出了,重新启动,重建......问题仍然存在。我在OS X 10.11.5(15F34)上运行XCode 7.3(7D175),并针对Deploymen Target iOS 9.1,Base SDK iOS 9.3进行构建。 任何线索?

答案 1 :(得分:0)

试试这个

static void appendUA(NSString *uaStr) {
    if (!uaStr)
        return;

    UIWebView *tempWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
    NSString *secretAgent = [tempWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
    secretAgent = [secretAgent stringByAppendingString:uaStr];
    NSDictionary<NSString *, id> *domain = [[NSUserDefaults standardUserDefaults] volatileDomainForName:NSRegistrationDomain];
    if (domain) {
        NSMutableDictionary<NSString *, id> *newDomain = [domain mutableCopy];
        [newDomain setObject:secretAgent forKey:@"UserAgent"];
        domain = newDomain;
    } else {
        domain = [[NSDictionary alloc]
                  initWithObjectsAndKeys:secretAgent, @"UserAgent", nil];
    }

    [[NSUserDefaults standardUserDefaults] removeVolatileDomainForName:NSRegistrationDomain];
    [[NSUserDefaults standardUserDefaults] setVolatileDomain:domain forName:NSRegistrationDomain];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

您应该调用此函数之前创建WKWebview / UIWebView,并自动添加空格 NOT

    appendUA(@" ====TEST_UA====");
    WKWebView *wkWebView = [WKWebView new];
    //...