作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 Cordova 应用程序中设置用户代理?我在 VS 2015 中编写 Cordova 应用程序,我需要从其他来源下载数据。此源以 xml 格式返回数据,但当用户代理是移动设备时,此源将重定向到移动站点。我需要将用户代理更改为桌面浏览器。数据源不是我的,无法更改。
最佳答案
这取决于您使用的 cordova-android 和 cordova-ios 版本。
您可以通过运行 cordova platform list
检查平台 cordova 版本
如果您在 iOS 和 Android 上使用 4.0 及以上版本,您可以按照 cordova 文档 here 中所述在 config.xml 中设置它们。
<preference name="OverrideUserAgent" value="Mozilla/5.0 My Browser" />
如果您使用的是4.0及以下版本,则需要在 native 代码中进行如下设置。(此代码展示了如何追加并且可以修改以完全替换)
在 iOS 中你可以这样做
在AppDelegate.m中,didfinishlaunchingwithoptions方法
UIWebView* sampleWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSString* originalUserAgent = [sampleWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
self.viewController.baseUserAgent = [NSString stringWithFormat:@"%@ customAgent/%@ customAgent/%@",
originalUserAgent,CDV_VERSION,
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]];
在 Android 中你可以这样做
settings = webView.getSettings();
String userAgent = settings.getUserAgentString();
if (!settings.getUserAgentString().contains("customAgent")) {
PackageManager packageManager = this.cordova.getActivity().getPackageManager();
double versionCode;
try {
versionCode = packageManager.getPackageInfo(this.cordova.getActivity().getPackageName(), 0).versionCode;
} catch (PackageManager.NameNotFoundException e) {
versionCode = 1.0;
}
userAgent += " customAgent/" + CordovaWebView.CORDOVA_VERSION + " customAgent/" + versionCode + " (233)";
settings.setUserAgentString(userAgent);
}
关于cordova - 我如何在 Cordova 应用程序中设置用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32052221/
我是一名优秀的程序员,十分优秀!