我正在尝试在iPhone和iPad之间切换用户代理以获取uiwebview。因此,要有一个按钮,将从iPad用户代理更改为iPhone用户代理并向后。
我找到了这个链接:http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview
不幸的是,即使重新创建uiwebview,用户代理也只能更改一次。
有没有人知道如何做到这一点?
顺便说一句,我也尝试在urlrequest标头中设置用户代理,但没有成功。
由于
答案 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];
//...