我正在尝试在iPhone和iPad之间切换uiwebview的用户代理。所以要有一个从iPad用户代理改变为iPhone用户代理并向后改变的按钮。多次更改用户代理
我发现这个链接:http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview
不幸的是,用户代理只能更改一次,即使我重新创建一个UIWebView。
有没有人有关于如何做的想法?
顺便说一句,我也尝试在urlrequest头设置用户代理,没有成功。
谢谢
我正在尝试在iPhone和iPad之间切换uiwebview的用户代理。所以要有一个从iPad用户代理改变为iPhone用户代理并向后改变的按钮。多次更改用户代理
我发现这个链接:http://www.mphweb.com/en/blog/easily-set-user-agent-uiwebview
不幸的是,用户代理只能更改一次,即使我重新创建一个UIWebView。
有没有人有关于如何做的想法?
顺便说一句,我也尝试在urlrequest头设置用户代理,没有成功。
谢谢
我也是,我一直只能设置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构建。 任何线索?
试试这个
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中,和空间是不自动添加。
appendUA(@" ====TEST_UA====");
WKWebView *wkWebView = [WKWebView new];
//...
“用户代理只能更改一次,即使我重新创建了uiwebview。” - 如果你在创建两个webviews之间重新设置'NSUserDefaults'中的值?这似乎适用于那个评论该帖子的人。 – 2013-02-26 20:43:28
更新:似乎用户代理可以通过重置NSUserDefaults值多次更改,但只能在设备上,而不能在模拟器上更改。 – user1175019 2013-03-28 10:55:01