私は同じ問題があり、の代わりにWKWebView
を使用して解決しました。 Webコンテンツを表示するためのこの新しい実装は、Appleで推奨されているものです。UIWebViewは廃止予定になっているようです。
この新しいオブジェクトに関する1つの点は、JavaScriptを評価する方法が非同期であることです。したがって、同期メソッドを使用してuserAgentをフェッチする場合は、hereのようにWKWebViewの独自のカテゴリを作成する必要があります。
コードは、この
@interface WKWebView(SynchronousEvaluateJavaScript)
- (NSString *)stringByEvaluatingJavaScript:(NSString *)script;
@end
@implementation WKWebView(SynchronousEvaluateJavaScript)
- (NSString *)stringByEvaluatingJavaScript:(NSString *)script
{
__block NSString *resultString = nil;
[self evaluateJavaScript:script completionHandler:^(id result, NSError *error) {
if (error == nil) {
if (result != nil) {
resultString = [NSString stringWithFormat:@"%@", result];
}
} else {
NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
}
}];
while (resultString == nil)
{
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
return resultString;
}
@end
のようなものであるべきで、呼び出しが以前よりも全く同じである:
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero];
defaultUserAgent = [webView stringByEvaluatingJavaScript:@"navigator.userAgent"];
どのようにユーザーエージェント文字列を取得していますか? –
別のアプリのwebviewがhttp_user_agentを「iPad」として送信しました。だから、この問題はアプリ側の問題です。これらの2つのアプリケーションのコードの違いを確認します。 –
私のPHPコードではl'L'I ... echo $ _SERVER ['HTTP_USER_AGENT']; –