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

btf*_*f89 10 user-agent request cordova visual-studio-2015

如何在Cordova App中设置用户代理?我在VS 2015中编写了Cordova App,我需要从其他来源下载数据.此源以xml格式返回数据,但是当用户代理是移动的时,此源重定向会执行移动站点.我需要将User Agent更改为桌面浏览器.数据源不是我的,不能改变它.

BBi*_*ios 14

这取决于您使用的cordova-android和cordova-ios的版本.

您可以通过运行检查平台cordova版本 cordova platform list

如果使用的是4.0及以上版本iOS和Android的,你可以将它们设置在config.xml中为科尔多瓦文档中所述这里

<preference name="OverrideUserAgent" value="Mozilla/5.0 My Browser" />

如果您使用的是4.0及更低版本,则需要使用本机代码进行设置,如下所示.(此代码显示如何追加并可以修改以完全替换)

在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"]];
Run Code Online (Sandbox Code Playgroud)

在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);

}
Run Code Online (Sandbox Code Playgroud)


Ali*_*chi 6

使用https://github.com/LouisT/cordova-useragent等插件

要安装插件,请使用Cordova CLI并输入以下内容:cordova plugin add https://github.com/LouisT/cordova-useragent

设置User-Agent:UserAgent.set(useragent)

获取当前的User-Agent:UserAgent.get(function(ua){})

将User-Agent设置回默认值:UserAgent.reset()