• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# native_interface_arkweb.h
2<!--Kit: ArkWeb-->
3<!--Subsystem: Web-->
4<!--Owner: @yp99ustc; @aohui; @zourongchun-->
5<!--Designer: @LongLie; @yaomingliu; @zhufenghao-->
6<!--Tester: @ghiker-->
7<!--Adviser: @HelloCrease-->
8
9## 概述
10
11声明API接口供开发者使用注入对象和执行JavaScript代码等功能。
12
13**库:** libohweb.so
14
15**系统能力:** SystemCapability.Web.Webview.Core
16
17**起始版本:** 11
18
19**相关模块:** [Web](capi-web.md)
20
21## 汇总
22
23### 结构体
24
25| 名称 | typedef关键字 | 描述 |
26| -- | -- | -- |
27| [ArkWeb_BlanklessInfo](capi-web-arkweb-blanklessinfo.md) | ArkWeb_BlanklessInfo | 页面首屏加载预测信息,主要包括首屏相似度预测值,首屏加载耗时预测值,预测错误码,应用需根据此信息来决策是否启用无白屏加载插帧方案。 |
28
29### 枚举
30
31| 名称 | typedef关键字 | 描述 |
32| -- | -- | -- |
33| [ArkWebEngineVersion](#arkwebengineversion) | ArkWebEngineVersion | ArkWeb内核版本,请参考[M114内核在OpenHarmony6.0系统上的适配指导](https://gitcode.com/openharmony-tpc/chromium_src/blob/132_trunk/web/ReleaseNote/CompatibleWithLegacyWebEngine.md)。 |
34
35
36### 函数
37
38| 名称 | typedef关键字 | 描述 |
39| -- | -- | -- |
40| [typedef void (\*NativeArkWeb_OnJavaScriptCallback)(const char*)](#nativearkweb_onjavascriptcallback) | NativeArkWeb_OnJavaScriptCallback | 定义执行JavaScript代码后返回结果的回调函数的类型。 |
41| [typedef char* (\*NativeArkWeb_OnJavaScriptProxyCallback)(const char** argv, int32_t argc)](#nativearkweb_onjavascriptproxycallback) | NativeArkWeb_OnJavaScriptProxyCallback | 定义注入对象的回调函数的类型。 |
42| [typedef void (\*NativeArkWeb_OnValidCallback)(const char*)](#nativearkweb_onvalidcallback) | NativeArkWeb_OnValidCallback | 定义Web组件可用时的回调函数的类型。 |
43| [typedef void (\*NativeArkWeb_OnDestroyCallback)(const char*)](#nativearkweb_ondestroycallback) | NativeArkWeb_OnDestroyCallback | 定义Web组件销毁时的回调函数的类型。 |
44| [typedef void (\*OH_ArkWeb_OnCookieSaveCallback)(ArkWeb_ErrorCode errorCode)](#oh_arkweb_oncookiesavecallback) | OH_ArkWeb_OnCookieSaveCallback | 定义保存cookie的回调函数的类型。<br>**起始版本:** 20 |
45| [void OH_NativeArkWeb_RunJavaScript(const char* webTag, const char* jsCode, NativeArkWeb_OnJavaScriptCallback callback)](#oh_nativearkweb_runjavascript) | - | 在当前显示页面的环境下,加载并异步执行一段JavaScript代码。 |
46| [void OH_NativeArkWeb_RegisterJavaScriptProxy(const char* webTag, const char* objName, const char** methodList,NativeArkWeb_OnJavaScriptProxyCallback* callback, int32_t size, bool needRefresh)](#oh_nativearkweb_registerjavascriptproxy) | - | 注册对象及函数名称列表。 |
47| [void OH_NativeArkWeb_UnregisterJavaScriptProxy(const char* webTag, const char* objName)](#oh_nativearkweb_unregisterjavascriptproxy) | - | 删除已注册的对象及其下的回调函数。 |
48| [void OH_NativeArkWeb_SetJavaScriptProxyValidCallback(const char* webTag, NativeArkWeb_OnValidCallback callback)](#oh_nativearkweb_setjavascriptproxyvalidcallback) | - | 设置对象可注册时的回调函数。 |
49| [NativeArkWeb_OnValidCallback OH_NativeArkWeb_GetJavaScriptProxyValidCallback(const char* webTag)](#oh_nativearkweb_getjavascriptproxyvalidcallback) | - | 获取已注册的对象可注册时的回调函数。 |
50| [void OH_NativeArkWeb_SetDestroyCallback(const char* webTag, NativeArkWeb_OnDestroyCallback callback)](#oh_nativearkweb_setdestroycallback) | - | 设置组件销毁时的回调函数。 |
51| [NativeArkWeb_OnDestroyCallback OH_NativeArkWeb_GetDestroyCallback(const char* webTag)](#oh_nativearkweb_getdestroycallback) | - | 获取已注册的组件销毁时的回调函数。 |
52| [ArkWeb_ErrorCode OH_NativeArkWeb_LoadData(const char* webTag,const char* data,const char* mimeType,const char* encoding,const char* baseUrl,const char* historyUrl)](#oh_nativearkweb_loaddata) | - | 加载数据或URL,此函数应在主线程中调用。 |
53| [void OH_NativeArkWeb_RegisterAsyncThreadJavaScriptProxy(const char* webTag,const ArkWeb_ProxyObjectWithResult* proxyObject, const char* permission)](#oh_nativearkweb_registerasyncthreadjavascriptproxy) | - | 注册一个包含回调方法的 JavaScript 对象,这些方法可带有返回值。该对象将被注入到当前页面的所有frame中,包括所有的 iframe,并且可以通过在 ArkWeb_ProxyObjectWithResult 中指定的名称进行访问。该对象只会在下一次加载或重新加载页面后在 JavaScript 中生效。这些方法将在 ArkWeb 的工作线程中执行。 |
54| [ArkWeb_ErrorCode OH_ArkWebCookieManager_SaveCookieSync()](#oh_arkwebcookiemanager_savecookiesync) | - | 将当前可通过CookieManager API访问的所有Cookie持久化到磁盘。如果要在非UI线程中使用此接口,则需要先使用OH_ArkWeb_GetNativeAPI初始化CookieManager接口。<br>**起始版本:** 20 |
55| [void OH_ArkWebCookieManager_SaveCookieAsync(OH_ArkWeb_OnCookieSaveCallback callback)](#oh_arkwebcookiemanager_savecookieasync) | - | 将当前可通过CookieManager API访问的所有Cookie持久化到磁盘。在不初始化CookieManager接口的情况下,此接口将在UI线程上自动执行。<br>**起始版本:** 20 |
56| [ArkWeb_BlanklessInfo OH_NativeArkWeb_GetBlanklessInfoWithKey(const char* webTag, const char* key)](#oh_nativearkweb_getblanklessinfowithkey) | - | 获取页面首屏加载预测信息(详细说明见[ArkWeb_BlanklessInfo](capi-web-arkweb-blanklessinfo.md)),并开始本次加载过渡帧生成,应用根据此信息确定是否需要启用无白屏加载。必须与[OH_NativeArkWeb_SetBlanklessLoadingWithKey](#oh_nativearkweb_setblanklessloadingwithkey)接口配套使用,并且必须在触发加载页面的接口之前调用。需在WebViewController与Web组件绑定后才能使用。 |
57| [ArkWeb_BlanklessErrorCode OH_NativeArkWeb_SetBlanklessLoadingWithKey(const char* webTag, const char* key, bool isStarted)](#oh_nativearkweb_setblanklessloadingwithkey) | - | 设置无白屏加载是否启用。本接口必须与[OH_NativeArkWeb_GetBlanklessInfoWithKey](#oh_nativearkweb_getblanklessinfowithkey)接口配套使用。 |
58| [void OH_NativeArkWeb_ClearBlanklessLoadingCache(const char* key[], uint32_t size)](#oh_nativearkweb_clearblanklessloadingcache) | - | 清除指定key值页面无白屏优化缓存,本接口只清除缓存。 |
59| [uint32_t OH_NativeArkWeb_SetBlanklessLoadingCacheCapacity(uint32_t capacity)](#oh_nativearkweb_setblanklessloadingcachecapacity) | - | 设置无白屏加载方案的持久化缓存容量,返回实际生效值。默认缓存容量为30MB,最大值为100MB。当实际缓存超过容量时,将采用淘汰不常用的过渡帧的方式清理。 |
60| [void OH_NativeArkWeb_SetActiveWebEngineVersion(ArkWebEngineVersion webEngineVersion)](#oh_nativearkweb_setactivewebengineversion) | - | 设置ArkWeb内核版本。若系统不支持指定版本,则设置无效。该接口为全局静态方法,须在调用initializeWebEngine前执行,若已加载任何Web组件,则该设置无效。 |
61| [ArkWebEngineVersion OH_NativeArkWeb_GetActiveWebEngineVersion()](#oh_nativearkweb_getactivewebengineversion) | - | 获取当前使用的ArkWeb内核版本。 |
62
63## 枚举类型说明
64
65### ArkWebEngineVersion
66
67```
68enum ArkWebEngineVersion
69```
70
71**描述:**
72
73ArkWeb内核版本,请参考[M114内核在OpenHarmony6.0系统上的适配指导](https://gitcode.com/openharmony-tpc/chromium_src/blob/132_trunk/web/ReleaseNote/CompatibleWithLegacyWebEngine.md)74
75| **内核类型** | **英文** | **说明** |
76| ----------- | -------- | -------- |
77| 常青内核     | EVERGREEN WebCore | 当前系统的最新Web内核,系统基于此内核进行完整的功能实现,推荐应用使用。|
78| 遗留内核     | LEGACY WebCore    | 复用上一版本的内核,只做安全补丁及舆情问题修复,仅作为兼容性回滚使用,且遗留内核的支持有时间限制。 |
79
80**起始版本:** 20
81
82| 枚举项               | 描述                 |
83| -------------------- | ------------------- |
84| SYSTEM_DEFAULT = 0   | 系统默认内核,OpenHarmony 6.0版本默认为M132。           |
85| ARKWEB_M114 = 1      | OpenHarmony 6.0版本的遗留内核。开发者可选择此遗留内核,若系统版本上不存在此内核则设置无效。 |
86| ARKWEB_M132 = 2      | OpenHarmony 6.0版本的常青内核,M132为此版本的默认内核。若系统版本上不存在此内核则设置无效。    |
87
88## 函数说明
89
90### NativeArkWeb_OnJavaScriptCallback()
91
92```
93typedef void (*NativeArkWeb_OnJavaScriptCallback)(const char*)
94```
95
96**描述:**
97
98定义执行JavaScript代码后返回结果的回调函数的类型。
99
100**起始版本:** 11
101
102### NativeArkWeb_OnJavaScriptProxyCallback()
103
104```
105typedef char* (*NativeArkWeb_OnJavaScriptProxyCallback)(const char** argv, int32_t argc)
106```
107
108**描述:**
109
110定义注入对象的回调函数的类型。
111
112**起始版本:** 11
113
114### NativeArkWeb_OnValidCallback()
115
116```
117typedef void (*NativeArkWeb_OnValidCallback)(const char*)
118```
119
120**描述:**
121
122定义Web组件可用时的回调函数的类型。
123
124**起始版本:** 11
125
126### NativeArkWeb_OnDestroyCallback()
127
128```
129typedef void (*NativeArkWeb_OnDestroyCallback)(const char*)
130```
131
132**描述:**
133
134定义Web组件销毁时的回调函数的类型。
135
136**起始版本:** 11
137
138### OH_ArkWeb_OnCookieSaveCallback()
139
140```
141typedef void (*OH_ArkWeb_OnCookieSaveCallback)(ArkWeb_ErrorCode errorCode)
142```
143
144**描述:**
145
146定义保存cookie的回调函数的类型。
147
148**起始版本:** 20
149
150**参数:**
151
152| 参数项 | 描述 |
153| -- | -- |
154| [ArkWeb_ErrorCode](capi-arkweb-error-code-h.md#arkweb_errorcode) errorCode | [ARKWEB_SUCCESS](capi-arkweb-error-code-h.md#arkweb_errorcode) 保存cookie成功。<br> [ARKWEB_COOKIE_SAVE_FAILED](capi-arkweb-error-code-h.md#arkweb_errorcode) 保存cookie失败。<br> [ARKWEB_COOKIE_MANAGER_INITIALIZE_FAILED](capi-arkweb-error-code-h.md#arkweb_errorcode) CookieManager初始化失败。 |
155
156### OH_NativeArkWeb_RunJavaScript()
157
158```
159void OH_NativeArkWeb_RunJavaScript(const char* webTag, const char* jsCode, NativeArkWeb_OnJavaScriptCallback callback)
160```
161
162**描述:**
163
164在当前显示页面的环境下,加载并异步执行一段JavaScript代码。
165
166**系统能力:** SystemCapability.Web.Webview.Core
167
168**起始版本:** 11
169
170
171**参数:**
172
173| 参数项 | 描述 |
174| -- | -- |
175| const char* webTag | Web组件的名称。 |
176| const char* jsCode | 一段JavaScript的代码脚本。 |
177| [NativeArkWeb_OnJavaScriptCallback](#nativearkweb_onjavascriptcallback) callback | 代码执行完后通知开发者结果的回调函数。 |
178
179### OH_NativeArkWeb_RegisterJavaScriptProxy()
180
181```
182void OH_NativeArkWeb_RegisterJavaScriptProxy(const char* webTag, const char* objName, const char** methodList,NativeArkWeb_OnJavaScriptProxyCallback* callback, int32_t size, bool needRefresh)
183```
184
185**描述:**
186
187注册对象及函数名称列表。
188
189**系统能力:** SystemCapability.Web.Webview.Core
190
191**起始版本:** 11
192
193
194**参数:**
195
196| 参数项 | 描述 |
197| -- | -- |
198| const char* webTag | Web组件的名称。 |
199| const char* objName | 注入对象的名称。 |
200| const char** methodList | 注入函数列表的名称。 |
201| [NativeArkWeb_OnJavaScriptProxyCallback](#nativearkweb_onjavascriptproxycallback)* callback | 注入的回调函数。 |
202| int32_t size | 注入的回调函数的个数。 |
203| bool needRefresh | 是否需要刷新页面。 |
204
205### OH_NativeArkWeb_UnregisterJavaScriptProxy()
206
207```
208void OH_NativeArkWeb_UnregisterJavaScriptProxy(const char* webTag, const char* objName)
209```
210
211**描述:**
212
213删除已注册的对象及其下的回调函数。
214
215**系统能力:** SystemCapability.Web.Webview.Core
216
217**起始版本:** 11
218
219
220**参数:**
221
222| 参数项 | 描述 |
223| -- | -- |
224| const char* webTag | Web组件的名称。 |
225| const char* objName | 注入对象的名称。 |
226
227### OH_NativeArkWeb_SetJavaScriptProxyValidCallback()
228
229```
230void OH_NativeArkWeb_SetJavaScriptProxyValidCallback(const char* webTag, NativeArkWeb_OnValidCallback callback)
231```
232
233**描述:**
234
235设置对象可注册时的回调函数。
236
237**系统能力:** SystemCapability.Web.Webview.Core
238
239**起始版本:** 11
240
241
242**参数:**
243
244| 参数项 | 描述 |
245| -- | -- |
246| const char* webTag | Web组件的名称。 |
247| [NativeArkWeb_OnValidCallback](#nativearkweb_onvalidcallback) callback | 对象可注册时的回调函数。 |
248
249### OH_NativeArkWeb_GetJavaScriptProxyValidCallback()
250
251```
252NativeArkWeb_OnValidCallback OH_NativeArkWeb_GetJavaScriptProxyValidCallback(const char* webTag)
253```
254
255**描述:**
256
257获取已注册的对象可注册时的回调函数。
258
259**系统能力:** SystemCapability.Web.Webview.Core
260
261**起始版本:** 11
262
263
264**参数:**
265
266| 参数项 | 描述 |
267| -- | -- |
268| const char* webTag | Web组件的名称。 |
269
270**返回:**
271
272| 类型 | 说明 |
273| -- | -- |
274| [NativeArkWeb_OnValidCallback](#nativearkweb_onvalidcallback) | 已注册的对象可注册时的回调函数。如果未设置由参数webTag指定的有效回调函数,则将返回空指针。 |
275
276### OH_NativeArkWeb_SetDestroyCallback()
277
278```
279void OH_NativeArkWeb_SetDestroyCallback(const char* webTag, NativeArkWeb_OnDestroyCallback callback)
280```
281
282**描述:**
283
284设置组件销毁时的回调函数。
285
286**系统能力:** SystemCapability.Web.Webview.Core
287
288**起始版本:** 11
289
290
291**参数:**
292
293| 参数项 | 描述 |
294| -- | -- |
295| const char* webTag | Web组件的名称。 |
296| [NativeArkWeb_OnDestroyCallback](#nativearkweb_ondestroycallback) callback | 组件销毁时的回调函数。 |
297
298### OH_NativeArkWeb_GetDestroyCallback()
299
300```
301NativeArkWeb_OnDestroyCallback OH_NativeArkWeb_GetDestroyCallback(const char* webTag)
302```
303
304**描述:**
305
306获取已注册的组件销毁时的回调函数。
307
308**系统能力:** SystemCapability.Web.Webview.Core
309
310**起始版本:** 11
311
312
313**参数:**
314
315| 参数项 | 描述 |
316| -- | -- |
317| const char* webTag | Web组件的名称。 |
318
319**返回:**
320
321| 类型 | 说明 |
322| -- | -- |
323| [NativeArkWeb_OnDestroyCallback](#nativearkweb_ondestroycallback) | return 已注册的组件销毁时的回调函数。如果未设置由参数webTag指定的销毁回调函数,则将返回空指针。 |
324
325### OH_NativeArkWeb_LoadData()
326
327```
328ArkWeb_ErrorCode OH_NativeArkWeb_LoadData(const char* webTag,const char* data,const char* mimeType,const char* encoding,const char* baseUrl,const char* historyUrl)
329```
330
331**描述:**
332
333加载数据或URL,此函数应在主线程中调用。
334
335**系统能力:** SystemCapability.Web.Webview.Core
336
337**起始版本:** 15
338
339
340**参数:**
341
342| 参数项 | 描述 |
343| -- | -- |
344| const char* webTag | Web组件的名称。 |
345| const char* data | "Base64"或"URL"编码的字符串,不能为空。 |
346| const char* mimeType | 媒体类型,例如"text/html",不能为空。 |
347| const char* encoding | 编码类型,例如"UTF-8",不能为空。 |
348| const char* baseUrl | 指定的URL路径("http"/"https"/"data"协议),由Web组件分配给window.origin。 |
349| const char* historyUrl | 历史URL,当它不为空时,可以通过历史记录来管理,实现前进和后退功能。 |
350
351**返回:**
352
353| 类型                                                               | 说明                                                                                                                                                                                                                                                                                                                         |
354|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
355| [ArkWeb_ErrorCode](capi-arkweb-error-code-h.md#arkweb_errorcode) | LoadData 错误码。<br>         [ARKWEB_SUCCESS](capi-arkweb-error-code-h.md#arkweb_errorcode) 加载数据成功。<br>         [ARKWEB_INVALID_PARAM](capi-arkweb-error-code-h.md#arkweb_errorcode) 必填参数未指定或参数类型不正确或参数校验失败。<br>         [ARKWEB_INIT_ERROR](capi-arkweb-error-code-h.md#arkweb_errorcode) 初始化失败,根据传入的"webTag"找不到有效的Web组件。<br>         [ARKWEB_LIBRARY_OPEN_FAILURE](capi-arkweb-error-code-h.md#arkweb_errorcode) 打开动态链接库失败。<br>         [ARKWEB_LIBRARY_SYMBOL_NOT_FOUND](capi-arkweb-error-code-h.md#arkweb_errorcode) 动态链接库中未找到所需的符号。 |
356
357### OH_NativeArkWeb_RegisterAsyncThreadJavaScriptProxy()
358
359```
360void OH_NativeArkWeb_RegisterAsyncThreadJavaScriptProxy(const char* webTag,const ArkWeb_ProxyObjectWithResult* proxyObject, const char* permission)
361```
362
363**描述:**
364
365注册一个包含回调方法的 JavaScript 对象,这些方法可带有返回值。该对象将被注入到当前页面的所有frame中,包括所有的 iframe,并且可以通过在 ArkWeb_ProxyObjectWithResult 中指定的名称进行访问。该对象只会在下一次加载或重新加载页面后在 JavaScript 中生效。这些方法将在 ArkWeb 的工作线程中执行。
366
367**起始版本:** 20
368
369
370**参数:**
371
372| 参数项                                                 | 描述 |
373|-----------------------------------------------------| -- |
374| const char* webTag                                  | Web组件名称。 |
375| const [ArkWeb_ProxyObjectWithResult](capi-web-arkweb-proxyobjectwithresult.md)* proxyObject | 注册的对象。 |
376| const char* permission                              | json格式字符串,默认值为空。该字符串用来配置JSBridge的权限限制,可以配置对象和方法级别。 |
377
378### OH_ArkWebCookieManager_SaveCookieSync()
379
380```
381ArkWeb_ErrorCode OH_ArkWebCookieManager_SaveCookieSync()
382```
383
384**描述:**
385
386将当前可通过CookieManager API访问的所有Cookie持久化到磁盘。如果要在非UI线程中使用此接口,则需要先使用OH_ArkWeb_GetNativeAPI初始化CookieManager接口。
387
388**起始版本:** 20
389
390**返回:**
391
392| 类型 | 说明 |
393| -- | -- |
394| [ArkWeb_ErrorCode](capi-arkweb-error-code-h.md#arkweb_errorcode) | SaveCookieSync错误码。<br> [ARKWEB_SUCCESS](capi-arkweb-error-code-h.md#arkweb_errorcode) 保存cookie成功。<br> [ARKWEB_COOKIE_SAVE_FAILED](capi-arkweb-error-code-h.md#arkweb_errorcode) 保存cookie失败。<br> [ARKWEB_COOKIE_MANAGER_INITIALIZE_FAILED](capi-arkweb-error-code-h.md#arkweb_errorcode) CookieManager初始化失败。<br> [ARKWEB_COOKIE_MANAGER_NOT_INITIALIZED](capi-arkweb-error-code-h.md#arkweb_errorcode) 在非UI线程中,不允许在不初始化CookieManager接口的情况下调用该接口。请先使用OH_ArkWeb_GetNativeAPI初始化CookieManager接口。 |
395
396### OH_ArkWebCookieManager_SaveCookieAsync()
397
398```
399void OH_ArkWebCookieManager_SaveCookieAsync(OH_ArkWeb_OnCookieSaveCallback callback)
400```
401
402**描述:**
403
404将当前可通过CookieManager API访问的所有Cookie持久化到磁盘。在不初始化CookieManager接口的情况下,此接口将在UI线程上自动执行。
405
406**起始版本:** 20
407
408**参数:**
409
410| 参数项 | 描述 |
411| -- | -- |
412| [OH_ArkWeb_OnCookieSaveCallback](#oh_arkweb_oncookiesavecallback)* callback | 保存cookie完成后执行该回调。 |
413### OH_NativeArkWeb_GetBlanklessInfoWithKey()
414
415```
416ArkWeb_BlanklessInfo OH_NativeArkWeb_GetBlanklessInfoWithKey(const char* webTag, const char* key)
417```
418
419**描述:**
420
421获取页面首屏加载预测信息(详细说明见[ArkWeb_BlanklessInfo](capi-web-arkweb-blanklessinfo.md)),并开始本次加载过渡帧生成,应用根据此信息确定是否需要启用无白屏加载。必须与[OH_NativeArkWeb_SetBlanklessLoadingWithKey](#oh_nativearkweb_setblanklessloadingwithkey)接口配套使用,并且必须在触发加载页面的接口之前调用。需在WebViewController与Web组件绑定后才能使用。
422
423> **说明:**
424>
425> - 持久缓存容量:默认大小为30MB(约30页),可以通过接口[OH_NativeArkWeb_SetBlanklessLoadingCacheCapacity](#oh_nativearkweb_setblanklessloadingcachecapacity)设置缓存容量,具体见该接口说明。超过容量时根据LRU(Least Recently Used,淘汰不常用缓存的策略)机制更新缓存。自动清理超过7天的持久缓存数据,缓存清除后第三次加载页面开始有优化效果。
426> - 如果发现相似度(即[ArkWeb_BlanklessInfo](capi-web-arkweb-blanklessinfo.md)中的similarity)极低,请检查key值是否正确传递。
427> - 调用本接口后,会启用页面加载快照检测及生成过渡帧计算,产生一定资源开销。
428> - 启用无白屏加载的页面会带来一定的资源开销,开销的大小与Web组件的分辨率相关。假设分辨率的宽度和高度分别为:w, h。页面在打开阶段会增加峰值内存,增加量约为12*w*h B。页面打开后,内存会被回收,不影响稳态内存。增加固态应用缓存的大小,每个页面增加的缓存约w*h/10 B,缓存位于应用缓存的位置。
429
430**需要权限:** ohos.permission.INTERNETohos.permission.GET_NETWORK_INFO
431
432**起始版本:** 20
433
434**设备行为差异:** 该接口在Phone中可正常调用,在其他设备类型中返回801错误码。
435
436**参数:**
437
438| 参数项                                                 | 描述 |
439|-----------------------------------------------------| -- |
440| const char* webTag  | Web组件名称。 |
441| const char* key | 唯一标识本页面的key值。<br>合法取值范围:非空,长度不超过2048个字符。<br>设置非法值时不生效。 |
442
443**返回:**
444
445| 类型 | 说明 |
446| -- | -- |
447| [ArkWeb_BlanklessInfo](capi-web-arkweb-blanklessinfo.md) | 页面首屏加载预测信息,主要包括首屏相似度预测值,首屏加载耗时预测值,应用需根据此信息来决策是否启用无白屏加载插帧。 |
448
449### OH_NativeArkWeb_SetBlanklessLoadingWithKey()
450
451```
452ArkWeb_BlanklessErrorCode OH_NativeArkWeb_SetBlanklessLoadingWithKey(const char* webTag, const char* key, bool isStarted)
453```
454
455**描述:**
456
457设置无白屏加载是否启用。本接口必须与[OH_NativeArkWeb_GetBlanklessInfoWithKey](#oh_nativearkweb_getblanklessinfowithkey)接口配套使用。
458
459> **说明:**
460>
461> - 需在触发页面加载的接口之后调用。其他约束同[OH_NativeArkWeb_GetBlanklessInfoWithKey](#oh_nativearkweb_getblanklessinfowithkey)。
462> - 页面的加载必须在调用本套接口的组件中进行。
463> - 当相似度较低时,系统将判定为跳变过大,启用插帧会失败。
464
465**需要权限:** ohos.permission.INTERNETohos.permission.GET_NETWORK_INFO
466
467**起始版本:** 20
468
469**参数:**
470
471| 参数项                                                 | 描述 |
472|-----------------------------------------------------| -- |
473| const char* webTag  | Web组件名称。 |
474| const char* key | 唯一标识本页面的key值。必须与[OH_NativeArkWeb_GetBlanklessInfoWithKey](#oh_nativearkweb_getblanklessinfowithkey)接口的key值相同。<br>合法取值范围:非空,长度不超过2048个字符。<br>非法值设置行为:返回错误码[ArkWeb_BlanklessErrorCode](./capi-arkweb-error-code-h.md#arkweb_blanklesserrorcode),插帧不生效。 |
475| bool isStarted | 是否启用开始插帧,true:启用,false:不启用。<br>默认值:false。 |
476
477**返回:**
478
479| 类型 | 说明 |
480| -- | -- |
481| [ArkWeb_BlanklessErrorCode](./capi-arkweb-error-code-h.md#arkweb_blanklesserrorcode) | 返回接口调用是否成功,具体见[ArkWeb_BlanklessErrorCode](./capi-arkweb-error-code-h.md#arkweb_blanklesserrorcode)定义。 |
482
483### OH_NativeArkWeb_ClearBlanklessLoadingCache()
484
485```
486void OH_NativeArkWeb_ClearBlanklessLoadingCache(const char* key[], uint32_t size)
487```
488
489**描述:**
490
491清除指定key值页面无白屏优化缓存,本接口只清除缓存。
492
493在小程序或Web应用场景中,当页面加载时内容变化显著,可能会出现一次明显的跳变。若对此跳变有所顾虑,可使用该接口清除页面缓存。
494
495> **说明:**
496>
497> - 清除之后的页面,需在第三次加载页面时才会产生优化效果。
498
499**起始版本:** 20
500
501**参数:**
502
503| 参数项                                                 | 描述 |
504|-----------------------------------------------------| -- |
505| const char* key[] | 清除Blankless优化方案页面的key值列表,key值为[OH_NativeArkWeb_GetBlanklessInfoWithKey](#oh_nativearkweb_getblanklessinfowithkey)中指定过的。<br>默认值:所有Blankless优化方案缓存的页面key列表。<br>合法取值范围:长度不超过2048,key列表长度<=100。key和加载页面时输入给ArkWeb的相同。<br>非法值设置行为:key长度超过2048时该key不生效;长度超过100时,取前100个;当为NULL时,使用默认值。 |
506| uint32_t size | keys数组的大小。<br>默认值:0。<br>合法取值范围:0~100。取值超过100时,keys数组取前100个。<br>非法值设置行为:0。 |
507
508
509### OH_NativeArkWeb_SetBlanklessLoadingCacheCapacity()
510
511```
512uint32_t OH_NativeArkWeb_SetBlanklessLoadingCacheCapacity(uint32_t capacity)
513```
514
515**描述:**
516
517设置无白屏加载方案的持久化缓存容量,返回实际生效值。默认缓存容量为30MB,最大值为100MB。当实际缓存超过容量时,将采用淘汰不常用的过渡帧的方式清理。
518
519**起始版本:** 20
520
521**参数:**
522
523| 参数项                                                 | 描述 |
524|-----------------------------------------------------| -- |
525| uint32_t capacity  | 设置持久化缓存设置,单位MB,最大设置不超过100MB。<br>默认值:30MB。<br>合法取值范围:0~100,当设置为0时,无缓存空间,则功能全局不开启。<br>非法值设置行为:小于0时生效值为0,大于100时生效值为100。 |
526
527**返回:**
528
529| 类型 | 说明 |
530| -- | -- |
531| uint32_t | 返回实际生效的容量值,范围0~100。<br>小于0时生效值为0,大于100时生效值为100。 |
532
533### OH_NativeArkWeb_SetActiveWebEngineVersion()
534
535```
536void OH_NativeArkWeb_SetActiveWebEngineVersion(ArkWebEngineVersion webEngineVersion)
537```
538
539**描述:**
540
541设置ArkWeb内核版本。若系统不支持指定版本,则设置无效。
542
543该接口为全局静态方法,须在调用initializeWebEngine前执行,若已加载任何Web组件,则该设置无效。
544
545**遗留内核适配:**
546
547在OpenHarmony 6.0及以后,使用遗留内核时,部分ArkWeb接口不会生效,参考[M114内核在OpenHarmony6.0系统上的适配指导](https://gitcode.com/openharmony-tpc/chromium_src/blob/132_trunk/web/ReleaseNote/CompatibleWithLegacyWebEngine.md)548
549**起始版本:** 20
550
551**参数:**
552
553| 参数项                                                 | 描述 |
554|-----------------------------------------------------| -- |
555| ArkWebEngineVersion webEngineVersion  | ArkWeb内核版本(详细说明见[ArkWebEngineVersion](#arkwebengineversion))。 |
556
557### OH_NativeArkWeb_GetActiveWebEngineVersion()
558
559```
560ArkWebEngineVersion OH_NativeArkWeb_GetActiveWebEngineVersion()
561```
562
563**描述:**
564
565获取当前使用的ArkWeb内核版本。
566
567**起始版本:** 20
568
569**返回:**
570
571| 类型 | 说明 |
572| -- | -- |
573| ArkWebEngineVersion | 返回由[ArkWebEngineVersion](#arkwebengineversion)枚举所定义的当前使用的ArkWeb内核版本。 |
574