モバイル版ではなくデスクトップ版の Web サイト (Google、Facebook など) を読み込むにはどうすればよいですか?
2 に答える
なぜあなたはこのすべての面倒を経験しているのですか?これは間違った/長いアプローチです。
を作成し、ではなくその中にNSMutableRequest
を設定するだけです。次に、通常の/非プライベート関数でリクエストをロードします。useragent
UIWebView
UIWebView
loadRequest:
編集:これはすべて無視してください。ヤニフの権利。メッセージを使用NSMutableURLRequest
して をUIWebView
インスタンスにロードし、ヘッダーを必要なものに設定するだけです。- loadRequest:
"User-Agent"
NSMutableURLRequest *rq = [NSMutableURLRequest requestWithURL:someUrl];
[rq setValue:@"Some desktop user-agent" forHTTPHeaderField:@"User-Agent"];
[webView loadRequest:rq];
参考までに、デスクトップ ユーザー エージェント文字列の適切な選択は Chrome の文字列です。これも Safari と同様に WebKit ベースであるため、WebKit 固有の拡張機能が機能します。したがって、ユーザーエージェント文字列を次のように設定してみてください
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (Gecko のような KHTML) Chrome/23.0.1271.6 Safari/537.11
元の投稿:
UIWebView のユーザー エージェントのスプーフィングを試すことはできますが、そのようなファット ハックで AppStore の薄いゲートを通過できるかどうかは保証できません...
void *object_getIvarPtr(id obj, const char *name)
{
Ivar iv = object_getInstanceVariable(obj, name, NULL);
off_t offset = ivar_getOffset(iv);
return (char *)obj + offset;
}
// In some initialization routine, after having created the web view
id webViewInternal = *(id *)object_getIvarPtr(someWebView, "_internal");
id webBrowserView = *(id *)object_getIvarPtr(webViewInternal, "browserView");
id webKitWebView = [webBrowserView webView];
NSString *desktopUAStr = @"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.6 Safari/537.11"
[webKitWebView setCustomUserAgent:desktopUAStr];