2016-06-28 3 views
0

は、ここに私のコードです:のiOSのUIWebViewは動作しない追加の文字列でのUserAgentを設定

- (void)viewDidLoad { 
[super viewDidLoad]; 
NSURL *url = [NSURL URLWithString:urlString]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
// NSString *tagString = @"Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69/YoyaOrg-iOS"; 
// NSString *tag = @"YoyaOrg-iOS"; 
NSString *defaultUserAgent = [self.mainWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; 
NSString *newUserAgent = [NSString stringWithFormat:@"%@ YoyaOrg-iOS",defaultUserAgent]; 
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:newUserAgent, @"UserAgent", nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; 
self.mainWebView.scrollView.bounces = NO; 
[self.mainWebView loadRequest:request]; 
} 
NSLog(@"webUserAgent:%@",defaultUserAgent); 

アペンド文字列の後に「YoyaOrg-のiOS」が、私はUserAgentのを交換する.IFログ出力はまだ「YoyaOrg-のiOS」が含まれていません以下のように:

NSString *tagString = @"Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13F69/YoyaOrg-iOS"; 
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:tagString, @"UserAgent", nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; 

はその後、私が手userAgentには、私が何をしたいです。私はそれを作ることができず、多くの時間を無駄にしていました。 TKSは答えを求めます。どんな助けでも TKS!

答えて

0

私はユーザーエージェントを変更する方法も探しています。 [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":customUserAgent}];のようなコードを使用してwebviewをインスタンス化するときにユーザーエージェントを変更し、webViewDidFinishLoad:のコードNSLog(@"UserAgent = %@", [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]);を使用してユーザーエージェントを印刷して、ユーザーエージェントが変更されているかどうかを確認することを学びました。その後、

私はWebViewの前にコード[webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]を置けば私が見つけたが、結果は、ユーザエージェントが変更されていませんが、私は使用して書いても、OC-JS対話コードだけではありません。この

 NSString *userAgent = [_webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; 
    NSString *mystring = @" mystring"; 
    NSString *customUserAgent = [userAgent stringByAppendingString:mystring]; 

    [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":customUserAgent}]; 

のように、URLリクエストをロードJavaScriptCoreは無効です!

これを修正する方法が見つかりました。何もしないデフォルトのユーザーエージェントを取得するためのinit UIWebView。 は、ここではデフォルトのユーザーエージェント文字列を追加するために、私の最終的な解決策です:

_webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
    _webView.scalesPageToFit = YES; 

    //init another webView to get the default user agent 
    NSString *userAgent = [[[UIWebView alloc] init] stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; 
    NSString *mystring = @" mystring"; 
    NSString *customUserAgent = [userAgent stringByAppendingString:mystring]; 

    [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":customUserAgent}]; 

これがスムーズに動作します:)

1

ちょうどあなたのユーザーエージェントへのpostfixを置くためにあなたのAppDelegateにdidFinishLaunchingWithOptions機能で次の操作を行います。 swift

/* changing User Agent system-wide */ 
    UserDefaults.standard.register(
     defaults: [ 
      "UserAgent" : "\(UIWebView().stringByEvaluatingJavaScript(from: "navigator.userAgent;")) YOUR_POSTFIX_TO_USER_AGENT" 
     ] 
    ) 

新しいユーザーエージェントの場合は、UIWebView().stringByEvaluatingJavaScript(from: "navigator.userAgent;")コールを取り除く必要があります。

関連する問題