设置UserAgent
默认UserAgent定义
从API version 11起,Web组件基于ArkWeb的内核,默认UserAgent定义如下:
Mozilla/5.0 ({deviceType}; {OSName} {OSVersion}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/{ArkWeb VersionCode} {Mobile}
字段含义备注deviceType装备类型通过系统参数const.product.devicetype映射得到。OSName发行版操作系统名称通过系统参数const.product.os.dist.name得到。OSVersion发行版操作系统版本通过系统参数const.product.os.dist.version剖析版本号得到。ArkWeb VersionCodeArkWeb版本号-Mobile(可选)是否是手机装备- 举例:
Mozilla/5.0 (Phone; OpenHarmony5.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile
发起通过ArkWeb关键字辨认是否是HarmonyOS装备以及web内核是否为ArkWeb,同时可以通过deviceType辨认装备类型用于差别装备上的页面表现
使用场景
在下面的示例中,通过getUserAgent()接口获取当前默认用户代理,支持开发者基于默认的UserAgent去定制UserAgent。
- // xxx.ets
- import { webview } from '@kit.ArkWeb';
- import { BusinessError } from '@kit.BasicServicesKit';
- @Entry
- @Component
- struct WebComponent {
- controller: webview.WebviewController = new webview.WebviewController();
- build() {
- Column() {
- Button('getUserAgent')
- .onClick(() => {
- try {
- let userAgent = this.controller.getUserAgent();
- console.log("userAgent: " + userAgent);
- } catch (error) {
- console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
复制代码 加载的html文件。
- // xxx.ets
- import { webview } from '@kit.ArkWeb';
- import { BusinessError } from '@kit.BasicServicesKit';
- @Entry
- @Component
- struct WebComponent {
- controller: webview.WebviewController = new webview.WebviewController();
- @State ua: string = "";
- aboutToAppear(): void {
- webview.once('webInited', () => {
- try {
- // 应用侧用法示例,定制UserAgent。
- this.ua = this.controller.getUserAgent() + 'xxx';
- this.controller.setCustomUserAgent(this.ua);
- } catch (error) {
- console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
- }
- })
- }
- build() {
- Column() {
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
复制代码 在下面的示例中,通过setCustomUserAgent()接口设置自定义用户代理,会覆盖系统的用户代理。
当Web组件src设置了url时,发起在onControllerAttached回调变乱中设置UserAgent,设置方式请参考示例。不发起将UserAgent设置在onLoadIntercept回调变乱中,会概率性出现设置失败。如果未在onControllerAttached回调变乱中设置UserAgent。再调用setCustomUserAgent方法时,可能会出现加载的页面与实际设置UserAgent不符的非常征象。
当Web组件src设置为空字符串时,发起先调用setCustomUserAgent方法设置UserAgent,再通过loadUrl加载详细页面。
- // xxx.ets
- import { webview } from '@kit.ArkWeb';
- import { BusinessError } from '@kit.BasicServicesKit';
- @Entry
- @Component
- struct WebComponent {
- controller: webview.WebviewController = new webview.WebviewController();
- @State customUserAgent: string = 'test';
- build() {
- Column() {
- Web({ src: 'www.example.com', controller: this.controller })
- .onControllerAttached(() => {
- console.log("onControllerAttached");
- try {
- let userAgent = this.controller.getUserAgent() + this.customUserAgent;
- this.controller.setCustomUserAgent(userAgent);
- } catch (error) {
- console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
- }
- })
- }
- }
- }
复制代码 在下面的示例中,通过getCustomUserAgent()接口获取自定义用户代理。
- // xxx.ets
- import { webview } from '@kit.ArkWeb';
- import { BusinessError } from '@kit.BasicServicesKit';
- @Entry
- @Component
- struct WebComponent {
- controller: webview.WebviewController = new webview.WebviewController();
- @State userAgent: string = '';
- build() {
- Column() {
- Button('getCustomUserAgent')
- .onClick(() => {
- try {
- this.userAgent = this.controller.getCustomUserAgent();
- console.log("userAgent: " + this.userAgent);
- } catch (error) {
- console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
- }
- })
- Web({ src: 'www.example.com', controller: this.controller })
- }
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |