@doubao-dev/cli 0.0.14 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/run.js +1 -1
- package/dist/1664.js +60 -0
- package/dist/180.js +1 -0
- package/dist/{bin/win32-x64/security_tasm_codec.exe → 1966.js} +0 -0
- package/dist/1966.js.LICENSE.txt +119 -0
- package/dist/2585.js +2 -0
- package/dist/318.js +1 -0
- package/dist/3551.js +1 -0
- package/dist/3997.js +2 -0
- package/dist/4880.js +1 -0
- package/dist/5418.js +3 -0
- package/dist/5732.js +1 -0
- package/dist/7410.js +2 -0
- package/dist/7410.js.LICENSE.txt +1 -0
- package/dist/7526.js +1 -0
- package/dist/@byted-doubao-apps/create.js +4 -5
- package/dist/@byted-doubao-apps/login.js +2 -3
- package/dist/@byted-doubao-apps/login~1.js +2 -0
- package/dist/@byted-doubao-apps/template-empty/package.json +3 -3
- package/dist/@byted-doubao-apps/template-starter/package.json +3 -3
- package/dist/@byted-hdt/cli.js +11 -12
- package/dist/@inquirer/select.js +1 -0
- package/dist/app.js +1 -2
- package/dist/assets/web-sdk-debugger/index.html +1 -1
- package/dist/assets/web-sdk-debugger/static/css/{index.4b84c01189.css → index.123e72a5bc.css} +1 -1
- package/dist/assets/web-sdk-debugger/static/js/index.019ceb233a.js +26 -0
- package/dist/assets/web-sdk-debugger/wsd/doubao-apps-api.template.js +0 -0
- package/dist/assets/web-sdk-debugger/wsd/doubao-apps-framework.template.js +0 -0
- package/dist/auth.js +1 -2
- package/dist/browser.js +1 -2
- package/dist/components-loader.js +2 -3
- package/dist/dbx-demo.js +2 -3
- package/dist/demo-server.js +3 -4
- package/dist/dev-service-client.js +16 -10
- package/dist/dev-service-client.js.LICENSE.txt +89 -0
- package/dist/dev-shell.js +5 -2
- package/dist/dev-shell.js.LICENSE.txt +59 -0
- package/dist/dev.js +18 -19
- package/dist/devtools.js +2 -0
- package/dist/devtools.js.LICENSE.txt +1 -0
- package/dist/environment.js +1 -0
- package/dist/eval.js +1 -2
- package/dist/get.js +1 -2
- package/dist/init.js +6 -7
- package/dist/login.js +1 -2
- package/dist/main.js +1 -0
- package/dist/manifest-mcp-config.js +1 -2
- package/dist/project-layout.js +1 -2
- package/dist/prompt.js +5 -6
- package/dist/push-page.js +1 -2
- package/dist/push-widget.js +1 -2
- package/dist/rslib-runtime.js +1 -2
- package/dist/sandbox.js +1 -2
- package/dist/sdk.js +76 -169
- package/dist/sdk.js.LICENSE.txt +1 -13
- package/dist/sdk~1.js +218 -0
- package/dist/sdk~1.js.LICENSE.txt +15 -0
- package/dist/skills.js +2 -3
- package/dist/static/404/404.html +455 -0
- package/dist/static/assets/package.json +137 -0
- package/dist/static/home_choose/chooseRegion.html +345 -0
- package/dist/static/openChrome.applescript +88 -0
- package/dist/status.js +2 -3
- package/dist/status~1.js +1 -2
- package/dist/stop.js +1 -2
- package/dist/update.js +1 -2
- package/dist/upgrade.js +1 -2
- package/dist/upload.js +7 -8
- package/dist/validate.js +1 -2
- package/dist/yaml.js +25 -0
- package/package.json +34 -35
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/01-/345/237/272/347/241/200.md +114 -7
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/02-/347/263/273/347/273/237.md +126 -0
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/06-/344/272/244/344/272/222.md +71 -0
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/08-/347/275/221/347/273/234.md +222 -0
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/10-/344/270/232/345/212/241/350/203/275/345/212/233.md +122 -0
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/groups.md +5 -5
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/quick-reference.md +7 -2
- package/dist/183.js +0 -2
- package/dist/564.js +0 -13
- package/dist/714.js +0 -1
- package/dist/assets/web-sdk-debugger/static/js/index.62b5cae841.js +0 -26
- package/dist/bin/darwin-arm64/security_tasm_codec +0 -0
- package/dist/bin/darwin-arm64/security_tasm_codec.sha256 +0 -1
- package/dist/bin/darwin-x64/security_tasm_codec +0 -0
- package/dist/bin/darwin-x64/security_tasm_codec.sha256 +0 -1
- package/dist/bin/linux-x64/security_tasm_codec +0 -0
- package/dist/bin/linux-x64/security_tasm_codec.sha256 +0 -1
- package/dist/bin/win32-x64/security_tasm_codec.exe.sha256 +0 -1
- package/dist/index.js +0 -1
- package/dist/package.json +0 -56
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
| [authorize](#authorize) | 提前向用户发起指定 scope 的应用授权。 |
|
|
14
14
|
| [getPackageInfoSync](#getpackageinfosync) | 同步获取当前 package 信息。<br><br>同步 API。 |
|
|
15
15
|
| [getSetting](#getsetting) | 获取用户当前的应用授权设置。 |
|
|
16
|
+
| [openSetting](#opensetting) | 打开智能服务授权设置页面。 |
|
|
16
17
|
|
|
17
18
|
## API 详情
|
|
18
19
|
|
|
@@ -339,11 +340,6 @@ console.log(result.appId, result.name, result.iconSrc);
|
|
|
339
340
|
|
|
340
341
|
获取用户当前的应用授权设置。
|
|
341
342
|
|
|
342
|
-
## 使用限制
|
|
343
|
-
|
|
344
|
-
> [!WARNING]
|
|
345
|
-
> **Android、iOS**:传入 true 时调用直接失败,只有默认的 false 可成功返回授权设置;依赖订阅设置的调用无法成功。
|
|
346
|
-
|
|
347
343
|
## 支持版本
|
|
348
344
|
|
|
349
345
|
前端库版本不低于 `0.0.36`。
|
|
@@ -381,7 +377,7 @@ getSetting(params?: GetSettingParams): Promise<GetSettingResult>
|
|
|
381
377
|
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
382
378
|
</thead>
|
|
383
379
|
<tbody>
|
|
384
|
-
<tr><td><code>withSubscriptions</code></td><td><code>
|
|
380
|
+
<tr><td><code>withSubscriptions</code></td><td><code>false</code></td><td>否</td><td><code>false</code></td><td>豆包 Android、iOS 当前不支持订阅模板,仅支持 false</td><td>是否同时获取用户订阅消息的订阅状态;当前仅支持 false。</td></tr>
|
|
385
381
|
</tbody>
|
|
386
382
|
</table>
|
|
387
383
|
|
|
@@ -420,6 +416,102 @@ console.log(result.authSetting['scope.userLocation']);
|
|
|
420
416
|
}
|
|
421
417
|
```
|
|
422
418
|
|
|
419
|
+
<a id="opensetting"></a>
|
|
420
|
+
### openSetting()
|
|
421
|
+
|
|
422
|
+
# openSetting
|
|
423
|
+
|
|
424
|
+
打开智能服务授权设置页面
|
|
425
|
+
|
|
426
|
+
## 支持版本
|
|
427
|
+
|
|
428
|
+
前端库版本不低于 `0.0.39`。
|
|
429
|
+
|
|
430
|
+
## 支持平台
|
|
431
|
+
|
|
432
|
+
<table>
|
|
433
|
+
<thead>
|
|
434
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
435
|
+
</thead>
|
|
436
|
+
<tbody>
|
|
437
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
438
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
439
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
440
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
441
|
+
</tbody>
|
|
442
|
+
</table>
|
|
443
|
+
|
|
444
|
+
## 接入准备
|
|
445
|
+
|
|
446
|
+
### 前置条件
|
|
447
|
+
|
|
448
|
+
- 无额外前置条件,不要求在用户点击事件中调用
|
|
449
|
+
|
|
450
|
+
## 使用说明
|
|
451
|
+
|
|
452
|
+
该接口不要求在用户点击事件中调用。
|
|
453
|
+
注意:当前宿主暂不支持订阅模板,传入 `withSubscriptions: true` 时会由宿主返回失败,错误信息为 `subscription templates are not supported yet`。
|
|
454
|
+
|
|
455
|
+
- 豆包当前不支持订阅模板,不要传入 withSubscriptions: true。
|
|
456
|
+
|
|
457
|
+
## 调用方式
|
|
458
|
+
|
|
459
|
+
### 异步 API
|
|
460
|
+
|
|
461
|
+
```typescript
|
|
462
|
+
openSetting(params?: OpenSettingOptions): Promise<OpenSettingResult>
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
## 入参
|
|
466
|
+
|
|
467
|
+
<table>
|
|
468
|
+
<thead>
|
|
469
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
470
|
+
</thead>
|
|
471
|
+
<tbody>
|
|
472
|
+
<tr><td><code>withSubscriptions</code></td><td><code>false</code></td><td>否</td><td><code>false</code></td><td>豆包 Android、iOS 当前不支持订阅模板,仅支持 false</td><td>是否同时获取用户订阅消息的订阅状态;当前仅支持 false。</td></tr>
|
|
473
|
+
</tbody>
|
|
474
|
+
</table>
|
|
475
|
+
|
|
476
|
+
## 调用示例
|
|
477
|
+
|
|
478
|
+
```typescript
|
|
479
|
+
import { openSetting } from '@doubao-dev/framework/api';
|
|
480
|
+
|
|
481
|
+
try {
|
|
482
|
+
const result = await openSetting();
|
|
483
|
+
console.log(result.authSetting['scope.userLocation']);
|
|
484
|
+
} catch (error) {
|
|
485
|
+
console.error(error);
|
|
486
|
+
}
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
## 成功返回
|
|
490
|
+
|
|
491
|
+
<table>
|
|
492
|
+
<thead>
|
|
493
|
+
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
494
|
+
</thead>
|
|
495
|
+
<tbody>
|
|
496
|
+
<tr><td><code>authSetting</code></td><td><code>AuthSetting</code></td><td>是</td><td>用户授权结果,key 为权限 scope,value 表示是否已授权</td></tr>
|
|
497
|
+
<tr><td><code>subscriptionsSetting</code></td><td><code>SubscriptionsSetting</code></td><td>否</td><td>用户订阅消息设置,withSubscriptions 为 true 时才会返回</td></tr>
|
|
498
|
+
<tr><td><code>subscriptionsSetting.itemSettings</code></td><td><code>Record<string, SubscriptionSettingStatus></code></td><td>否</td><td>一次性订阅消息模板的订阅状态</td></tr>
|
|
499
|
+
<tr><td><code>subscriptionsSetting.mainSwitch</code></td><td><code>boolean</code></td><td>否</td><td>设置页订阅消息总开关</td></tr>
|
|
500
|
+
<tr><td><code>subscriptionsSetting.templateSettings</code></td><td><code>Record<string, SubscriptionTemplateSetting></code></td><td>否</td><td>模板订阅状态</td></tr>
|
|
501
|
+
</tbody>
|
|
502
|
+
</table>
|
|
503
|
+
|
|
504
|
+
### 返回示例
|
|
505
|
+
|
|
506
|
+
```json
|
|
507
|
+
{
|
|
508
|
+
"authSetting": {
|
|
509
|
+
"scope.userLocation": true,
|
|
510
|
+
"scope.record": false
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
```
|
|
514
|
+
|
|
423
515
|
## 相关类型
|
|
424
516
|
|
|
425
517
|
<a id="doubaoappaccountinfo"></a>
|
|
@@ -491,7 +583,7 @@ console.log(result.authSetting['scope.userLocation']);
|
|
|
491
583
|
|
|
492
584
|
#### Properties
|
|
493
585
|
|
|
494
|
-
• **withSubscriptions?**: `
|
|
586
|
+
• **withSubscriptions?**: `false` - 是否同时获取用户订阅消息的订阅状态;当前仅支持 false
|
|
495
587
|
|
|
496
588
|
<a id="authsetting"></a>
|
|
497
589
|
### AuthSetting
|
|
@@ -554,3 +646,18 @@ console.log(result.authSetting['scope.userLocation']);
|
|
|
554
646
|
#### Type
|
|
555
647
|
|
|
556
648
|
`'accept' | 'reject'`
|
|
649
|
+
|
|
650
|
+
<a id="opensettingoptions"></a>
|
|
651
|
+
### OpenSettingOptions
|
|
652
|
+
|
|
653
|
+
#### Properties
|
|
654
|
+
|
|
655
|
+
• **withSubscriptions?**: `false` - 是否同时获取用户订阅消息的订阅状态;当前仅支持 false
|
|
656
|
+
|
|
657
|
+
<a id="opensettingresult"></a>
|
|
658
|
+
### OpenSettingResult
|
|
659
|
+
|
|
660
|
+
#### Properties
|
|
661
|
+
|
|
662
|
+
• **authSetting**: `AuthSetting` - 用户授权结果,key 为权限 scope,value 表示是否已授权
|
|
663
|
+
• **subscriptionsSetting?**: `SubscriptionsSetting` - 用户订阅消息设置,withSubscriptions 为 true 时才会返回
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
| --- | --- |
|
|
11
11
|
| [getWindowInfoSync](#getwindowinfosync) | 获取窗口信息。<br><br>同步 API。 |
|
|
12
12
|
| [getSystemSetting](#getsystemsetting) | 获取设备设置。 |
|
|
13
|
+
| [getAppAuthorizeSetting](#getappauthorizesetting) | 获取宿主应用的系统授权设置。 调用只读取当前系统授权状态,不会申请权限或触发系统授权弹窗。状态字段固定返回 authorized、denied 或 not determined。 |
|
|
13
14
|
| [getAppBaseInfoSync](#getappbaseinfosync) | 获取应用基础信息。<br><br>同步 API。 |
|
|
14
15
|
| [getWindowInfo](#getwindowinfo) | 获取窗口信息。 |
|
|
15
16
|
| [getAppBaseInfo](#getappbaseinfo) | 获取应用基础信息。 |
|
|
@@ -191,6 +192,107 @@ console.log(result.wifiEnabled, result.deviceOrientation);
|
|
|
191
192
|
- **Android**:wifiEnabled 表示系统 Wi-Fi 开关是否打开
|
|
192
193
|
- **iOS**:wifiEnabled 表示当前是否正在通过 Wi-Fi 联网
|
|
193
194
|
|
|
195
|
+
<a id="getappauthorizesetting"></a>
|
|
196
|
+
### getAppAuthorizeSetting()
|
|
197
|
+
|
|
198
|
+
# getAppAuthorizeSetting
|
|
199
|
+
|
|
200
|
+
获取宿主应用的系统授权设置。
|
|
201
|
+
|
|
202
|
+
调用只读取当前系统授权状态,不会申请权限或触发系统授权弹窗。状态字段固定返回
|
|
203
|
+
`authorized`、`denied` 或 `not determined`。
|
|
204
|
+
|
|
205
|
+
## 支持版本
|
|
206
|
+
|
|
207
|
+
前端库版本不低于 `0.0.40`。
|
|
208
|
+
|
|
209
|
+
## 支持平台
|
|
210
|
+
|
|
211
|
+
<table>
|
|
212
|
+
<thead>
|
|
213
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
214
|
+
</thead>
|
|
215
|
+
<tbody>
|
|
216
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
217
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
218
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
219
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
220
|
+
</tbody>
|
|
221
|
+
</table>
|
|
222
|
+
|
|
223
|
+
## 使用说明
|
|
224
|
+
|
|
225
|
+
- 本接口查询宿主应用权限,不等同于查询当前小程序 scope 授权。
|
|
226
|
+
- **iOS**:SDK 首次完成通知设置异步预热前,或应用重新激活后的刷新尚未完成时,四个通知字段可能仍为旧值或 not determined。
|
|
227
|
+
|
|
228
|
+
## 调用方式
|
|
229
|
+
|
|
230
|
+
### 同步 API
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
getAppAuthorizeSetting(params?: object): GetAppAuthorizeSettingResult
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## 入参
|
|
237
|
+
|
|
238
|
+
无。
|
|
239
|
+
|
|
240
|
+
## 调用示例
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
import { getAppAuthorizeSetting } from '@doubao-dev/framework/api';
|
|
244
|
+
|
|
245
|
+
const result = getAppAuthorizeSetting();
|
|
246
|
+
console.log(result.cameraAuthorized, result.microphoneAuthorized);
|
|
247
|
+
console.log(result.notificationAuthorized, result.locationReducedAccuracy);
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## 返回值
|
|
251
|
+
|
|
252
|
+
<table>
|
|
253
|
+
<thead>
|
|
254
|
+
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
255
|
+
</thead>
|
|
256
|
+
<tbody>
|
|
257
|
+
<tr><td><code>albumAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>相册授权状态;Android 固定返回 not determined</td></tr>
|
|
258
|
+
<tr><td><code>bluetoothAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>蓝牙授权状态</td></tr>
|
|
259
|
+
<tr><td><code>cameraAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>摄像头授权状态</td></tr>
|
|
260
|
+
<tr><td><code>locationAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>定位授权状态</td></tr>
|
|
261
|
+
<tr><td><code>locationReducedAccuracy</code></td><td><code>boolean</code></td><td>是</td><td>是否只能使用模糊定位;仅在 iOS 且定位已授权时具有精度含义,Android 固定返回 false</td></tr>
|
|
262
|
+
<tr><td><code>microphoneAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>麦克风授权状态</td></tr>
|
|
263
|
+
<tr><td><code>notificationAlertAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>通知提醒授权状态;Android 固定返回 not determined</td></tr>
|
|
264
|
+
<tr><td><code>notificationAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>通知总授权状态</td></tr>
|
|
265
|
+
<tr><td><code>notificationBadgeAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>通知角标授权状态;Android 固定返回 not determined</td></tr>
|
|
266
|
+
<tr><td><code>notificationSoundAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>通知声音授权状态;Android 固定返回 not determined</td></tr>
|
|
267
|
+
<tr><td><code>phoneCalendarAuthorized</code></td><td><code>AppAuthorizeStatus</code></td><td>是</td><td>系统日历授权状态</td></tr>
|
|
268
|
+
</tbody>
|
|
269
|
+
</table>
|
|
270
|
+
|
|
271
|
+
### 返回示例
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"albumAuthorized": "authorized",
|
|
276
|
+
"bluetoothAuthorized": "denied",
|
|
277
|
+
"cameraAuthorized": "authorized",
|
|
278
|
+
"locationAuthorized": "authorized",
|
|
279
|
+
"locationReducedAccuracy": false,
|
|
280
|
+
"microphoneAuthorized": "authorized",
|
|
281
|
+
"notificationAuthorized": "authorized",
|
|
282
|
+
"notificationAlertAuthorized": "authorized",
|
|
283
|
+
"notificationBadgeAuthorized": "denied",
|
|
284
|
+
"notificationSoundAuthorized": "authorized",
|
|
285
|
+
"phoneCalendarAuthorized": "not determined"
|
|
286
|
+
}
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## 平台差异
|
|
290
|
+
|
|
291
|
+
- **Android**:albumAuthorized 和通知分项固定返回 not determined,locationReducedAccuracy 固定返回 false 且不表示实际定位精度
|
|
292
|
+
- **Android**:bluetoothAuthorized、cameraAuthorized、locationAuthorized、microphoneAuthorized、notificationAuthorized 和 phoneCalendarAuthorized 不区分尚未申请和已经拒绝,两种情况均返回 denied
|
|
293
|
+
- **Android**:locationAuthorized 在粗略或精确定位任一权限已授权时返回 authorized;phoneCalendarAuthorized 仅在读、写日历权限均授权时返回 authorized
|
|
294
|
+
- **iOS**:相册 limited 映射为 authorized,通知 provisional 和 ephemeral 映射为 authorized
|
|
295
|
+
|
|
194
296
|
<a id="getappbaseinfosync"></a>
|
|
195
297
|
### getAppBaseInfoSync()
|
|
196
298
|
|
|
@@ -862,6 +964,30 @@ console.log(result.screenWidth, result.screenHeight);
|
|
|
862
964
|
• **wifiEnabled**: `boolean` - Wi-Fi 的系统开关
|
|
863
965
|
• **deviceOrientation**: `DeviceOrientation` - 设备方向
|
|
864
966
|
|
|
967
|
+
<a id="appauthorizestatus"></a>
|
|
968
|
+
### AppAuthorizeStatus
|
|
969
|
+
|
|
970
|
+
#### Type
|
|
971
|
+
|
|
972
|
+
`'authorized' | 'denied' | 'not determined'`
|
|
973
|
+
|
|
974
|
+
<a id="getappauthorizesettingresult"></a>
|
|
975
|
+
### GetAppAuthorizeSettingResult
|
|
976
|
+
|
|
977
|
+
#### Properties
|
|
978
|
+
|
|
979
|
+
• **albumAuthorized**: `AppAuthorizeStatus` - 相册授权状态;Android 固定返回 not determined
|
|
980
|
+
• **bluetoothAuthorized**: `AppAuthorizeStatus` - 蓝牙授权状态
|
|
981
|
+
• **cameraAuthorized**: `AppAuthorizeStatus` - 摄像头授权状态
|
|
982
|
+
• **locationAuthorized**: `AppAuthorizeStatus` - 定位授权状态
|
|
983
|
+
• **locationReducedAccuracy**: `boolean` - 是否只能使用模糊定位;仅在 iOS 且定位已授权时具有精度含义,Android 固定返回 false
|
|
984
|
+
• **microphoneAuthorized**: `AppAuthorizeStatus` - 麦克风授权状态
|
|
985
|
+
• **notificationAuthorized**: `AppAuthorizeStatus` - 通知总授权状态
|
|
986
|
+
• **notificationAlertAuthorized**: `AppAuthorizeStatus` - 通知提醒授权状态;Android 固定返回 not determined
|
|
987
|
+
• **notificationBadgeAuthorized**: `AppAuthorizeStatus` - 通知角标授权状态;Android 固定返回 not determined
|
|
988
|
+
• **notificationSoundAuthorized**: `AppAuthorizeStatus` - 通知声音授权状态;Android 固定返回 not determined
|
|
989
|
+
• **phoneCalendarAuthorized**: `AppAuthorizeStatus` - 系统日历授权状态
|
|
990
|
+
|
|
865
991
|
<a id="appbaseinfohost"></a>
|
|
866
992
|
### AppBaseInfoHost
|
|
867
993
|
|
|
@@ -10,6 +10,7 @@ Toast、Loading、Modal、ActionSheet、BottomSheet 和返回前提醒。
|
|
|
10
10
|
| --- | --- |
|
|
11
11
|
| [showModal](#showmodal) | 显示模态对话框。 |
|
|
12
12
|
| [showLoading](#showloading) | 显示 loading 提示框。 |
|
|
13
|
+
| [hideToast](#hidetoast) | 隐藏当前 Toast。 |
|
|
13
14
|
| [hideLoading](#hideloading) | 隐藏当前 loading。 |
|
|
14
15
|
| [showActionSheet](#showactionsheet) | 显示操作菜单。 |
|
|
15
16
|
| [showBottomSheet](#showbottomsheet) | 显示 Native 底部弹窗。 |
|
|
@@ -163,6 +164,76 @@ await hideLoading();
|
|
|
163
164
|
|
|
164
165
|
无返回字段。
|
|
165
166
|
|
|
167
|
+
<a id="hidetoast"></a>
|
|
168
|
+
### hideToast()
|
|
169
|
+
|
|
170
|
+
# hideToast
|
|
171
|
+
|
|
172
|
+
隐藏当前 Toast。
|
|
173
|
+
|
|
174
|
+
## 支持版本
|
|
175
|
+
|
|
176
|
+
前端库版本不低于 `0.0.26`。
|
|
177
|
+
|
|
178
|
+
## 支持平台
|
|
179
|
+
|
|
180
|
+
<table>
|
|
181
|
+
<thead>
|
|
182
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
183
|
+
</thead>
|
|
184
|
+
<tbody>
|
|
185
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
186
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
187
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
188
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
189
|
+
</tbody>
|
|
190
|
+
</table>
|
|
191
|
+
|
|
192
|
+
## 使用说明
|
|
193
|
+
|
|
194
|
+
- 当前没有 Toast 时调用无副作用。
|
|
195
|
+
|
|
196
|
+
## 调用方式
|
|
197
|
+
|
|
198
|
+
### 异步 API
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
hideToast(params?: HideInteractionParams): Promise<object>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## 入参
|
|
205
|
+
|
|
206
|
+
无。
|
|
207
|
+
|
|
208
|
+
## 调用示例
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
import { hideToast } from '@doubao-dev/framework/api';
|
|
212
|
+
|
|
213
|
+
await hideToast();
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## 成功返回
|
|
217
|
+
|
|
218
|
+
无返回字段。
|
|
219
|
+
|
|
220
|
+
## 错误处理
|
|
221
|
+
|
|
222
|
+
错误对象和通用错误码见 [通用错误处理](./common-errors.md#错误返回)。
|
|
223
|
+
|
|
224
|
+
### 错误码
|
|
225
|
+
|
|
226
|
+
#### 通用错误码
|
|
227
|
+
|
|
228
|
+
<table>
|
|
229
|
+
<thead>
|
|
230
|
+
<tr><th>errNo</th><th>errMsg</th><th>说明</th><th>平台</th></tr>
|
|
231
|
+
</thead>
|
|
232
|
+
<tbody>
|
|
233
|
+
<tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td><td>Android</td></tr>
|
|
234
|
+
</tbody>
|
|
235
|
+
</table>
|
|
236
|
+
|
|
166
237
|
<a id="hideloading"></a>
|
|
167
238
|
### hideLoading()
|
|
168
239
|
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
| --- | --- |
|
|
11
11
|
| [request](#request) | 发起网络请求。 request 本身不接受泛型参数;如需业务数据类型,请读取 result.data 后再做类型收窄或断言。 |
|
|
12
12
|
| [connectSocket](#connectsocket) | 创建一个 WebSocket 连接,并返回可操作该连接的 SocketTask。 该 API 会同步返回 SocketTask,但连接创建本身是异步过程。调用方应先在返回的 SocketTask 上注册事件回调,再等待 onOpen 表示连接可用。后续发送消息使用 SocketTask.send,关闭连接使用 SocketTask.close。 |
|
|
13
|
+
| [uploadFile](#uploadfile) | 上传本地文件,并返回可用于监听进度和中断上传的 UploadTask。 |
|
|
13
14
|
|
|
14
15
|
## API 详情
|
|
15
16
|
|
|
@@ -237,6 +238,152 @@ socketTask.onError((event) => {
|
|
|
237
238
|
|
|
238
239
|
- 同一智能服务内最多同时保持 5 条 WebSocket 连接,超过上限时 connectSocket 会立即同步失败并通过 SocketTask.onError 通知。
|
|
239
240
|
|
|
241
|
+
<a id="uploadfile"></a>
|
|
242
|
+
### uploadFile()
|
|
243
|
+
|
|
244
|
+
# uploadFile
|
|
245
|
+
|
|
246
|
+
上传本地文件,并返回可用于监听进度和中断上传的 UploadTask。
|
|
247
|
+
|
|
248
|
+
## 支持版本
|
|
249
|
+
|
|
250
|
+
前端库版本不低于 `0.0.39`。
|
|
251
|
+
|
|
252
|
+
## 支持平台
|
|
253
|
+
|
|
254
|
+
<table>
|
|
255
|
+
<thead>
|
|
256
|
+
<tr><th>平台</th><th>支持情况</th></tr>
|
|
257
|
+
</thead>
|
|
258
|
+
<tbody>
|
|
259
|
+
<tr><td>Android</td><td>支持</td></tr>
|
|
260
|
+
<tr><td>iOS</td><td>支持</td></tr>
|
|
261
|
+
<tr><td>PC</td><td>不支持</td></tr>
|
|
262
|
+
<tr><td>HarmonyOS</td><td>不支持</td></tr>
|
|
263
|
+
</tbody>
|
|
264
|
+
</table>
|
|
265
|
+
|
|
266
|
+
## 接入准备
|
|
267
|
+
|
|
268
|
+
### 前置条件
|
|
269
|
+
|
|
270
|
+
- url 需命中当前智能服务的上传域名白名单,filePath 需指向当前智能服务可访问的本地文件
|
|
271
|
+
|
|
272
|
+
## 使用说明
|
|
273
|
+
|
|
274
|
+
`uploadFile` 会同步返回任务对象,上传结果通过 success、fail 和 complete 回调通知。
|
|
275
|
+
建议在调用后立即注册进度和响应头监听;不再需要上传时调用 `UploadTask.abort`。
|
|
276
|
+
|
|
277
|
+
- success 与 fail 互斥,complete 在二者之后触发;任务结束或不再使用时应移除监听,必要时调用 abort。
|
|
278
|
+
|
|
279
|
+
## 调用方式
|
|
280
|
+
|
|
281
|
+
### 同步 API
|
|
282
|
+
|
|
283
|
+
```typescript
|
|
284
|
+
uploadFile(params: UploadFileParams): UploadTask
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## 入参
|
|
288
|
+
|
|
289
|
+
<table>
|
|
290
|
+
<thead>
|
|
291
|
+
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
292
|
+
</thead>
|
|
293
|
+
<tbody>
|
|
294
|
+
<tr><td><code>complete</code></td><td><code>(result: UploadFileSuccessCallbackResult | UploadFileFailCallbackResult) => void</code></td><td>否</td><td><code>-</code></td><td>-</td><td>上传完成回调,成功或失败都会触发。</td></tr>
|
|
295
|
+
<tr><td><code>enableProfile</code></td><td><code>false</code></td><td>否</td><td><code>false</code></td><td>-</td><td>是否返回网络 profile。当前 native upload 链路暂不支持,仅支持 false。</td></tr>
|
|
296
|
+
<tr><td><code>fail</code></td><td><code>(result: UploadFileFailCallbackResult) => void</code></td><td>否</td><td><code>-</code></td><td>-</td><td>上传失败回调。</td></tr>
|
|
297
|
+
<tr><td><code>filePath</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>要上传文件资源的本地路径。</td></tr>
|
|
298
|
+
<tr><td><code>formData</code></td><td><code>Record<string, unknown></code></td><td>否</td><td><code>-</code></td><td>-</td><td>额外的 form-data 字段。对象或数组值会按 JSON 字符串传递。</td></tr>
|
|
299
|
+
<tr><td><code>header</code></td><td><code>Record<string, string></code></td><td>否</td><td><code>-</code></td><td>-</td><td>HTTP 请求 Header。`referer`、`user-agent`、`content-type` 等宿主管控字段不会被业务覆盖。</td></tr>
|
|
300
|
+
<tr><td><code>name</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>文件对应的 form field name/key,服务端通过该 key 获取文件内容;multipart filename 使用 filePath 的 basename。</td></tr>
|
|
301
|
+
<tr><td><code>success</code></td><td><code>(result: UploadFileSuccessCallbackResult) => void</code></td><td>否</td><td><code>-</code></td><td>-</td><td>上传成功回调。</td></tr>
|
|
302
|
+
<tr><td><code>timeout</code></td><td><code>number</code></td><td>否</td><td><code>-</code></td><td>-</td><td>超时时间,单位 ms;不传时使用宿主侧默认超时配置。</td></tr>
|
|
303
|
+
<tr><td><code>url</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>开发者服务器地址,需为完整的 HTTP/HTTPS URL,并通过宿主侧上传域名白名单校验。</td></tr>
|
|
304
|
+
</tbody>
|
|
305
|
+
</table>
|
|
306
|
+
|
|
307
|
+
## 调用示例
|
|
308
|
+
|
|
309
|
+
```typescript
|
|
310
|
+
import { uploadFile } from '@doubao-dev/framework/api';
|
|
311
|
+
|
|
312
|
+
const task = uploadFile({
|
|
313
|
+
url: 'https://example.com/upload',
|
|
314
|
+
filePath: 'ttfile://temp/example.png',
|
|
315
|
+
name: 'file',
|
|
316
|
+
formData: { scene: 'profile' },
|
|
317
|
+
success(result) {
|
|
318
|
+
console.log(result.statusCode, result.data);
|
|
319
|
+
},
|
|
320
|
+
fail(error) {
|
|
321
|
+
console.error(error.errNo, error.errMsg);
|
|
322
|
+
},
|
|
323
|
+
complete(result) {
|
|
324
|
+
console.log('upload finished', result);
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
task.onProgressUpdate((event) => {
|
|
329
|
+
console.log(event.progress, event.totalBytesSent);
|
|
330
|
+
});
|
|
331
|
+
task.onHeadersReceived((event) => {
|
|
332
|
+
console.log(event.header);
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
// 不再需要上传时中断任务。
|
|
336
|
+
// task.abort();
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## 返回值
|
|
340
|
+
|
|
341
|
+
<table>
|
|
342
|
+
<thead>
|
|
343
|
+
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
344
|
+
</thead>
|
|
345
|
+
<tbody>
|
|
346
|
+
<tr><td><code>abort</code></td><td><code>() => void</code></td><td>是</td><td>中断当前上传任务。<br><br>中断结果会沿用本次上传的失败与完成回调返回;任务已经结束时调用无副作用。</td></tr>
|
|
347
|
+
<tr><td><code>offHeadersReceived</code></td><td><code>(callback?: (event: UploadTaskHeadersReceivedEvent) => void) => void</code></td><td>是</td><td>取消监听 HTTP Response Header 事件。<br><br>传入 callback 时只移除该回调;不传 callback 时移除当前任务的全部 Header 监听。</td></tr>
|
|
348
|
+
<tr><td><code>offProgressUpdate</code></td><td><code>(callback?: (event: UploadTaskProgressUpdateEvent) => void) => void</code></td><td>是</td><td>取消监听上传进度变化。<br><br>传入 callback 时只移除该回调;不传 callback 时移除当前任务的全部进度监听。</td></tr>
|
|
349
|
+
<tr><td><code>onHeadersReceived</code></td><td><code>(callback: (event: UploadTaskHeadersReceivedEvent) => void) => void</code></td><td>是</td><td>监听 HTTP Response Header 事件。<br><br>同一个任务可以注册多个回调,宿主收到上传响应头时依次调用。</td></tr>
|
|
350
|
+
<tr><td><code>onProgressUpdate</code></td><td><code>(callback: (event: UploadTaskProgressUpdateEvent) => void) => void</code></td><td>是</td><td>监听上传进度变化。<br><br>同一个任务可以注册多个回调,每次收到宿主进度事件时依次调用。</td></tr>
|
|
351
|
+
</tbody>
|
|
352
|
+
</table>
|
|
353
|
+
|
|
354
|
+
## 错误处理
|
|
355
|
+
|
|
356
|
+
同步调用失败时抛出错误。错误对象和通用错误码见 [通用错误处理](./common-errors.md#错误返回)。
|
|
357
|
+
|
|
358
|
+
### 失败示例
|
|
359
|
+
|
|
360
|
+
```json
|
|
361
|
+
{
|
|
362
|
+
"errMsg": "uploadFile:fail request time out",
|
|
363
|
+
"errNo": 121920,
|
|
364
|
+
"errorCode": 121920
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### 错误码
|
|
369
|
+
|
|
370
|
+
<table>
|
|
371
|
+
<thead>
|
|
372
|
+
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
373
|
+
</thead>
|
|
374
|
+
<tbody>
|
|
375
|
+
<tr><td><code>121999</code></td><td><code>uploadFile:fail url is invalid</code></td><td>Android、iOS</td><td>url 缺失或不是有效上传地址</td><td>传入完整的 HTTP/HTTPS URL</td></tr>
|
|
376
|
+
<tr><td><code>121901</code></td><td><code>uploadFile:fail url not in domain list</code></td><td>Android、iOS</td><td>url 未命中上传域名白名单</td><td>在智能服务配置中添加上传域名后重试</td></tr>
|
|
377
|
+
<tr><td><code>121902</code></td><td><code>uploadFile:fail no file exist</code></td><td>Android、iOS</td><td>filePath 为空、文件不存在或路径不是文件</td><td>使用文件 API 获取当前智能服务可访问的有效文件路径</td></tr>
|
|
378
|
+
<tr><td><code>121905</code></td><td><code>uploadFile:fail upload file abort</code></td><td>Android、iOS</td><td>调用 UploadTask.abort 中断上传</td><td>按业务需要处理取消状态,无需自动重试</td></tr>
|
|
379
|
+
<tr><td><code>121906</code></td><td><code>uploadFile:fail file path permission denied</code></td><td>Android、iOS</td><td>当前智能服务无权访问 filePath</td><td>改用当前智能服务目录内的文件</td></tr>
|
|
380
|
+
<tr><td><code>121920</code></td><td><code>uploadFile:fail request time out</code></td><td>Android、iOS</td><td>上传超过宿主超时时间</td><td>检查网络或设置合理的 timeout 后重试</td></tr>
|
|
381
|
+
<tr><td><code>121985</code></td><td><code>uploadFile:fail network unavailable</code></td><td>Android、iOS</td><td>当前网络不可用</td><td>恢复网络连接后重试</td></tr>
|
|
382
|
+
<tr><td><code>121991</code></td><td><code>uploadFile:fail network error</code></td><td>Android、iOS</td><td>上传过程中发生网络错误</td><td>检查网络和服务端状态后重试</td></tr>
|
|
383
|
+
<tr><td><code>121992</code></td><td><code>uploadFile:fail enableProfile is not supported</code></td><td>Android、iOS</td><td>enableProfile 设置为 true</td><td>移除 enableProfile 或设置为 false</td></tr>
|
|
384
|
+
</tbody>
|
|
385
|
+
</table>
|
|
386
|
+
|
|
240
387
|
## 相关类型
|
|
241
388
|
|
|
242
389
|
<a id="requestmethod"></a>
|
|
@@ -362,3 +509,78 @@ WebSocket 错误事件。 连接创建失败、发送失败、主动关闭失败
|
|
|
362
509
|
• **onClose**: `(callback: (event: SocketTaskCloseEvent) => void) => void` - 监听 WebSocket 与服务器连接断开的事件。 主动关闭、服务端关闭、连接被回收都可能触发该回调。 回调触发后当前任务会从内部连接表移除
|
|
363
510
|
• **onMessage**: `(callback: (event: SocketTaskMessageEvent) => void) => void` - 监听 WebSocket 接收到服务器发送信息的事件。 服务端每下发一条消息都会触发一次回调。消息内容通过 event.data 返回, 类型可能是 string 或 ArrayBuffer
|
|
364
511
|
• **onError**: `(callback: (event: SocketTaskErrorEvent) => void) => void` - 监听 WebSocket 发生错误的事件。 连接创建、发送、关闭或底层通道出现异常时触发。 该回调只表示发生错误,不等同于连接一定已经关闭;是否关闭应结合 readyState 或后续 onClose 事件判断
|
|
512
|
+
|
|
513
|
+
<a id="uploadfilesuccesscallbackresult"></a>
|
|
514
|
+
### UploadFileSuccessCallbackResult
|
|
515
|
+
|
|
516
|
+
文件上传成功回调结果。
|
|
517
|
+
|
|
518
|
+
#### Properties
|
|
519
|
+
|
|
520
|
+
• **statusCode**: `number` - HTTP 状态码
|
|
521
|
+
• **header**: `Record<string, string>` - HTTP 响应头
|
|
522
|
+
• **data?**: `string` - 服务器返回的数据
|
|
523
|
+
|
|
524
|
+
<a id="uploadfilefailcallbackresult"></a>
|
|
525
|
+
### UploadFileFailCallbackResult
|
|
526
|
+
|
|
527
|
+
文件上传失败回调结果。
|
|
528
|
+
|
|
529
|
+
#### Properties
|
|
530
|
+
|
|
531
|
+
• **errMsg**: `string` - 错误信息
|
|
532
|
+
• **errNo?**: `number` - 错误码,尽量对齐抖音小程序 uploadFile 错误码
|
|
533
|
+
• **errorCode?**: `number` - 抖音小程序风格错误码字段
|
|
534
|
+
• **statusCode?**: `number` - HTTP 状态码;请求已收到响应但被判定失败时可能存在
|
|
535
|
+
• **header?**: `Record<string, string>` - HTTP 响应头;请求已收到响应但被判定失败时可能存在
|
|
536
|
+
|
|
537
|
+
<a id="uploadtaskprogressupdateevent"></a>
|
|
538
|
+
### UploadTaskProgressUpdateEvent
|
|
539
|
+
|
|
540
|
+
文件上传进度事件。
|
|
541
|
+
|
|
542
|
+
#### Properties
|
|
543
|
+
|
|
544
|
+
• **progress**: `number` - 上传进度百分比,范围 0 - 100
|
|
545
|
+
• **totalBytesSent**: `number` - 已经上传的数据长度,单位 B
|
|
546
|
+
• **totalBytesExpectedToSend**: `number` - 预期需要上传的数据总长度,单位 B
|
|
547
|
+
|
|
548
|
+
<a id="uploadtaskheadersreceivedevent"></a>
|
|
549
|
+
### UploadTaskHeadersReceivedEvent
|
|
550
|
+
|
|
551
|
+
文件上传响应头事件。
|
|
552
|
+
|
|
553
|
+
#### Properties
|
|
554
|
+
|
|
555
|
+
• **header**: `Record<string, string>` - HTTP 响应头
|
|
556
|
+
|
|
557
|
+
<a id="uploadfileparams"></a>
|
|
558
|
+
### UploadFileParams
|
|
559
|
+
|
|
560
|
+
文件上传参数。
|
|
561
|
+
|
|
562
|
+
#### Properties
|
|
563
|
+
|
|
564
|
+
• **url**: `string` - 开发者服务器地址,需为完整的 HTTP/HTTPS URL,并通过宿主侧上传域名白名单校验
|
|
565
|
+
• **filePath**: `string` - 要上传文件资源的本地路径
|
|
566
|
+
• **name**: `string` - 文件对应的 form field name/key,服务端通过该 key 获取文件内容;multipart filename 使用 filePath 的 basename
|
|
567
|
+
• **header?**: `Record<string, string>` - HTTP 请求 Header。referer、user-agent、content-type 等宿主管控字段不会被业务覆盖
|
|
568
|
+
• **formData?**: `Record<string, unknown>` - 额外的 form-data 字段。对象或数组值会按 JSON 字符串传递
|
|
569
|
+
• **timeout?**: `number` - 超时时间,单位 ms;不传时使用宿主侧默认超时配置
|
|
570
|
+
• **enableProfile?**: `false` - 是否返回网络 profile。当前 native upload 链路暂不支持,仅支持 false
|
|
571
|
+
• **success?**: `(result: UploadFileSuccessCallbackResult) => void` - 上传成功回调
|
|
572
|
+
• **fail?**: `(result: UploadFileFailCallbackResult) => void` - 上传失败回调
|
|
573
|
+
• **complete?**: `(result: UploadFileSuccessCallbackResult | UploadFileFailCallbackResult) => void` - 上传完成回调,成功或失败都会触发
|
|
574
|
+
|
|
575
|
+
<a id="uploadtask"></a>
|
|
576
|
+
### UploadTask
|
|
577
|
+
|
|
578
|
+
通过 uploadFile 获取的文件上传任务实例。
|
|
579
|
+
|
|
580
|
+
#### Properties
|
|
581
|
+
|
|
582
|
+
• **abort**: `() => void` - 中断当前上传任务。 中断结果会沿用本次上传的失败与完成回调返回;任务已经结束时调用无副作用
|
|
583
|
+
• **onProgressUpdate**: `(callback: (event: UploadTaskProgressUpdateEvent) => void) => void` - 监听上传进度变化。 同一个任务可以注册多个回调,每次收到宿主进度事件时依次调用
|
|
584
|
+
• **offProgressUpdate**: `(callback?: (event: UploadTaskProgressUpdateEvent) => void) => void` - 取消监听上传进度变化。 传入 callback 时只移除该回调;不传 callback 时移除当前任务的全部进度监听
|
|
585
|
+
• **onHeadersReceived**: `(callback: (event: UploadTaskHeadersReceivedEvent) => void) => void` - 监听 HTTP Response Header 事件。 同一个任务可以注册多个回调,宿主收到上传响应头时依次调用
|
|
586
|
+
• **offHeadersReceived**: `(callback?: (event: UploadTaskHeadersReceivedEvent) => void) => void` - 取消监听 HTTP Response Header 事件。 传入 callback 时只移除该回调;不传 callback 时移除当前任务的全部 Header 监听
|