cordova - 我如何在 Cordova 应用程序中设置用户代理

标签 cordova request visual-studio-2015 user-agent

如何在 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/

相关文章:

android - 添加新插件后 cordova_plugins.js 未更新

asp.net - 如何使用asp.net webapi获取Json Post值

node.js - Node Express 未发送自定义错误消息

git - Visual Studio 2015 git 出错

android - 屏幕自动锁定后继续运行应用程序 - Phonegap (Android/iOS)

android - Cordova Android 应用程序视频背景不适用于 Android Kitkat 4.4.4。它给黑色背景。它适用于 Lollipop

android - Windows 8.1 - ANDROID_HOME' 环境变量设置为 ionic 项目的不存在路径

html - 如何通过ajax请求发送html内容?

c++ - 损坏的虚拟表 visual studio 错误

c# - 在 Visual Studio 2015 中观看图标和项目