Search code examples
objective-cuiwebviewios9user-agentnsmutableurlrequest

iOS9 UIWebView refusing to use custom User-Agent string


I'm trying to set custom user agent on my UIWebView, but am running into an issue where it seems to refuse to do so - the user agent string stays the same.

How do I properly change user agent string for UIWebView in iOS9 ?

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];   
 userAgent = @"Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36";
    [defaults setValue:userAgent forKey:@"UserAgent"];
    [defaults setValue:userAgent forKey:@"User-Agent"];

I also tried:

 NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:theURL];
    [request addValue:@"Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36" forHTTPHeaderField:@"User-Agent"];
//
    [self.webView loadRequest:request];

At runtime

//Web view user-agent: Mozilla/5.0 (iPad; CPU OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E238

Solution

  • What you need is as follow:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *userAgent = @"Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36";
    [defaults registerDefaults:@{ @"UserAgent" : userAgent }];
    

    The key thing is that you use registerDefaults: instead of setValue:forKey: