我正在嘗試在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