@doubao-dev/framework 0.0.39 → 0.0.41

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/dist/api.d.ts CHANGED
@@ -47,6 +47,153 @@ export declare enum ActionDirectiveType {
47
47
  FORM_SUBMIT = "form_submit"
48
48
  }
49
49
 
50
+ /**
51
+ * 向系统日历添加事件。
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * import { addPhoneCalendar } from '@doubao-dev/framework/api';
56
+ *
57
+ * const startTime = Math.floor(Date.now() / 1000) + 3600;
58
+ *
59
+ * await addPhoneCalendar({
60
+ * title: '项目评审',
61
+ * startTime,
62
+ * endTime: startTime + 1800,
63
+ * alarm: true,
64
+ * alarmOffset: 300
65
+ * });
66
+ * ```
67
+ *
68
+ * @since 0.0.19
69
+ * @contractStatus verified | Android、iOS 均支持向系统日历写入一次性事件;成功通过 Promise resolve 空对象,失败通过 Promise reject。
70
+ * @platformSupport Android | supported | 写入系统日历事件;path 传入后按原值追加到日历备注。
71
+ * @platformSupport iOS | supported | 写入系统日历事件;path 传入后按原值追加到日历备注。
72
+ * @platformSupport PC | unsupported | 当前未提供该平台实现。
73
+ * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
74
+ * @permission applet | scope.addPhoneCalendar | required | Android,iOS | 需要在 manifest 中声明 scope.addPhoneCalendar,并由用户授权写入系统日历。
75
+ * @authorizationBehavior Android | 首次调用会依次申请应用日历授权和系统日历读写权限;用户拒绝、取消或权限被撤销后调用失败,可通过重新发起授权或系统设置恢复。
76
+ * @authorizationBehavior iOS | 首次调用会依次申请应用日历授权和系统日历写入权限;用户拒绝、取消或权限被撤销后调用失败,可通过重新发起授权或系统设置恢复。
77
+ * @precondition iOS | 设备需要存在可写入的系统日历账户。
78
+ * @usageNote All | startTime、endTime 使用 Unix 秒级时间戳;alarmOffset 单位为秒,Android 系统日历提醒粒度会按分钟处理。
79
+ * @errorCode none | - | - | Android,iOS | 当前失败通过 Promise reject 返回文本信息,未稳定返回顶层 errNo/errMsg | 根据异常信息检查授权、日历账户和时间参数
80
+ *
81
+ * @public
82
+ */
83
+ export declare const addPhoneCalendar: (params: AddPhoneCalendarParams) => Promise<object>;
84
+
85
+ /**
86
+ * 添加系统日历事件的请求参数。
87
+ *
88
+ * @public
89
+ */
90
+ export declare interface AddPhoneCalendarParams {
91
+ /** 日历事件标题。 */
92
+ title: string;
93
+ /** 开始时间的 Unix 秒级时间戳。 */
94
+ startTime: number;
95
+ /**
96
+ * 是否为全天事件。
97
+ *
98
+ * @default false
99
+ */
100
+ allDay?: boolean;
101
+ /**
102
+ * 事件描述。
103
+ *
104
+ * @default -
105
+ */
106
+ description?: string;
107
+ /**
108
+ * 事件位置。
109
+ *
110
+ * @default -
111
+ */
112
+ location?: string;
113
+ /**
114
+ * 结束时间的 Unix 秒级时间戳。
115
+ *
116
+ * @default startTime
117
+ */
118
+ endTime?: number;
119
+ /**
120
+ * 是否提醒。
121
+ *
122
+ * @default true
123
+ */
124
+ alarm?: boolean;
125
+ /**
126
+ * 提前提醒时间,单位秒。0 表示开始时提醒。
127
+ *
128
+ * @default 0
129
+ */
130
+ alarmOffset?: number;
131
+ /**
132
+ * 跳转链接或客户端路由。传入后按原值追加到日历备注。
133
+ *
134
+ * @default -
135
+ */
136
+ path?: string;
137
+ }
138
+
139
+ /**
140
+ * 向系统日历添加重复事件。
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * import { addPhoneRepeatCalendar } from '@doubao-dev/framework/api';
145
+ *
146
+ * const startTime = Math.floor(Date.now() / 1000) + 3600;
147
+ *
148
+ * await addPhoneRepeatCalendar({
149
+ * title: '每周例会',
150
+ * startTime,
151
+ * endTime: startTime + 1800,
152
+ * repeatInterval: 'week'
153
+ * });
154
+ * ```
155
+ *
156
+ * @since 0.0.25
157
+ * @contractStatus verified | Android、iOS 均支持向系统日历写入重复事件;成功通过 Promise resolve 空对象,失败通过 Promise reject。
158
+ * @platformSupport Android | supported | 写入系统日历重复事件;repeatInterval 支持 day、week、month、year,path 行为与 addPhoneCalendar 一致。
159
+ * @platformSupport iOS | supported | 写入系统日历重复事件;repeatInterval 支持 day、week、month、year,path 行为与 addPhoneCalendar 一致。
160
+ * @platformSupport PC | unsupported | 当前未提供该平台实现。
161
+ * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
162
+ * @permission applet | scope.addPhoneCalendar | required | Android,iOS | 需要在 manifest 中声明 scope.addPhoneCalendar,并由用户授权写入系统日历。
163
+ * @authorizationBehavior Android | 首次调用会依次申请应用日历授权和系统日历读写权限;用户拒绝、取消或权限被撤销后调用失败,可通过重新发起授权或系统设置恢复。
164
+ * @authorizationBehavior iOS | 首次调用会依次申请应用日历授权和系统日历写入权限;用户拒绝、取消或权限被撤销后调用失败,可通过重新发起授权或系统设置恢复。
165
+ * @precondition iOS | 设备需要存在可写入的系统日历账户。
166
+ * @precondition All | repeatInterval 为 month 时,startTime 所在日期不能大于 28 日。
167
+ * @usageNote All | repeatInterval 默认 month;repeatEndTime 不传表示一直重复;startTime、endTime、repeatEndTime 使用 Unix 秒级时间戳。
168
+ * @errorCode none | - | - | Android,iOS | 当前失败通过 Promise reject 返回文本信息,未稳定返回顶层 errNo/errMsg | 根据异常信息检查授权、日历账户、重复周期和时间参数
169
+ *
170
+ * @public
171
+ */
172
+ export declare const addPhoneRepeatCalendar: (params: AddPhoneRepeatCalendarParams) => Promise<object>;
173
+
174
+ /**
175
+ * 添加重复日历事件的请求参数。
176
+ *
177
+ * @public
178
+ */
179
+ export declare interface AddPhoneRepeatCalendarParams extends AddPhoneCalendarParams {
180
+ /**
181
+ * 重复周期。
182
+ *
183
+ * @default month
184
+ */
185
+ repeatInterval?: CalendarRepeatInterval;
186
+ /**
187
+ * 重复结束时间的 Unix 秒级时间戳。
188
+ *
189
+ * @default -
190
+ */
191
+ repeatEndTime?: number;
192
+ }
193
+
194
+ /** @public */
195
+ export declare type AppAuthorizeStatus = 'authorized' | 'denied' | 'not determined';
196
+
50
197
  /** @public */
51
198
  export declare interface AppBaseInfoHost {
52
199
  /** 宿主 app 对应的 appId */
@@ -112,7 +259,24 @@ export declare type AppTheme = 'light' | 'dark';
112
259
  * @authorizationBehavior All | 调用会主动向用户发起指定 scope 的授权弹窗。用户拒绝、取消或此前已撤销授权时调用直接失败,可再次调用 `authorize` 重新发起;scope 未在应用权限声明中配置或不受支持时也会失败。
113
260
  * @precondition All | 在应用权限声明中配置需要申请的 scope。
114
261
  * @usageNote All | 授权状态可通过 `getSetting` 查询;建议在真正需要能力前再发起授权。
115
- * @errorCode none | - | - | Android,iOS | 用户拒绝、取消或 scope 非法等失败当前只返回文本信息,未稳定返回顶层 errNo/errMsg | 根据异常信息提示用户重新授权或检查 scope 声明
262
+ * @errorExample
263
+ * ```json
264
+ * {
265
+ * "errNo": 107,
266
+ * "errMsg": "user permission denied"
267
+ * }
268
+ * ```
269
+ * @errorCode common | 102 | Android,iOS
270
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | 传入的 scope 为空或不受支持(如 scope.payment) | 检查并传入受支持的 scope 后重试。
271
+ * @errorCode errNo | 106 | system permission denied | Android,iOS | 对应能力的系统权限被拒绝 | 引导用户在系统设置中开启对应权限后重试。
272
+ * @errorCode errNo | 107 | user permission denied | Android,iOS | 用户拒绝了本次应用授权 | 说明能力用途后再次调用 `authorize` 重新发起授权。
273
+ * @errorCode errNo | 114 | operation cancelled | Android,iOS | 用户取消了授权弹窗 | 用户需要时可再次调用 `authorize` 重新发起授权。
274
+ * @errorCode errNo | 301 | network request cancelled | iOS | 授权过程中的网络请求被取消 | 确认应用和网络状态后重试。
275
+ * @errorCode errNo | 302 | connection timed out | iOS | 授权过程中的网络连接超时 | 检查网络连接后重试。
276
+ * @errorCode errNo | 303 | no network connection | iOS | 当前无可用网络连接 | 恢复网络连接后重试。
277
+ * @errorCode errNo | 305 | network failure | Android,iOS | 授权过程中发生其他网络错误 | 检查网络连接,稍后重试。
278
+ * @errorCode errNo | 112 | invalid result | iOS | 授权服务返回的数据无法解析 | 稍后重试;持续失败时反馈服务端响应异常。
279
+ * @platformNote iOS | 网络类失败会细分为 301/302/303/305,并可能返回 112;Android 的网络类失败统一返回 305。
116
280
  *
117
281
  * @public
118
282
  */
@@ -568,6 +732,13 @@ export declare interface BottomSheetCancelResult {
568
732
  */
569
733
  export declare type BottomSheetCancelSource = 'mask' | 'gesture' | 'hostUnavailable' | 'unknown';
570
734
 
735
+ /**
736
+ * 日历重复周期。
737
+ *
738
+ * @public
739
+ */
740
+ export declare type CalendarRepeatInterval = 'day' | 'week' | 'month' | 'year';
741
+
571
742
  /** @public */
572
743
  export declare interface CanIUseParams {
573
744
  /** 需要检测的能力标识,例如 API 名称 */
@@ -609,7 +780,15 @@ export declare interface CanIUseResult {
609
780
  * "open": false
610
781
  * }
611
782
  * ```
612
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息重试
783
+ * @errorExample
784
+ * ```json
785
+ * {
786
+ * "errNo": 103,
787
+ * "errMsg": "feature not support"
788
+ * }
789
+ * ```
790
+ * @errorCode common | 102 | Android
791
+ * @errorCode errNo | 103 | feature not support | Android | 当前运行环境无法获取系统无障碍服务 | 在具备系统无障碍服务的设备上调用。
613
792
  *
614
793
  * @public
615
794
  */
@@ -958,7 +1137,7 @@ declare type ClientEventRegistry<Params extends object = object> = (handler: (pa
958
1137
  * @usageNote All | close 已废弃,推荐使用 navigateBack 返回上一页;省略 containerID 时关闭当前栈顶页面。
959
1138
  * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
960
1139
  *
961
- * @public
1140
+ * @internal
962
1141
  */
963
1142
  declare const close_2: (params?: CloseParams | undefined) => Promise<object>;
964
1143
  export { close_2 as close }
@@ -1224,7 +1403,23 @@ export declare interface ConnectedBluetoothDevice {
1224
1403
  * "readyState": 0
1225
1404
  * }
1226
1405
  * ```
1227
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
1406
+ * @errorExample
1407
+ * ```json
1408
+ * {
1409
+ * "errNo": 1501001,
1410
+ * "errMsg": "websocket connection limit exceeded"
1411
+ * }
1412
+ * ```
1413
+ * @errorCode common | 102 | Android
1414
+ * @errorCode common | 113 | Android,iOS
1415
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | 创建连接时 url 为空或非 ws/wss,或调用 send 时 base64 数据非法、dataType 不支持 | 传入合法的 ws/wss url 与受支持的发送数据后重试。
1416
+ * @errorCode errNo | 110 | API call prohibited | Android,iOS | socket url 未通过域名白名单校验 | 确认目标域名已在智能服务中配置后重试。
1417
+ * @errorCode errNo | 116 | resource not found | Android,iOS | 对已关闭或不存在的 socketTaskId 调用 send/close | 仅在 onOpen 后、onClose 前操作连接,不要复用已关闭的连接。
1418
+ * @errorCode errNo | 305 | network failure | Android,iOS | 建立连接、发送或关闭过程中发生网络错误 | 检查网络连接,必要时重新建立连接。
1419
+ * @errorCode errNo | 1501001 | websocket connection limit exceeded | Android,iOS | 同一智能服务的 WebSocket 连接数超过上限 | 关闭不再使用的连接后重试。
1420
+ * @errorCode errNo | 1501002 | websocket is not open | iOS | 连接尚未打开或已关闭时调用 send | 在收到 onOpen 事件后再发送数据。
1421
+ * @platformNote Android | 建立连接失败统一返回 102;send 在连接未打开时返回 305 或 116。
1422
+ * @platformNote iOS | send 在连接未打开时返回 1501002。
1228
1423
  *
1229
1424
  * @public
1230
1425
  */
@@ -1305,7 +1500,20 @@ export declare interface ConnectSocketParams {
1305
1500
  * ```json
1306
1501
  * {}
1307
1502
  * ```
1308
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据返回的错误信息提示用户重试
1503
+ * @errorExample
1504
+ * ```json
1505
+ * {
1506
+ * "errNo": 1401003,
1507
+ * "errMsg": "connect wifi failed"
1508
+ * }
1509
+ * ```
1510
+ * @errorCode common | 102 | Android,iOS
1511
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | ssid 为空 | 传入非空的 ssid 后重试
1512
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 设备无可用的 Wi-Fi 能力,或 iOS 系统版本过低不支持连接 | 检查设备与系统能力,不支持时不要调用
1513
+ * @errorCode errNo | 1401001 | wifi is not initialized | Android,iOS | 调用前未先调用 startWifi 完成初始化 | 先调用 startWifi 再连接 Wi-Fi
1514
+ * @errorCode errNo | 115 | operation timeout | Android | 连接 Wi-Fi 超时 | 确认目标网络可用后提示用户重试
1515
+ * @errorCode errNo | 1401003 | connect wifi failed | Android,iOS | 连接目标 Wi-Fi 失败(如密码错误、网络不可达、系统连接被拒) | 检查 ssid 与密码后提示用户重试
1516
+ * @platformNote Android | 连接超时返回 115;iOS 未细分超时,连接失败统一归为 1401003。
1309
1517
  *
1310
1518
  * @public
1311
1519
  */
@@ -1362,6 +1570,22 @@ export declare type Content = {
1362
1570
  /** API 调用参数。 */
1363
1571
  arguments: object;
1364
1572
  };
1573
+ } | {
1574
+ /** 模型响应提示。 */
1575
+ type: 'responseHint';
1576
+ /** 用户动作和模型响应建议。 */
1577
+ data: {
1578
+ /**
1579
+ * 用户做了什么。
1580
+ * @default -
1581
+ */
1582
+ userAction?: string;
1583
+ /**
1584
+ * 建议模型如何响应。
1585
+ * @default -
1586
+ */
1587
+ responseGuidance?: string;
1588
+ };
1365
1589
  };
1366
1590
 
1367
1591
  /**
@@ -1572,7 +1796,7 @@ export declare function createInnerAudioContext(): InnerAudioContext;
1572
1796
  * "logId": "20260519xxxx"
1573
1797
  * }
1574
1798
  * ```
1575
- * @errorCode none | - | - | Android,iOS | 无稳定的顶层 errNo/errMsg;调用失败时 Promise reject,业务错误(errNo、errMsg、errLogId)在错误对象的 data 字段 | 通过 catch 捕获并读取 e.data 排查
1799
+ * @errorCode common | 102 | Android,iOS
1576
1800
  * @knownIssue All | 失败结果不会作为 await 的返回值,需通过 catch 捕获并从错误对象的 data 字段读取 errNo、errMsg、errLogId。
1577
1801
  *
1578
1802
  * @public
@@ -1668,7 +1892,17 @@ export declare interface CreateSignOrderSuccessResult {
1668
1892
  * "expiresIn": 3600
1669
1893
  * }
1670
1894
  * ```
1671
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
1895
+ * @errorExample
1896
+ * ```json
1897
+ * {
1898
+ * "errNo": 104,
1899
+ * "errMsg": "invalid parameter"
1900
+ * }
1901
+ * ```
1902
+ * @errorCode common | 102 | Android,iOS
1903
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | taskType 不是 remote(如传入 local) | 传入 remote 任务类型后重试。
1904
+ * @errorCode errNo | 112 | invalid result | Android,iOS | 远端任务创建成功但返回数据为空或缺少 taskId | 稍后重试;持续失败时反馈服务端响应异常。
1905
+ * @platformNote All | taskType 非 remote 返回 104;远端返回数据为空或缺少 taskId 返回 112;其他失败统一返回 102。
1672
1906
  *
1673
1907
  * @public
1674
1908
  */
@@ -1789,7 +2023,7 @@ export declare type DeviceOrientation = 'portrait' | 'landscape';
1789
2023
  * ```json
1790
2024
  * {}
1791
2025
  * ```
1792
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息重试
2026
+ * @errorCode common | 102 | Android,iOS
1793
2027
  *
1794
2028
  * @public
1795
2029
  */
@@ -1800,6 +2034,7 @@ export declare const disableUserScreenRecord: (params?: {} | undefined) => Promi
1800
2034
  *
1801
2035
  * @param params - 动作描述、预期行为及工具调用约束参数。
1802
2036
  * @returns 返回一个 Promise,在动作指令成功下发时解析。
2037
+ * @deprecated 使用 {@link sendFollowUpMessage} 发送后续消息。
1803
2038
  * @remarks
1804
2039
  * 适用于卡片交互后向模型补充结构化动作上下文,例如按钮点击、选项选择或表单提交。
1805
2040
  * `getWidgetInstanceId` 仅在卡片环境中有效,在智能服务页面中会返回 `undefined`。如果需要在页面中调用,
@@ -1829,9 +2064,18 @@ export declare const disableUserScreenRecord: (params?: {} | undefined) => Promi
1829
2064
  * @precondition Android | 在卡片或会话环境中调用,需传入有效的 widgetInstanceId。
1830
2065
  * @precondition iOS | 在卡片或会话环境中调用,需传入有效的 widgetInstanceId。
1831
2066
  * @usageNote All | 请在卡片交互(按钮点击、选项选择、表单提交)后调用,向模型补充结构化动作上下文。
1832
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
2067
+ * @errorExample
2068
+ * ```json
2069
+ * {
2070
+ * "errNo": 116,
2071
+ * "errMsg": "resource not found"
2072
+ * }
2073
+ * ```
2074
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前运行环境未接入消息下发能力(宿主消息依赖或消息服务缺失) | 请在支持消息下发的豆包环境中调用。
2075
+ * @errorCode errNo | 116 | resource not found | Android,iOS | 依据 widgetInstanceId 找不到对应会话 | 确认 widgetInstanceId 有效且处于会话环境后重试。
2076
+ * @platformNote All | 找不到会话返回 116;宿主消息依赖或消息服务缺失返回 103。
1833
2077
  *
1834
- * @public
2078
+ * @internal
1835
2079
  */
1836
2080
  export declare const dispatchActionDirective: (params: DispatchActionDirectiveParams) => Promise<object>;
1837
2081
 
@@ -1898,6 +2142,167 @@ export declare interface DoubaoAppAccountInfo {
1898
2142
  version: string;
1899
2143
  }
1900
2144
 
2145
+ /**
2146
+ * 下载文件,并返回可取消、可监听进度的 {@link DownloadTask}。
2147
+ *
2148
+ * @summary 下载文件。
2149
+ * @param params 下载参数,字段见 {@link DownloadFileParams}。
2150
+ * @returns 下载任务。
2151
+ *
2152
+ * @remarks
2153
+ * - 下载使用 GET 请求。
2154
+ * - HTTP 传输完成且文件写入成功后,无论 statusCode 是 2xx、4xx 还是 5xx,Promise 都会 resolve。
2155
+ * - 域名校验失败、路径非法、超时、取消、网络异常、写入失败会使 Promise reject。
2156
+ *
2157
+ * @example
2158
+ * ```typescript
2159
+ * import { downloadFile } from '@doubao-dev/framework/api';
2160
+ *
2161
+ * const downloadTask = downloadFile({
2162
+ * url: 'https://example.com/files/report.pdf'
2163
+ * });
2164
+ *
2165
+ * downloadTask
2166
+ * .then((result) => {
2167
+ * console.log(result.statusCode, result.tempFilePath ?? result.filePath);
2168
+ * })
2169
+ * .catch((error) => {
2170
+ * console.error(error);
2171
+ * })
2172
+ * .finally(() => {
2173
+ * console.log('download finished');
2174
+ * });
2175
+ *
2176
+ * downloadTask.onProgressUpdate((event) => {
2177
+ * console.log(`downloaded ${event.progress}%`);
2178
+ * });
2179
+ *
2180
+ * downloadTask.onHeadersReceived((event) => {
2181
+ * console.log(event.header);
2182
+ * });
2183
+ * ```
2184
+ *
2185
+ * @since 0.0.40
2186
+ * @contractStatus verified | Android、iOS 均支持 HTTPS GET 下载、域名校验、临时或用户目录写入、超时、取消及进度和响应头监听。
2187
+ * @platformSupport Android | supported | 支持 HTTPS GET 下载、域名白名单校验、临时或用户目录写入、超时、取消及任务事件监听。
2188
+ * @platformSupport iOS | supported | 支持 HTTPS GET 下载、域名白名单校验、临时或用户目录写入、超时、取消及任务事件监听。
2189
+ * @platformSupport PC | unsupported | 当前未提供该平台实现。
2190
+ * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
2191
+ * @permission none | - | none | Android,iOS | 无需额外权限
2192
+ * @precondition All | 下载地址需通过宿主侧下载域名白名单校验,单个文件不得超过 200 MB,单个智能服务同时最多执行 10 个下载任务;指定 filePath 时仅支持临时目录或用户目录。
2193
+ * @usageNote All | 未指定 filePath 时文件写入临时目录,并通过 Promise resolve 结果的 tempFilePath 返回;临时文件的生命周期由宿主管理。
2194
+ * @usageNote All | 不跟随 HTTP 重定向,3xx 响应使 Promise reject;4xx、5xx 响应在文件写入成功后仍使 Promise resolve。
2195
+ * @resultExample
2196
+ * ```json
2197
+ * {
2198
+ * "statusCode": 200,
2199
+ * "header": {
2200
+ * "content-type": "application/pdf"
2201
+ * },
2202
+ * "tempFilePath": "appletfile://temp/report.pdf"
2203
+ * }
2204
+ * ```
2205
+ * @errorCode none | - | - | Android,iOS | 下载失败会使 Promise reject,当前不提供稳定的 API 专属错误码 | 根据错误信息检查 URL、域名白名单、重定向、并发任务数、文件路径、文件大小和网络状态后重试
2206
+ *
2207
+ * @public
2208
+ */
2209
+ export declare function downloadFile(params: DownloadFileParams): DownloadTask;
2210
+
2211
+ /**
2212
+ * 下载文件参数。
2213
+ *
2214
+ * @public
2215
+ */
2216
+ export declare interface DownloadFileParams {
2217
+ /** 下载资源地址,需为完整 HTTPS URL,并通过宿主侧下载域名白名单校验。 */
2218
+ url: string;
2219
+ /**
2220
+ * 请求 Header。`referer` 和 `user-agent` 由宿主管控,业务传入值不会透传。
2221
+ *
2222
+ * @default -
2223
+ */
2224
+ header?: Record<string, string>;
2225
+ /**
2226
+ * 下载任务超时时间,单位 ms;不传或传入非正数时使用 60000,超过 300000 时按 300000 处理。
2227
+ *
2228
+ * @default 60000
2229
+ * @constraint 有效范围为 1-300000
2230
+ */
2231
+ timeout?: number;
2232
+ /**
2233
+ * 目标文件路径,仅支持 `appletfile://temp/...` 或 `appletfile://user/...`。
2234
+ *
2235
+ * @default 由系统创建临时下载文件
2236
+ */
2237
+ filePath?: string;
2238
+ }
2239
+
2240
+ /** @public */
2241
+ export declare interface DownloadFileProgressUpdate {
2242
+ /** 下载进度百分比,范围 0-100。 */
2243
+ progress: number;
2244
+ /** 已经下载的数据长度,单位 Bytes。 */
2245
+ totalBytesWritten: number;
2246
+ /** 预期需要下载的数据总长度,未知时可能为 -1。 */
2247
+ totalBytesExpectedToWrite: number;
2248
+ }
2249
+
2250
+ /** @public */
2251
+ export declare interface DownloadFileResult {
2252
+ /** HTTP 状态码。非 2xx 响应也会在下载写入成功后返回。 */
2253
+ statusCode: number;
2254
+ /** HTTP 响应头。 */
2255
+ header: Record<string, string>;
2256
+ /** 未指定 `filePath` 时返回的临时文件路径。 */
2257
+ tempFilePath?: string;
2258
+ /** 指定 `filePath` 时返回的目标文件路径。 */
2259
+ filePath?: string;
2260
+ }
2261
+
2262
+ /**
2263
+ * 下载任务。
2264
+ *
2265
+ * @public
2266
+ */
2267
+ export declare interface DownloadTask extends Promise<DownloadFileResult> {
2268
+ /**
2269
+ * 取消下载任务。
2270
+ *
2271
+ * 任务完成后调用不会产生额外效果;取消成功后下载 Promise 会 reject。
2272
+ */
2273
+ abort: () => void;
2274
+ /**
2275
+ * 监听下载进度变化。
2276
+ *
2277
+ * 同一个回调只会注册一次,可以注册多个不同回调。
2278
+ */
2279
+ onProgressUpdate: (callback: (event: DownloadFileProgressUpdate) => void) => void;
2280
+ /**
2281
+ * 取消监听下载进度变化。
2282
+ *
2283
+ * 传入 callback 时仅移除该回调;不传 callback 时移除当前任务的全部进度监听。
2284
+ */
2285
+ offProgressUpdate: (callback?: (event: DownloadFileProgressUpdate) => void) => void;
2286
+ /**
2287
+ * 监听 HTTP Response Header 事件。
2288
+ *
2289
+ * 同一个回调只会注册一次,可以注册多个不同回调。
2290
+ */
2291
+ onHeadersReceived: (callback: (event: DownloadTaskHeadersReceivedEvent) => void) => void;
2292
+ /**
2293
+ * 取消监听 HTTP Response Header 事件。
2294
+ *
2295
+ * 传入 callback 时仅移除该回调;不传 callback 时移除当前任务的全部 Header 监听。
2296
+ */
2297
+ offHeadersReceived: (callback?: (event: DownloadTaskHeadersReceivedEvent) => void) => void;
2298
+ }
2299
+
2300
+ /** @public */
2301
+ export declare interface DownloadTaskHeadersReceivedEvent {
2302
+ /** HTTP 响应头。 */
2303
+ header: Record<string, string>;
2304
+ }
2305
+
1901
2306
  /**
1902
2307
  * 允许用户录屏。
1903
2308
  *
@@ -1923,7 +2328,7 @@ export declare interface DoubaoAppAccountInfo {
1923
2328
  * ```json
1924
2329
  * {}
1925
2330
  * ```
1926
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息重试
2331
+ * @errorCode common | 102 | Android,iOS
1927
2332
  *
1928
2333
  * @public
1929
2334
  */
@@ -1949,7 +2354,7 @@ export declare const enableUserScreenRecord: (params?: {} | undefined) => Promis
1949
2354
  * @permission none | - | none | Android,iOS | 无需额外权限
1950
2355
  * @precondition All | 无额外前置条件
1951
2356
  * @usageNote All | 会退出当前所有页面;当 navigateBack 已无法继续返回时,使用 exitApp 退出智能服务。
1952
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
2357
+ * @errorCode common | 102 | Android,iOS
1953
2358
  *
1954
2359
  * @public
1955
2360
  */
@@ -2051,9 +2456,9 @@ export declare interface FileSystemManager {
2051
2456
  readFile: (params: ReadFileParams) => Promise<ReadFileResult>;
2052
2457
  /** 读取文件内容(同步);返回 {@link ReadFileResult},其中 data 按 encoding 为 UTF-8 或 Base64 字符串。 */
2053
2458
  readFileSync: (params: ReadFileParams) => ReadFileResult;
2054
- /** 写入文件内容(异步)。文件不存在则创建,已存在则覆盖;父目录不存在时失败。 */
2459
+ /** 写入文件内容(异步)。文件和父目录不存在则创建,文件已存在则覆盖。 */
2055
2460
  writeFile: (params: WriteFileParams) => Promise<void>;
2056
- /** 写入文件内容(同步)。文件不存在则创建,已存在则覆盖;父目录不存在时抛出异常。 */
2461
+ /** 写入文件内容(同步)。文件和父目录不存在则创建,文件已存在则覆盖。 */
2057
2462
  writeFileSync: (params: WriteFileParams) => void;
2058
2463
  /** 在文件末尾追加内容(异步)。文件不存在则创建,不会覆盖已有内容。 */
2059
2464
  appendFile: (params: AppendFileParams) => Promise<void>;
@@ -2140,7 +2545,7 @@ export declare interface FileSystemManager {
2140
2545
  * }
2141
2546
  * }
2142
2547
  * ```
2143
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认智能服务运行环境后重试
2548
+ * @errorCode common | 102 | Android
2144
2549
  *
2145
2550
  * @public
2146
2551
  */
@@ -2189,12 +2594,90 @@ export declare interface GetAccountInfoResult {
2189
2594
  * }
2190
2595
  * }
2191
2596
  * ```
2192
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认智能服务运行环境后重试
2597
+ * @errorCode common | 102 | Android
2193
2598
  *
2194
2599
  * @public
2195
2600
  */
2196
2601
  export declare function getAccountInfoSync(params?: {}): GetAccountInfoResult;
2197
2602
 
2603
+ /**
2604
+ * 获取宿主应用的系统授权设置。
2605
+ *
2606
+ * 调用只读取当前系统授权状态,不会申请权限或触发系统授权弹窗。状态字段固定返回
2607
+ * `authorized`、`denied` 或 `not determined`。
2608
+ *
2609
+ * @returns 返回宿主应用相册、蓝牙、摄像头、定位、麦克风、通知和日历权限状态。
2610
+ * @example
2611
+ * ```typescript
2612
+ * import { getAppAuthorizeSetting } from '@doubao-dev/framework/api';
2613
+ *
2614
+ * const result = getAppAuthorizeSetting();
2615
+ * console.log(result.cameraAuthorized, result.microphoneAuthorized);
2616
+ * console.log(result.notificationAuthorized, result.locationReducedAccuracy);
2617
+ * ```
2618
+ *
2619
+ * @since 0.0.40
2620
+ * @contractStatus verified | Android 与 iOS 均同步返回固定 11 个字段;除 locationReducedAccuracy 为 boolean 外,其余授权状态字段均限定为 authorized、denied 或 not determined,调用不会触发权限申请。
2621
+ * @platformSupport Android | supported | 支持同步读取宿主应用授权状态。
2622
+ * @platformSupport iOS | supported | 支持同步读取宿主应用授权状态。
2623
+ * @platformSupport PC | unsupported | 当前未提供该平台实现。
2624
+ * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
2625
+ * @permission none | - | none | Android,iOS | 无需额外权限
2626
+ * @precondition All | 无额外前置条件
2627
+ * @usageNote All | 本接口查询宿主应用权限,不等同于查询当前智能服务 scope 授权。
2628
+ * @usageNote iOS | SDK 首次完成通知设置异步预热前,或应用重新激活后的刷新尚未完成时,四个通知字段可能仍为旧值或 not determined。
2629
+ * @resultExample
2630
+ * ```json
2631
+ * {
2632
+ * "albumAuthorized": "authorized",
2633
+ * "bluetoothAuthorized": "denied",
2634
+ * "cameraAuthorized": "authorized",
2635
+ * "locationAuthorized": "authorized",
2636
+ * "locationReducedAccuracy": false,
2637
+ * "microphoneAuthorized": "authorized",
2638
+ * "notificationAuthorized": "authorized",
2639
+ * "notificationAlertAuthorized": "authorized",
2640
+ * "notificationBadgeAuthorized": "denied",
2641
+ * "notificationSoundAuthorized": "authorized",
2642
+ * "phoneCalendarAuthorized": "not determined"
2643
+ * }
2644
+ * ```
2645
+ * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
2646
+ * @platformNote Android | albumAuthorized 和通知分项固定返回 not determined,locationReducedAccuracy 固定返回 false 且不表示实际定位精度
2647
+ * @platformNote Android | bluetoothAuthorized、cameraAuthorized、locationAuthorized、microphoneAuthorized、notificationAuthorized 和 phoneCalendarAuthorized 不区分尚未申请和已经拒绝,两种情况均返回 denied
2648
+ * @platformNote Android | locationAuthorized 在粗略或精确定位任一权限已授权时返回 authorized;phoneCalendarAuthorized 仅在读、写日历权限均授权时返回 authorized
2649
+ * @platformNote iOS | 相册 limited 映射为 authorized,通知 provisional 和 ephemeral 映射为 authorized
2650
+ *
2651
+ * @public
2652
+ */
2653
+ export declare const getAppAuthorizeSetting: (params?: {} | undefined) => GetAppAuthorizeSettingResult;
2654
+
2655
+ /** @public */
2656
+ export declare interface GetAppAuthorizeSettingResult {
2657
+ /** 相册授权状态;Android 固定返回 not determined */
2658
+ albumAuthorized: AppAuthorizeStatus;
2659
+ /** 蓝牙授权状态 */
2660
+ bluetoothAuthorized: AppAuthorizeStatus;
2661
+ /** 摄像头授权状态 */
2662
+ cameraAuthorized: AppAuthorizeStatus;
2663
+ /** 定位授权状态 */
2664
+ locationAuthorized: AppAuthorizeStatus;
2665
+ /** 是否只能使用模糊定位;仅在 iOS 且定位已授权时具有精度含义,Android 固定返回 false */
2666
+ locationReducedAccuracy: boolean;
2667
+ /** 麦克风授权状态 */
2668
+ microphoneAuthorized: AppAuthorizeStatus;
2669
+ /** 通知总授权状态 */
2670
+ notificationAuthorized: AppAuthorizeStatus;
2671
+ /** 通知提醒授权状态;Android 固定返回 not determined */
2672
+ notificationAlertAuthorized: AppAuthorizeStatus;
2673
+ /** 通知角标授权状态;Android 固定返回 not determined */
2674
+ notificationBadgeAuthorized: AppAuthorizeStatus;
2675
+ /** 通知声音授权状态;Android 固定返回 not determined */
2676
+ notificationSoundAuthorized: AppAuthorizeStatus;
2677
+ /** 系统日历授权状态 */
2678
+ phoneCalendarAuthorized: AppAuthorizeStatus;
2679
+ }
2680
+
2198
2681
  /**
2199
2682
  * 获取应用基础信息。
2200
2683
  *
@@ -2381,7 +2864,7 @@ export declare function getBackgroundAudioManager(): BackgroundAudioManager;
2381
2864
  * "level": 82
2382
2865
  * }
2383
2866
  * ```
2384
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息重试
2867
+ * @errorCode common | 102 | Android
2385
2868
  *
2386
2869
  * @public
2387
2870
  */
@@ -2852,7 +3335,15 @@ export declare interface GetBluetoothDevicesResult {
2852
3335
  * "data": "hello doubao"
2853
3336
  * }
2854
3337
  * ```
2855
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认豆包是否提供剪贴板能力
3338
+ * @errorExample
3339
+ * ```json
3340
+ * {
3341
+ * "errNo": 103,
3342
+ * "errMsg": "feature not support"
3343
+ * }
3344
+ * ```
3345
+ * @errorCode common | 102 | Android,iOS
3346
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前豆包版本或运行环境未提供剪贴板读取能力 | 在支持剪贴板能力的豆包版本中调用。
2856
3347
  *
2857
3348
  * @public
2858
3349
  */
@@ -2969,7 +3460,26 @@ export declare interface GetConnectedBluetoothDevicesResult {
2969
3460
  * }
2970
3461
  * }
2971
3462
  * ```
2972
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据返回的错误信息(如未连接、无权限)提示用户
3463
+ * @errorExample
3464
+ * ```json
3465
+ * {
3466
+ * "errNo": 1401002,
3467
+ * "errMsg": "wifi is not connected"
3468
+ * }
3469
+ * ```
3470
+ * @errorCode common | 102 | Android,iOS
3471
+ * @errorCode errNo | 1401001 | wifi is not initialized | Android,iOS | 调用前未先调用 startWifi 完成初始化 | 先调用 startWifi 再获取已连接 Wi-Fi
3472
+ * @errorCode errNo | 1401002 | wifi is not connected | Android,iOS | 当前未连接 Wi-Fi 或无法读取已连接 Wi-Fi 信息 | 确认设备已连接 Wi-Fi 后重试
3473
+ * @errorCode errNo | 106 | system permission denied | iOS | 系统定位服务未开启,无法读取 Wi-Fi 信息 | 引导用户在系统设置中开启定位服务
3474
+ * @errorCode errNo | 107 | user permission denied | iOS | 用户未授予定位权限或未开启精确定位 | 引导用户授予定位权限并开启精确定位
3475
+ * @errorCode errNo | 114 | operation cancelled | iOS | 用户取消了位置权限授权弹窗 | 用户需要时可再次触发授权后重试
3476
+ * @errorCode errNo | 301 | network request cancelled | iOS | 位置授权过程中的网络请求被取消 | 确认应用和网络状态后重试
3477
+ * @errorCode errNo | 302 | connection timed out | iOS | 位置授权过程中的网络连接超时 | 检查网络连接后重试
3478
+ * @errorCode errNo | 303 | no network connection | iOS | 当前无可用网络连接 | 恢复网络连接后重试
3479
+ * @errorCode errNo | 305 | network failure | iOS | 位置授权过程中发生其他网络错误 | 检查网络连接,稍后重试
3480
+ * @errorCode errNo | 112 | invalid result | iOS | 位置授权服务返回的数据无法解析 | 稍后重试;持续失败时反馈服务端响应异常
3481
+ * @platformNote Android | 未连接或因缺少定位权限无法读取时统一返回 1401002;未初始化返回 1401001。
3482
+ * @platformNote iOS | 读取前会发起位置权限授权,可返回 106/107 及授权网络类失败(301/302/303/305/112);读取阶段未连接返回 1401002。
2973
3483
  *
2974
3484
  * @public
2975
3485
  */
@@ -3171,7 +3681,21 @@ export declare interface GetFileInfoResult {
3171
3681
  * @permission none | - | none | Android,iOS | 无需额外权限
3172
3682
  * @precondition All | 无额外前置条件,直接调用 getFileSystemManager 获取管理器实例后再调用其方法
3173
3683
  * @usageNote All | readFile、readFileSync 省略 encoding 时默认返回 Base64 字符串,writeFile、appendFile 省略 encoding 时默认按 UTF-8 写入;需要明确编码时请显式传入 encoding。
3174
- * @errorCode none | - | - | Android,iOS | 文件操作失败时对应方法会 reject 或抛出异常,错误信息通过 errMsg 描述,当前不提供稳定的业务错误码 | 根据 errMsg 检查路径、权限与参数后重试
3684
+ * @errorExample
3685
+ * ```json
3686
+ * {
3687
+ * "errNo": 203,
3688
+ * "errMsg": "file does not exist"
3689
+ * }
3690
+ * ```
3691
+ * @errorCode common | 102 | Android,iOS
3692
+ * @errorCode common | 103 | Android
3693
+ * @errorCode common | 104 | Android,iOS
3694
+ * @errorCode errNo | 203 | file does not exist | Android,iOS | readFile、stat、getFileInfo、copyFile、rename、truncate、unlink、rmdir、removeSavedFile、unzip 等操作的目标文件或目录不存在 | 确认路径存在或先创建后重试。
3695
+ * @errorCode errNo | 213 | invalid file path | Android,iOS | 传入的路径不是合法的沙箱内 appletfile 路径,或试图越过沙箱根目录访问 | 使用应用沙箱内的合法本地路径后重试。
3696
+ * @errorCode errNo | 208 | total size limit exceeded | Android,iOS | readFile、writeFile、appendFile、copyFile 时单次读写超过单文件大小上限,或写入后超出沙箱存储配额 | 减小单次读写数据量或清理已保存文件后重试。
3697
+ * @errorCode errNo | 1901001 | target is a directory | Android,iOS | 对目录执行了仅适用于文件的操作(如 readFile、writeFile、appendFile、copyFile、truncate、getFileInfo、unzip 的源文件),或 rmdir 删除非空目录时未开启 recursive | 改为对文件操作,或删除目录时开启 recursive。
3698
+ * @errorCode errNo | 1901002 | target is not a directory | Android,iOS | 对文件执行了仅适用于目录的操作(如 readdir),或 mkdir 目标已存在同名文件、unzip 的 targetPath 不是目录 | 确认目标为目录后重试。
3175
3699
  * @public
3176
3700
  */
3177
3701
  export declare function getFileSystemManager(): FileSystemManager;
@@ -3305,7 +3829,19 @@ export declare interface GetImageInfoResult {
3305
3829
  * "accuracy": 15
3306
3830
  * }
3307
3831
  * ```
3308
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息提示用户检查授权和系统定位服务
3832
+ * @errorExample
3833
+ * ```json
3834
+ * {
3835
+ * "errNo": 107,
3836
+ * "errMsg": "user permission denied"
3837
+ * }
3838
+ * ```
3839
+ * @errorCode common | 102 | Android,iOS
3840
+ * @errorCode common | 116 | Android
3841
+ * @errorCode errNo | 106 | system permission denied | Android,iOS | 系统定位权限被拒绝或系统定位服务不可用 | 引导用户在系统设置中开启定位服务与权限后重试
3842
+ * @errorCode errNo | 107 | user permission denied | Android,iOS | 用户拒绝了应用位置授权(scope.userLocation) | 调用 authorize 重新发起应用授权后重试
3843
+ * @platformNote Android | 用户拒绝应用授权返回 107、系统权限被拒返回 106;定位失败等其他失败统一返回 102。
3844
+ * @platformNote iOS | 应用授权或系统权限被拒返回 107/106;其他失败(含非法 scope)统一返回 102。
3309
3845
  * @platformNote iOS | mode 为 1 时按高精度模式处理
3310
3846
  *
3311
3847
  * @public
@@ -3441,7 +3977,9 @@ export declare const getMenuButtonBoundingClientRect: () => MenuButtonBoundingCl
3441
3977
  * "hasSystemProxy": false
3442
3978
  * }
3443
3979
  * ```
3444
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息重试
3980
+ * @errorCode common | 102 | Android
3981
+ * @platformNote Android | 正常场景稳定返回网络类型;失败时返回 102。
3982
+ * @platformNote iOS | 始终成功返回网络类型,无失败分支。
3445
3983
  *
3446
3984
  * @public
3447
3985
  */
@@ -3532,8 +4070,18 @@ export declare interface GetNetworkTypeResult {
3532
4070
  * "logId": "20260519xxxx"
3533
4071
  * }
3534
4072
  * ```
3535
- * @errorCode none | - | - | Android,iOS | 无稳定的顶层 errNo/errMsg;调用失败时 Promise reject,业务错误(errNo、errMsg、errLogId)在错误对象的 data 字段 | 通过 catch 捕获并读取 e.data 排查
4073
+ * @errorExample
4074
+ * ```json
4075
+ * {
4076
+ * "errNo": 114,
4077
+ * "errMsg": "operation cancelled"
4078
+ * }
4079
+ * ```
4080
+ * @errorCode common | 102 | Android,iOS
4081
+ * @errorCode common | 103 | Android,iOS
4082
+ * @errorCode errNo | 114 | operation cancelled | Android | 用户在收银台中取消了支付操作 | 用户需要时可再次调用 `getOrderPayment` 重新拉起收银台。
3536
4083
  * @platformNote Android | 需在前台可见的 Activity 中调用,应用退至后台或无有效页面时会返回失败。
4084
+ * @platformNote Android | 用户主动取消支付时返回顶层 errNo 114(operation cancelled);iOS 在该场景不返回顶层专属 errNo。
3537
4085
  *
3538
4086
  * @public
3539
4087
  */
@@ -3605,8 +4153,18 @@ export declare interface GetOrderPaymentResult {
3605
4153
  * "logId": "20260519xxxx"
3606
4154
  * }
3607
4155
  * ```
3608
- * @errorCode none | - | - | Android,iOS | 无稳定的顶层 errNo/errMsg;调用失败时 Promise reject,业务错误(errNo、errMsg、errLogId)在错误对象的 data 字段 | 通过 catch 捕获并读取 e.data 排查
4156
+ * @errorExample
4157
+ * ```json
4158
+ * {
4159
+ * "errNo": 114,
4160
+ * "errMsg": "operation cancelled"
4161
+ * }
4162
+ * ```
4163
+ * @errorCode common | 102 | Android,iOS
4164
+ * @errorCode common | 103 | Android,iOS
4165
+ * @errorCode errNo | 114 | operation cancelled | Android | 用户在收银台中取消了支付操作 | 用户需要时可再次调用 `getOrderPaymentWithSign` 重新拉起收银台。
3609
4166
  * @platformNote Android | 需在前台可见的 Activity 中调用,应用退至后台或无有效页面时会返回失败。
4167
+ * @platformNote Android | 用户主动取消支付时返回顶层 errNo 114(operation cancelled);iOS 在该场景不返回顶层专属 errNo。
3610
4168
  *
3611
4169
  * @public
3612
4170
  */
@@ -3712,7 +4270,8 @@ export declare const getPackageInfoSync: () => GetPackageInfoResult;
3712
4270
  * "needAuthorization": false
3713
4271
  * }
3714
4272
  * ```
3715
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
4273
+ * @errorCode common | 102 | Android,iOS
4274
+ * @platformNote All | 该 API 无专属错误码,失败时统一返回 102。
3716
4275
  *
3717
4276
  * @public
3718
4277
  */
@@ -3858,7 +4417,7 @@ export declare interface GetSavedFileListResult {
3858
4417
  * "value": 0.6
3859
4418
  * }
3860
4419
  * ```
3861
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | Android 根据异常信息重试,iOS 暂不支持该 API
4420
+ * @errorCode common | 102 | Android
3862
4421
  *
3863
4422
  * @public
3864
4423
  */
@@ -3888,8 +4447,7 @@ export declare interface GetScreenBrightnessResult {
3888
4447
  * ```
3889
4448
  *
3890
4449
  * @since 0.0.36
3891
- * @contractStatus conflict | withSubscriptions 公开可传 true,但豆包 Android、iOS 当前不支持订阅模板,传入 true 会失败。
3892
- * @contractMismatch blocking | parameter | withSubscriptions | Android,iOS | withSubscriptions 为 true 时一并返回订阅消息设置 | 传入 true 时调用直接失败,只有默认的 false 可成功返回授权设置 | 依赖订阅设置的调用无法成功 | packages/open-api/src/basic/setting.ts; ai-sdk/android/ai-sdk/src/main/java/com/bytedance/ai/bridge/method/authorize; ai-sdk/ios/AISDK/Sources/JSBridge/Methods/Auth/AIBridgeGetSettingMethod.swift | 补齐豆包订阅模板设置查询,或从公开参数中移除 withSubscriptions
4450
+ * @contractStatus verified | withSubscriptions 当前仅允许 false,Android、iOS 均支持返回授权设置。
3893
4451
  * @platformSupport Android | supported | 支持获取用户的应用授权设置。
3894
4452
  * @platformSupport iOS | supported | 支持获取用户的应用授权设置。
3895
4453
  * @platformSupport PC | unsupported | 当前未提供该平台实现。
@@ -3906,7 +4464,17 @@ export declare interface GetScreenBrightnessResult {
3906
4464
  * }
3907
4465
  * }
3908
4466
  * ```
3909
- * @errorCode none | - | - | Android,iOS | 传入 withSubscriptions: true 等失败当前只返回文本信息,未稳定返回顶层 errNo/errMsg | 不要传入 withSubscriptions: true
4467
+ * @errorExample
4468
+ * ```json
4469
+ * {
4470
+ * "errNo": 103,
4471
+ * "errMsg": "feature not support"
4472
+ * }
4473
+ * ```
4474
+ * @errorCode common | 102 | Android,iOS
4475
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 传入 withSubscriptions: true,豆包当前不支持订阅消息模板 | 不要传入 withSubscriptions: true,仅使用默认的 false
4476
+ * @errorCode errNo | 116 | resource not found | Android | 未找到当前应用对应的运行环境记录 | 确认应用已正确安装并在有效运行环境中调用后重试
4477
+ * @platformNote iOS | iOS 不返回 errNo 116(resource not found),相应失败场景统一以 errNo 102(internal error)返回。
3910
4478
  *
3911
4479
  * @public
3912
4480
  */
@@ -3915,12 +4483,12 @@ export declare const getSetting: (params?: GetSettingParams | undefined) => Prom
3915
4483
  /** @public */
3916
4484
  export declare interface GetSettingParams {
3917
4485
  /**
3918
- * 是否同时获取用户订阅消息的订阅状态,默认不获取。
4486
+ * 是否同时获取用户订阅消息的订阅状态;当前仅支持 false。
3919
4487
  *
3920
4488
  * @default false
3921
- * @constraint 豆包 Android、iOS 当前不支持订阅模板,传入 true 时调用会失败
4489
+ * @constraint 豆包 Android、iOS 当前不支持订阅模板,仅支持 false
3922
4490
  */
3923
- withSubscriptions?: boolean;
4491
+ withSubscriptions?: false;
3924
4492
  }
3925
4493
 
3926
4494
  /** @public */
@@ -4321,7 +4889,7 @@ export declare const getSystemInfoSync: (_params?: {}) => GetSystemInfoResult;
4321
4889
  * "deviceOrientation": "portrait"
4322
4890
  * }
4323
4891
  * ```
4324
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
4892
+ * @errorCode common | 102 | Android
4325
4893
  * @platformNote Android | wifiEnabled 表示系统 Wi-Fi 开关是否打开
4326
4894
  * @platformNote iOS | wifiEnabled 表示当前是否正在通过 Wi-Fi 联网
4327
4895
  *
@@ -4383,7 +4951,26 @@ export declare interface GetSystemSettingResult {
4383
4951
  * ]
4384
4952
  * }
4385
4953
  * ```
4386
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据返回的错误信息(如未初始化、无权限)提示用户
4954
+ * @errorExample
4955
+ * ```json
4956
+ * {
4957
+ * "errNo": 1401001,
4958
+ * "errMsg": "wifi is not initialized"
4959
+ * }
4960
+ * ```
4961
+ * @errorCode common | 102 | Android,iOS
4962
+ * @errorCode errNo | 1401001 | wifi is not initialized | Android,iOS | 调用前未先调用 startWifi 完成初始化 | 先调用 startWifi 再获取 Wi-Fi 列表
4963
+ * @errorCode errNo | 1401002 | wifi is not connected | iOS | iOS 仅返回当前已连接 Wi-Fi,当前未连接时读取失败 | 确认设备已连接 Wi-Fi 后重试
4964
+ * @errorCode errNo | 106 | system permission denied | iOS | 系统定位服务未开启,无法读取 Wi-Fi 信息 | 引导用户在系统设置中开启定位服务
4965
+ * @errorCode errNo | 107 | user permission denied | iOS | 用户未授予定位权限或未开启精确定位 | 引导用户授予定位权限并开启精确定位
4966
+ * @errorCode errNo | 114 | operation cancelled | iOS | 用户取消了位置权限授权弹窗 | 用户需要时可再次触发授权后重试
4967
+ * @errorCode errNo | 301 | network request cancelled | iOS | 位置授权过程中的网络请求被取消 | 确认应用和网络状态后重试
4968
+ * @errorCode errNo | 302 | connection timed out | iOS | 位置授权过程中的网络连接超时 | 检查网络连接后重试
4969
+ * @errorCode errNo | 303 | no network connection | iOS | 当前无可用网络连接 | 恢复网络连接后重试
4970
+ * @errorCode errNo | 305 | network failure | iOS | 位置授权过程中发生其他网络错误 | 检查网络连接,稍后重试
4971
+ * @errorCode errNo | 112 | invalid result | iOS | 位置授权服务返回的数据无法解析 | 稍后重试;持续失败时反馈服务端响应异常
4972
+ * @platformNote Android | 未初始化返回 1401001;扫描列表为空不视为失败;因定位权限不足导致读取失败时返回 102。
4973
+ * @platformNote iOS | 仅返回当前已连接 Wi-Fi,未连接返回 1401002;读取前会发起位置权限授权,可返回 106/107 及授权网络类失败(301/302/303/305/112)。
4387
4974
  *
4388
4975
  * @public
4389
4976
  */
@@ -4611,6 +5198,17 @@ export declare const hideLoading: (params?: HideInteractionParams | undefined) =
4611
5198
  * await hideToast();
4612
5199
  * ```
4613
5200
  *
5201
+ * @since 0.0.26
5202
+ * @contractStatus verified | 无参数、无返回字段,与 Android、iOS 实现一致。
5203
+ * @platformSupport Android | supported | 支持隐藏当前 Toast。
5204
+ * @platformSupport iOS | supported | 支持隐藏当前 Toast。
5205
+ * @platformSupport PC | unsupported | 当前未提供该平台实现。
5206
+ * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
5207
+ * @permission none | - | none | Android,iOS | 无需额外权限
5208
+ * @precondition All | 无额外前置条件
5209
+ * @usageNote All | 当前没有 Toast 时调用无副作用。
5210
+ * @errorCode common | 102 | Android
5211
+ *
4614
5212
  * @public
4615
5213
  */
4616
5214
  export declare const hideToast: (params?: HideInteractionParams | undefined) => Promise<object>;
@@ -5016,7 +5614,17 @@ export declare const LoginType: {
5016
5614
  * "result": true
5017
5615
  * }
5018
5616
  * ```
5019
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
5617
+ * @errorExample
5618
+ * ```json
5619
+ * {
5620
+ * "errNo": 112,
5621
+ * "errMsg": "invalid result"
5622
+ * }
5623
+ * ```
5624
+ * @errorCode common | 102 | Android,iOS
5625
+ * @errorCode errNo | 112 | invalid result | Android | 登录或隐私状态查询成功但返回数据缺失(如缺少隐私卡片或手机掩码) | 稍后重试;持续失败时反馈服务端响应异常。
5626
+ * @platformNote Android | 状态查询成功但关键数据缺失返回 112;其他失败统一返回 102。
5627
+ * @platformNote iOS | 失败统一返回 102。
5020
5628
  *
5021
5629
  * @public
5022
5630
  */
@@ -5125,7 +5733,16 @@ export declare interface MakeBluetoothPairParams {
5125
5733
  * ```json
5126
5734
  * {}
5127
5735
  * ```
5128
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认设备是否支持拨号
5736
+ * @errorExample
5737
+ * ```json
5738
+ * {
5739
+ * "errNo": 104,
5740
+ * "errMsg": "invalid parameter"
5741
+ * }
5742
+ * ```
5743
+ * @errorCode common | 102 | Android,iOS
5744
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | phoneNumber 为空,或在 iOS 上无法拼接为有效的拨号 URL | 传入合法的电话号码后重试。
5745
+ * @errorCode errNo | 103 | feature not support | iOS | 当前设备不支持拨打电话 | 在支持拨号的设备上调用,或提前提示用户设备不支持拨号。
5129
5746
  *
5130
5747
  * @public
5131
5748
  */
@@ -5198,7 +5815,7 @@ export declare interface MkdirParams {
5198
5815
  * @permission none | - | none | Android,iOS | 无需额外权限
5199
5816
  * @precondition All | 无额外前置条件
5200
5817
  * @usageNote All | navigateBack 只能在页面栈内返回;当前页面已是页面栈中的最后一个页面时无法继续返回,需要退出智能服务请调用 exitApp。
5201
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
5818
+ * @errorCode common | 102 | Android,iOS
5202
5819
  *
5203
5820
  * @public
5204
5821
  */
@@ -5235,7 +5852,15 @@ export declare interface NavigateBackParams {
5235
5852
  * @permission none | - | none | Android,iOS | 无需额外权限
5236
5853
  * @precondition All | 无额外前置条件
5237
5854
  * @usageNote All | url 为智能服务内的页面路径,可携带查询参数;跳转后当前页面会保留在页面栈中,可通过 navigateBack 返回。
5238
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
5855
+ * @errorExample
5856
+ * ```json
5857
+ * {
5858
+ * "errNo": 104,
5859
+ * "errMsg": "invalid url"
5860
+ * }
5861
+ * ```
5862
+ * @errorCode common | 102 | Android,iOS
5863
+ * @errorCode errNo | 104 | invalid url | Android,iOS | url 为空或无法解析为有效的智能服务页面路径 | 检查 url 是否为合法的应用内页面路径后重试。
5239
5864
  *
5240
5865
  * @public
5241
5866
  */
@@ -5344,84 +5969,6 @@ export declare interface NotifyBLECharacteristicValueChangeParams {
5344
5969
  type?: BluetoothNotifyType;
5345
5970
  }
5346
5971
 
5347
- /**
5348
- * 取消注册地理位置变化回调。
5349
- *
5350
- * @example
5351
- * ```typescript
5352
- * import {
5353
- * offLocationChange,
5354
- * onLocationChange,
5355
- * type LocationChangeEvent
5356
- * } from '@doubao-dev/framework/api';
5357
- *
5358
- * const handleLocationChange = ({ latitude, longitude }: LocationChangeEvent) => {
5359
- * console.log(latitude, longitude);
5360
- * };
5361
- *
5362
- * onLocationChange(handleLocationChange);
5363
- * offLocationChange(handleLocationChange);
5364
- * ```
5365
- * @since 0.0.32
5366
- * @contractStatus verified | 注销指定监听和清空全部监听的行为由公开可选参数准确表达
5367
- * @platformSupport Android | supported | 支持注销位置变化监听
5368
- * @platformSupport iOS | supported | 支持注销位置变化监听
5369
- * @platformSupport PC | unsupported | 暂不支持
5370
- * @platformSupport HarmonyOS | unsupported | 暂不支持
5371
- * @permission none | - | none | Android,iOS | 无需额外权限
5372
- * @precondition All | 无额外前置条件
5373
- * @usageNote All | 传入注册时使用的同一个 callback 可只取消该监听;省略 callback 会取消全部位置变化回调
5374
- * @errorCode none | - | - | Android,iOS | 同步注销操作不产生 API 专属错误码 | 无需处理
5375
- *
5376
- * @public
5377
- */
5378
- export declare function offLocationChange(
5379
- /**
5380
- * 要取消的回调;省略时取消当前 API 注册的全部位置变化回调。
5381
- *
5382
- * @default 取消全部位置变化回调
5383
- */
5384
- callback?: LocationChangeListener): void;
5385
-
5386
- /**
5387
- * 取消注册位置更新异常回调。
5388
- *
5389
- * @example
5390
- * ```typescript
5391
- * import {
5392
- * offLocationChangeError,
5393
- * onLocationChangeError,
5394
- * type LocationChangeErrorEvent
5395
- * } from '@doubao-dev/framework/api';
5396
- *
5397
- * const handleLocationError = ({ errMsg, errCode }: LocationChangeErrorEvent) => {
5398
- * console.error(errMsg, errCode);
5399
- * };
5400
- *
5401
- * onLocationChangeError(handleLocationError);
5402
- * offLocationChangeError(handleLocationError);
5403
- * ```
5404
- * @since 0.0.32
5405
- * @contractStatus verified | 注销指定监听和清空全部监听的行为由公开可选参数准确表达
5406
- * @platformSupport Android | supported | 支持注销位置异常监听
5407
- * @platformSupport iOS | supported | 支持注销位置异常监听
5408
- * @platformSupport PC | unsupported | 暂不支持
5409
- * @platformSupport HarmonyOS | unsupported | 暂不支持
5410
- * @permission none | - | none | Android,iOS | 无需额外权限
5411
- * @precondition All | 无额外前置条件
5412
- * @usageNote All | 传入注册时使用的同一个 callback 可只取消该监听;省略 callback 会取消全部位置异常回调
5413
- * @errorCode none | - | - | Android,iOS | 同步注销操作不产生 API 专属错误码 | 无需处理
5414
- *
5415
- * @public
5416
- */
5417
- export declare function offLocationChangeError(
5418
- /**
5419
- * 要取消的回调;省略时取消当前 API 注册的全部位置异常回调。
5420
- *
5421
- * @default 取消全部位置异常回调
5422
- */
5423
- callback?: LocationChangeErrorListener): void;
5424
-
5425
5972
  /**
5426
5973
  * 监听加速度数据变化事件。
5427
5974
  *
@@ -5815,13 +6362,17 @@ export declare const onKeyboardHeightChange: ClientEventRegistry<KeyboardHeightC
5815
6362
  /**
5816
6363
  * 注册地理位置变化回调。
5817
6364
  *
6365
+ * @returns 返回取消当前监听函数的函数。
6366
+ *
5818
6367
  * @example
5819
6368
  * ```typescript
5820
6369
  * import { onLocationChange } from '@doubao-dev/framework/api';
5821
6370
  *
5822
- * onLocationChange(({ latitude, longitude }) => {
6371
+ * const unsubscribe = onLocationChange(({ latitude, longitude }) => {
5823
6372
  * console.log(latitude, longitude);
5824
6373
  * });
6374
+ *
6375
+ * unsubscribe();
5825
6376
  * ```
5826
6377
  * @since 0.0.32
5827
6378
  * @contractStatus verified | 豆包 Android、iOS 成功事件均会返回必需的 latitude 和 longitude,其他字段可由公开可选类型承载
@@ -5832,7 +6383,7 @@ export declare const onKeyboardHeightChange: ClientEventRegistry<KeyboardHeightC
5832
6383
  * @platformSupport HarmonyOS | unsupported | 暂不支持
5833
6384
  * @permission none | - | none | Android,iOS | 无需额外权限
5834
6385
  * @precondition All | 无额外前置条件
5835
- * @usageNote All | 建议在调用 `startLocationUpdate` 前注册;同一 callback 重复注册不会产生多个监听,不再使用时调用 `offLocationChange` 释放监听
6386
+ * @usageNote All | 建议在调用 `startLocationUpdate` 前注册;不再使用时调用返回的取消函数释放当前监听
5836
6387
  * @usageNote All | 定位信息属于敏感数据,仅在业务确有需要时监听和使用;事件回调频率不固定
5837
6388
  * @resultExample
5838
6389
  * ```json
@@ -5854,18 +6405,22 @@ export declare const onKeyboardHeightChange: ClientEventRegistry<KeyboardHeightC
5854
6405
  *
5855
6406
  * @public
5856
6407
  */
5857
- export declare function onLocationChange(callback: LocationChangeListener): void;
6408
+ export declare function onLocationChange(callback: LocationChangeListener): () => void;
5858
6409
 
5859
6410
  /**
5860
6411
  * 注册位置更新异常回调。
5861
6412
  *
6413
+ * @returns 返回取消当前监听函数的函数。
6414
+ *
5862
6415
  * @example
5863
6416
  * ```typescript
5864
6417
  * import { onLocationChangeError } from '@doubao-dev/framework/api';
5865
6418
  *
5866
- * onLocationChangeError(({ errMsg, errCode }) => {
6419
+ * const unsubscribe = onLocationChangeError(({ errMsg, errCode }) => {
5867
6420
  * console.log(errMsg, errCode);
5868
6421
  * });
6422
+ *
6423
+ * unsubscribe();
5869
6424
  * ```
5870
6425
  * @since 0.0.32
5871
6426
  * @contractStatus verified | 错误信息必返、错误码可选的公开类型可准确表达双端事件
@@ -5876,7 +6431,7 @@ export declare function onLocationChange(callback: LocationChangeListener): void
5876
6431
  * @platformSupport HarmonyOS | unsupported | 暂不支持
5877
6432
  * @permission none | - | none | Android,iOS | 无需额外权限
5878
6433
  * @precondition All | 无额外前置条件
5879
- * @usageNote All | 建议在调用 `startLocationUpdate` 前注册;同一 callback 重复注册不会产生多个监听,不再使用时调用 `offLocationChangeError` 释放监听
6434
+ * @usageNote All | 建议在调用 `startLocationUpdate` 前注册;不再使用时调用返回的取消函数释放当前监听
5880
6435
  * @resultExample
5881
6436
  * ```json
5882
6437
  * {
@@ -5901,7 +6456,7 @@ export declare function onLocationChange(callback: LocationChangeListener): void
5901
6456
  *
5902
6457
  * @public
5903
6458
  */
5904
- export declare function onLocationChangeError(callback: LocationChangeErrorListener): void;
6459
+ export declare function onLocationChangeError(callback: LocationChangeErrorListener): () => void;
5905
6460
 
5906
6461
  /**
5907
6462
  * 监听网络状态变化事件。
@@ -6098,73 +6653,6 @@ export declare const onUserScreenRecord: ClientEventRegistry<UserScreenRecordEve
6098
6653
  */
6099
6654
  export declare const onWifiConnected: ClientEventRegistry<WifiConnectedEvent>;
6100
6655
 
6101
- /**
6102
- * 通过 deep link 等方式打开外部应用。
6103
- *
6104
- * @param params - 外部应用打开参数。
6105
- * @returns 返回一个 Promise,成功时解析为外部应用打开结果({@link OpenAppResult})。
6106
- * @example
6107
- * ```typescript
6108
- * import { openApp } from '@doubao-dev/framework/api';
6109
- *
6110
- * const { status } = await openApp({
6111
- * uri: 'demo://detail?id=1',
6112
- * fallbackUrl: 'https://example.com/download'
6113
- * });
6114
- *
6115
- * console.log(status);
6116
- * ```
6117
- *
6118
- * @since 0.0.6
6119
- * @contractStatus conflict | Android 已实现,iOS 未提供可调用实现。
6120
- * @contractMismatch blocking | platform | 打开外部应用 | iOS | 通过 applet.openApp 打开外部应用并返回执行方式 status | 豆包 iOS 暂未提供该能力,调用会返回不支持 | 该 API 在豆包 iOS 无法打开外部应用 | packages/open-api/src/open/business/open-app.ts; ai-sdk/ios/AISDK/Sources/JSBridge/IDL/AbsOpenAppMethodIDL.swift | 补齐豆包 iOS applet.openApp 实现后再在该平台开放文档
6121
- * @platformSupport Android | supported | 支持通过 deep link、应用市场或浏览器兜底打开外部应用。
6122
- * @platformSupport iOS | unsupported | 豆包当前未实现打开外部应用能力。
6123
- * @platformSupport PC | unsupported | 当前未提供该平台实现。
6124
- * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
6125
- * @permission none | - | none | Android | 无需额外权限
6126
- * @precondition Android | 传入合法的 uri。
6127
- * @usageNote All | 建议同时传入 fallbackUrl,当目标应用未安装、deep link 无法命中时可兜底至应用市场或浏览器。iOS 暂不支持,请勿在该平台调用。
6128
- * @resultExample
6129
- * ```json
6130
- * {
6131
- * "status": "deep_link"
6132
- * }
6133
- * ```
6134
- * @platformNote Android | 客户端会依次尝试 deep link、应用市场、浏览器,并通过 status 返回实际执行方式(deep_link、market、browser)。
6135
- * @errorCode none | - | - | Android | 无 API 专属错误码 | 无需处理
6136
- *
6137
- * @public
6138
- */
6139
- export declare const openApp: (params: OpenAppRequest) => Promise<OpenAppResult>;
6140
-
6141
- /** @public */
6142
- export declare interface OpenAppRequest {
6143
- /** 要打开的目标 URI,例如 `scheme://path?query`。 */
6144
- uri: string;
6145
- /**
6146
- * Android 上的目标应用包名,可选。
6147
- *
6148
- * @default -
6149
- */
6150
- targetPackage?: string;
6151
- /**
6152
- * deep link 失败时的兜底 URL,可选。
6153
- *
6154
- * @default -
6155
- */
6156
- fallbackUrl?: string;
6157
- }
6158
-
6159
- /** @public */
6160
- export declare interface OpenAppResult {
6161
- /** 客户端实际执行的打开方式。 */
6162
- status: OpenAppStatus;
6163
- }
6164
-
6165
- /** @public */
6166
- export declare type OpenAppStatus = 'deep_link' | 'market' | 'browser';
6167
-
6168
6656
  /**
6169
6657
  * 打开蓝牙适配器。
6170
6658
  *
@@ -6296,6 +6784,26 @@ export declare interface OpenLocationParams {
6296
6784
  * }
6297
6785
  * ```
6298
6786
  *
6787
+ * @since 0.0.39
6788
+ * @contractStatus verified | withSubscriptions 当前仅允许 false,Android、iOS 均支持打开设置页并返回授权设置。
6789
+ * @platformSupport Android | supported | 支持打开授权设置页并在关闭后返回最新授权设置。
6790
+ * @platformSupport iOS | supported | 支持打开授权设置页并在关闭后返回最新授权设置。
6791
+ * @platformSupport PC | unsupported | 当前未提供该平台实现。
6792
+ * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
6793
+ * @permission none | - | none | Android,iOS | 无需额外权限
6794
+ * @precondition All | 无额外前置条件,不要求在用户点击事件中调用。
6795
+ * @usageNote All | 豆包当前不支持订阅模板,不要传入 withSubscriptions: true。
6796
+ * @resultExample
6797
+ * ```json
6798
+ * {
6799
+ * "authSetting": {
6800
+ * "scope.userLocation": true,
6801
+ * "scope.record": false
6802
+ * }
6803
+ * }
6804
+ * ```
6805
+ * @errorCode none | - | - | Android,iOS | 传入 withSubscriptions: true 等失败当前只返回文本信息,未稳定返回顶层 errNo/errMsg | 不要传入 withSubscriptions: true
6806
+ *
6299
6807
  * @public
6300
6808
  */
6301
6809
  export declare const openSetting: (params?: OpenSettingOptions | undefined) => Promise<OpenSettingResult>;
@@ -6303,9 +6811,12 @@ export declare const openSetting: (params?: OpenSettingOptions | undefined) => P
6303
6811
  /** @public */
6304
6812
  export declare interface OpenSettingOptions {
6305
6813
  /**
6306
- * 是否同时获取用户订阅消息的订阅状态,默认不获取。
6814
+ * 是否同时获取用户订阅消息的订阅状态;当前仅支持 false。
6815
+ *
6816
+ * @default false
6817
+ * @constraint 豆包 Android、iOS 当前不支持订阅模板,仅支持 false
6307
6818
  */
6308
- withSubscriptions?: boolean;
6819
+ withSubscriptions?: false;
6309
6820
  }
6310
6821
 
6311
6822
  /** @public */
@@ -6367,7 +6878,24 @@ export declare interface PluginAccountInfo {
6367
6878
  * @precondition Android | 先完成登录,并传入登录成功返回的有效 code。
6368
6879
  * @precondition iOS | 先完成登录,并传入登录成功返回的有效 code。
6369
6880
  * @usageNote All | 仅在完成 MCP 授权登录流程后回传结果;登录成功时必须携带有效 code,回传成功后不要重复回传。
6370
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
6881
+ * @errorExample
6882
+ * ```json
6883
+ * {
6884
+ * "errNo": 105,
6885
+ * "errMsg": "authentication fail"
6886
+ * }
6887
+ * ```
6888
+ * @errorCode common | 102 | Android,iOS
6889
+ * @errorCode errNo | 104 | invalid parameter | Android | result 为 true 但缺少有效的兑换 code | 传入业务服务端生成的有效 code 后重试。
6890
+ * @errorCode errNo | 105 | authentication fail | Android,iOS | 登录被拒绝或兑换 code 校验未通过 | 确认业务登录状态与 code 是否有效后重试。
6891
+ * @errorCode errNo | 112 | invalid result | Android,iOS | Token 交换服务返回的数据无法解析 | 稍后重试;持续失败时反馈服务端响应异常。
6892
+ * @errorCode errNo | 115 | operation timeout | Android | Token 交换耗时超过限制 | 检查网络后重试。
6893
+ * @errorCode errNo | 301 | network request cancelled | iOS | Token 交换的网络请求被取消 | 确认应用和网络状态后重试。
6894
+ * @errorCode errNo | 302 | connection timed out | Android,iOS | Token 交换的网络连接超时 | 检查网络连接后重试。
6895
+ * @errorCode errNo | 303 | no network connection | Android,iOS | 当前无可用网络连接 | 恢复网络连接后重试。
6896
+ * @errorCode errNo | 305 | network failure | Android,iOS | Token 交换时发生其他网络错误 | 检查网络连接,稍后重试。
6897
+ * @platformNote Android | 缺少有效 code 时返回 104;调用超时返回 115。
6898
+ * @platformNote iOS | 缺少有效 code 时返回 102;网络请求被取消时返回 301,超时归类为 302。
6371
6899
  *
6372
6900
  * @public
6373
6901
  */
@@ -6777,7 +7305,15 @@ export declare type RecorderSampleRate = 8000 | 11025 | 12000 | 16000 | 22050 |
6777
7305
  * @permission none | - | none | Android,iOS | 无需额外权限
6778
7306
  * @precondition All | 无额外前置条件
6779
7307
  * @usageNote All | url 为智能服务内的页面路径,可携带查询参数;跳转会替换当前页面,不保留在页面栈中。
6780
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
7308
+ * @errorExample
7309
+ * ```json
7310
+ * {
7311
+ * "errNo": 104,
7312
+ * "errMsg": "invalid url"
7313
+ * }
7314
+ * ```
7315
+ * @errorCode common | 102 | Android,iOS
7316
+ * @errorCode errNo | 104 | invalid url | Android,iOS | url 为空或无法解析为有效的智能服务页面路径 | 检查 url 是否为合法的应用内页面路径后重试。
6781
7317
  *
6782
7318
  * @public
6783
7319
  */
@@ -6804,7 +7340,15 @@ export declare const redirectTo: (params: NavigateToParams) => Promise<object>;
6804
7340
  * @permission none | - | none | Android,iOS | 无需额外权限
6805
7341
  * @precondition All | 无额外前置条件
6806
7342
  * @usageNote All | url 为智能服务内的页面路径,可携带查询参数;跳转会关闭现有全部页面并以目标页面作为唯一页面。
6807
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
7343
+ * @errorExample
7344
+ * ```json
7345
+ * {
7346
+ * "errNo": 104,
7347
+ * "errMsg": "invalid url"
7348
+ * }
7349
+ * ```
7350
+ * @errorCode common | 102 | Android,iOS
7351
+ * @errorCode errNo | 104 | invalid url | Android,iOS | url 为空或无法解析为有效的智能服务页面路径 | 检查 url 是否为合法的应用内页面路径后重试。
6808
7352
  *
6809
7353
  * @public
6810
7354
  */
@@ -6981,7 +7525,7 @@ export declare interface RenameParams {
6981
7525
  * @permission none | - | none | Android,iOS | 无需额外权限
6982
7526
  * @precondition All | 无额外前置条件。
6983
7527
  * @usageNote All | 事件名与事件参数会用于数据分析,请勿写入用户隐私或敏感数据。
6984
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
7528
+ * @errorCode common | 102 | Android,iOS
6985
7529
  *
6986
7530
  * @public
6987
7531
  */
@@ -7046,7 +7590,22 @@ export declare interface ReportEventParams {
7046
7590
  * }
7047
7591
  * }
7048
7592
  * ```
7049
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
7593
+ * @errorExample
7594
+ * ```json
7595
+ * {
7596
+ * "errNo": 305,
7597
+ * "errMsg": "network failure"
7598
+ * }
7599
+ * ```
7600
+ * @errorCode common | 102 | iOS
7601
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | url 为空、method 非法,或请求参数、请求体校验失败 | 修正 url、method 与请求参数后重试。
7602
+ * @errorCode errNo | 110 | API call prohibited | Android,iOS | 请求 URL 未通过域名白名单校验 | 确认目标域名已在智能服务中配置后重试。
7603
+ * @errorCode errNo | 301 | network request cancelled | iOS | 网络请求被取消 | 确认应用与网络状态后重试。
7604
+ * @errorCode errNo | 302 | connection timed out | Android,iOS | 网络连接超时 | 检查网络连接后重试。
7605
+ * @errorCode errNo | 303 | no network connection | Android,iOS | 当前无可用网络连接 | 恢复网络连接后重试。
7606
+ * @errorCode errNo | 305 | network failure | Android,iOS | 发生其他网络错误 | 检查网络连接,稍后重试。
7607
+ * @platformNote Android | 网络失败仅细分为 302(HTTP 408 超时)、303(无网络连接)与 305(其他网络错误),不返回 301;url 为空或 method 非法返回 104;命中域名管控返回 110。
7608
+ * @platformNote iOS | 依据 NSURLError 细分网络失败:请求取消 301、连接超时 302、无网络 303、其他 305;参数或请求体校验失败返回 104;命中域名管控返回 110;其他失败统一返回 102。
7050
7609
  *
7051
7610
  * @public
7052
7611
  */
@@ -7099,7 +7658,7 @@ export declare type RequestMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' |
7099
7658
  * "logId": "20260519xxxx"
7100
7659
  * }
7101
7660
  * ```
7102
- * @errorCode none | - | - | Android,iOS | 无稳定的顶层 errNo/errMsg;调用失败时 Promise reject,业务错误(errNo、errMsg、errLogId)在错误对象的 data 字段 | 通过 catch 捕获并读取 e.data 排查
7661
+ * @errorCode common | 102 | Android,iOS
7103
7662
  * @knownIssue All | 失败结果不会作为 await 的返回值,需通过 catch 捕获并从错误对象的 data 字段读取 errNo、errMsg、errLogId。
7104
7663
  *
7105
7664
  * @public
@@ -7335,7 +7894,16 @@ export declare interface SaveImageToPhotosAlbumParams {
7335
7894
  * "scanType": "QR_CODE"
7336
7895
  * }
7337
7896
  * ```
7338
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认相机权限及用户是否取消
7897
+ * @errorExample
7898
+ * ```json
7899
+ * {
7900
+ * "errNo": 103,
7901
+ * "errMsg": "feature not support"
7902
+ * }
7903
+ * ```
7904
+ * @errorCode common | 102 | Android,iOS
7905
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前豆包版本或运行环境未提供扫码能力 | 在支持扫码能力的豆包版本中调用。
7906
+ * @errorCode errNo | 112 | invalid result | iOS | 扫码成功但未返回可用的扫码结果数据 | 稍后重试;持续失败时反馈扫码结果异常。
7339
7907
  *
7340
7908
  * @public
7341
7909
  */
@@ -7405,13 +7973,13 @@ export declare type Scope = 'scope.userLocation' | 'scope.userFuzzyLocation' | '
7405
7973
  export declare type SelectedMessageFileType = 'video' | 'image' | 'file';
7406
7974
 
7407
7975
  /**
7408
- * 以用户身份发送后续消息,触发新一轮对话或 API 调用。
7976
+ * 以用户身份发送后续消息,触发新一轮对话、API 调用或引导模型响应。
7409
7977
  *
7410
7978
  * @param params - 要发送的后续消息内容。
7411
- * @returns 返回一个 Promise,在消息发送成功时解析。
7979
+ * @returns 返回一个 Promise,在消息发送请求提交后解析。
7412
7980
  * @remarks
7413
- * 可在 Widget、智能服务页面或 Worker 中调用。宿主会根据调用上下文关联会话:Widget 使用其所在
7414
- * 会话,从 Widget 打开的页面沿用该会话,其他页面和 Worker 使用主会话。
7981
+ * 可在卡片或智能服务页面中调用,不支持在 app.ts 代码中调用。客户端会根据调用上下文关联会话:
7982
+ * 卡片使用其所在会话,从卡片打开的页面沿用该会话,其他页面使用主会话。
7415
7983
  *
7416
7984
  * @example
7417
7985
  * ```typescript
@@ -7426,11 +7994,30 @@ export declare type SelectedMessageFileType = 'video' | 'image' | 'file';
7426
7994
  * name: 'selectDrink',
7427
7995
  * arguments: { drinkId: 'latte_001' }
7428
7996
  * }
7997
+ * },
7998
+ * {
7999
+ * type: 'responseHint',
8000
+ * data: {
8001
+ * userAction: '用户选择了拿铁',
8002
+ * responseGuidance: '确认已选择拿铁,并询问是否需要调整杯型'
8003
+ * }
7429
8004
  * }
7430
8005
  * ]
7431
8006
  * });
7432
8007
  * ```
7433
8008
  *
8009
+ * @since 0.0.37
8010
+ * @contractStatus verified | 公开参数与 Android、iOS 的消息提交行为一致。
8011
+ * @platformSupport Android | supported | 支持在卡片或智能服务页面中发送后续消息。
8012
+ * @platformSupport iOS | supported | 支持在卡片和智能服务页面中发送后续消息。
8013
+ * @platformSupport PC | unsupported | 当前未提供该平台实现。
8014
+ * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
8015
+ * @permission none | - | none | Android,iOS | 无需额外权限
8016
+ * @precondition Android | 在卡片或智能服务页面中调用。
8017
+ * @precondition iOS | 在卡片或智能服务页面中调用,且当前上下文已关联有效会话。
8018
+ * @usageNote All | Promise 解析表示发送请求已提交,不表示消息已成功送达;实际发送失败不会通过该 Promise 返回。
8019
+ * @errorCode none | - | - | Android,iOS | 调用失败时未稳定返回 API 专属错误码 | 检查 content 与调用场景后重试
8020
+ *
7434
8021
  * @public
7435
8022
  */
7436
8023
  export declare const sendFollowUpMessage: (params: SendFollowUpMessageParams) => Promise<object>;
@@ -7441,7 +8028,10 @@ export declare const sendFollowUpMessage: (params: SendFollowUpMessageParams) =>
7441
8028
  * @public
7442
8029
  */
7443
8030
  export declare interface SendFollowUpMessageParams {
7444
- /** 消息内容。 */
8031
+ /**
8032
+ * 消息内容。
8033
+ * @constraint 至少包含一条 text 类型且 text 不为空白的消息;第一条符合条件的消息作为本轮用户输入。
8034
+ */
7445
8035
  content: Content[];
7446
8036
  }
7447
8037
 
@@ -7452,7 +8042,7 @@ export declare interface SendFollowUpMessageParams {
7452
8042
  *
7453
8043
  * @param params - 消息内容及类型。
7454
8044
  * @returns 返回一个 Promise,在消息成功发送时解析。
7455
- * @deprecated 使用 {@link dispatchActionDirective} 描述用户行为并约束模型后续动作。
8045
+ * @deprecated 使用 {@link sendFollowUpMessage} 发送后续消息。
7456
8046
  * @summary 以用户身份发送消息。
7457
8047
  * @example
7458
8048
  * ```typescript
@@ -7473,10 +8063,10 @@ export declare interface SendFollowUpMessageParams {
7473
8063
  * @permission none | - | none | Android,iOS | 无需额外权限
7474
8064
  * @precondition Android | 在卡片或页面环境中调用,由客户端自动获取页面上下文确定目标 bot。
7475
8065
  * @precondition iOS | 在卡片或页面环境中调用,由客户端自动获取页面上下文确定目标 bot。
7476
- * @usageNote All | 该 API 已废弃,请改用 dispatchActionDirective 描述用户行为并约束模型后续动作。
8066
+ * @usageNote All | 该 API 已废弃,请改用 sendFollowUpMessage 发送后续消息。
7477
8067
  * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
7478
8068
  *
7479
- * @public
8069
+ * @internal
7480
8070
  */
7481
8071
  export declare const sendQueryMessage: (params: SendQueryMessageParams) => Promise<object>;
7482
8072
 
@@ -7516,7 +8106,17 @@ export declare interface SendQueryMessageParams {
7516
8106
  * ```json
7517
8107
  * {}
7518
8108
  * ```
7519
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认设备是否支持短信
8109
+ * @errorExample
8110
+ * ```json
8111
+ * {
8112
+ * "errNo": 114,
8113
+ * "errMsg": "operation cancelled"
8114
+ * }
8115
+ * ```
8116
+ * @errorCode common | 102 | Android,iOS
8117
+ * @errorCode errNo | 103 | feature not support | iOS | 当前设备不支持发送短信 | 在支持短信的设备上调用,或提前提示用户设备不支持短信。
8118
+ * @errorCode errNo | 114 | operation cancelled | iOS | 用户在系统短信面板中取消了发送 | 用户需要时可再次调用 `sendSms` 重新拉起短信面板。
8119
+ * @platformNote iOS | 拉起短信面板后用户取消返回 114、发送失败返回 102、设备不支持短信返回 103;Android 无法拉起短信应用时返回 102。
7520
8120
  *
7521
8121
  * @public
7522
8122
  */
@@ -7577,9 +8177,20 @@ export declare type SensorInterval = 'game' | 'ui' | 'normal';
7577
8177
  * @precondition Android | 无额外前置条件
7578
8178
  * @precondition iOS | 无额外前置条件
7579
8179
  * @usageNote All | 该 API 已废弃,请改用 updateModelContext 按任务或实体维度补充模型上下文。
7580
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
8180
+ * @errorExample
8181
+ * ```json
8182
+ * {
8183
+ * "errNo": 103,
8184
+ * "errMsg": "feature not support"
8185
+ * }
8186
+ * ```
8187
+ * @errorCode common | 102 | Android,iOS
8188
+ * @errorCode errNo | 103 | feature not support | Android | 当前容器类型不支持设置全局上下文 | 请在支持的容器(页面、卡片或 Worker)环境中调用。
8189
+ * @errorCode errNo | 104 | invalid parameter | iOS | 传入的参数结构非法,无法解析 | 检查传入的参数结构后重试。
8190
+ * @platformNote Android | 当前容器类型不受支持返回 103;其他失败统一返回 102。
8191
+ * @platformNote iOS | 参数结构非法返回 104;其他失败统一返回 102。
7581
8192
  *
7582
- * @public
8193
+ * @internal
7583
8194
  */
7584
8195
  export declare const setAdditionalContext: (params: SetAdditionalContextParams) => Promise<object>;
7585
8196
 
@@ -7683,7 +8294,16 @@ export declare interface SetBLEMTUResult {
7683
8294
  * ```json
7684
8295
  * {}
7685
8296
  * ```
7686
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认豆包是否提供剪贴板能力
8297
+ * @errorExample
8298
+ * ```json
8299
+ * {
8300
+ * "errNo": 103,
8301
+ * "errMsg": "feature not support"
8302
+ * }
8303
+ * ```
8304
+ * @errorCode common | 102 | Android,iOS
8305
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前豆包版本或运行环境未提供剪贴板写入能力 | 在支持剪贴板能力的豆包版本中调用。
8306
+ * @errorCode errNo | 106 | system permission denied | Android | 写入后系统未授予剪贴板访问权限,写入未生效 | 引导用户在系统设置中开启剪贴板相关权限后重试。
7687
8307
  *
7688
8308
  * @public
7689
8309
  */
@@ -7717,11 +8337,12 @@ export declare interface SetClipboardDataParams {
7717
8337
  * @precondition All | 无额外前置条件
7718
8338
  * @usageNote All | 不再需要常亮时应主动将 keepScreenOn 设为 false,避免额外功耗
7719
8339
  * @platformNote iOS | 页面销毁后常亮状态会自动恢复
8340
+ * @platformNote iOS | 设置常亮恒返回成功,无失败错误码
7720
8341
  * @resultExample
7721
8342
  * ```json
7722
8343
  * {}
7723
8344
  * ```
7724
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息重试
8345
+ * @errorCode common | 102 | Android
7725
8346
  *
7726
8347
  * @public
7727
8348
  */
@@ -7857,7 +8478,17 @@ export declare function setStorageSync<TData = unknown>(params: SetStorageParams
7857
8478
  * ```json
7858
8479
  * {}
7859
8480
  * ```
7860
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | Android 不要调用该 API,iOS 根据返回的错误信息重试
8481
+ * @errorExample
8482
+ * ```json
8483
+ * {
8484
+ * "errNo": 1401001,
8485
+ * "errMsg": "wifi is not initialized"
8486
+ * }
8487
+ * ```
8488
+ * @errorCode common | 102 | iOS
8489
+ * @errorCode errNo | 103 | feature not support | Android | 该 API 为 iOS 特有,Android 调用固定失败 | 不要在 Android 调用该 API
8490
+ * @errorCode errNo | 1401001 | wifi is not initialized | iOS | 调用前未先调用 startWifi 完成初始化 | 先调用 startWifi 再设置预设列表
8491
+ * @platformNote Android | 固定返回 103(该能力仅 iOS);iOS 未初始化返回 1401001,其他失败统一返回 102。
7861
8492
  *
7862
8493
  * @public
7863
8494
  */
@@ -7902,7 +8533,16 @@ export declare interface SetWifiListParams {
7902
8533
  * "tapIndex": 0
7903
8534
  * }
7904
8535
  * ```
7905
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
8536
+ * @errorExample
8537
+ * ```json
8538
+ * {
8539
+ * "errNo": 114,
8540
+ * "errMsg": "operation cancelled"
8541
+ * }
8542
+ * ```
8543
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | itemList 为空数组 | 传入至少一个菜单项后重试。
8544
+ * @errorCode errNo | 114 | operation cancelled | Android,iOS | 用户点击 Cancel 按钮或点击蒙层关闭操作菜单 | 用户主动取消,按需静默处理。
8545
+ * @errorCode common | 102 | Android,iOS
7906
8546
  *
7907
8547
  * @public
7908
8548
  */
@@ -7984,8 +8624,16 @@ export declare interface ShowActionSheetResult {
7984
8624
  * "role": "agreeMain"
7985
8625
  * }
7986
8626
  * ```
7987
- * @errorCode common | 104 | Android,iOS
7988
- * @errorCode common | 103 | iOS
8627
+ * @errorExample
8628
+ * ```json
8629
+ * {
8630
+ * "errNo": 104,
8631
+ * "errMsg": "invalid parameter"
8632
+ * }
8633
+ * ```
8634
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | title 或 content 为空、content 含被拦截的标签/事件属性/危险链接、buttons 数量不在 1-3 范围;iOS 还会在按钮语义重复或按钮文案为空时返回 | 修正参数后重试。
8635
+ * @errorCode errNo | 103 | feature not support | iOS | 豆包底部弹窗能力不可用,或按钮数为 3 时当前 provider 不支持三按钮 | 降级到自定义弹窗;同场景 Android 返回 action=cancel、source=hostUnavailable 的成功结果,请一并做降级处理。
8636
+ * @platformNote iOS | provider 不可用或不支持三按钮时返回 errNo 103 失败;Android 在 provider 不可用时返回 action=cancel、source=hostUnavailable 的成功结果,且不校验三按钮能力。
7989
8637
  *
7990
8638
  * @public
7991
8639
  */
@@ -8039,7 +8687,7 @@ export declare type ShowBottomSheetResult = BottomSheetButtonClickResult | Botto
8039
8687
  * @permission none | - | none | Android,iOS | 无需额外权限
8040
8688
  * @precondition All | 无额外前置条件
8041
8689
  * @usageNote All | loading 展示后需调用 hideLoading 手动关闭。
8042
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
8690
+ * @errorCode common | 102 | Android,iOS
8043
8691
  *
8044
8692
  * @public
8045
8693
  */
@@ -8088,7 +8736,7 @@ export declare interface ShowLoadingParams {
8088
8736
  * "action": "confirm"
8089
8737
  * }
8090
8738
  * ```
8091
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
8739
+ * @errorCode common | 102 | Android,iOS
8092
8740
  *
8093
8741
  * @public
8094
8742
  */
@@ -8191,7 +8839,17 @@ export declare interface ShowModalResult {
8191
8839
  * ```json
8192
8840
  * {}
8193
8841
  * ```
8194
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
8842
+ * @errorExample
8843
+ * ```json
8844
+ * {
8845
+ * "errNo": 104,
8846
+ * "errMsg": "invalid parameter"
8847
+ * }
8848
+ * ```
8849
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | message 为空;iOS 还会在 icon 取值非法或入参无法解析时返回(type 由前端归一化为合法值,非法 type 场景不会触发) | 修正参数后重试。
8850
+ * @errorCode errNo | 103 | feature not support | iOS | 豆包 UIService 未实现,无法展示 Toast | 降级到其他提示方式。
8851
+ * @errorCode common | 102 | Android
8852
+ * @platformNote iOS | 参数校验失败统一返回 errNo 104;UIService 缺失时返回 errNo 103。Android 参数校验失败返回 errNo 104,宿主上下文缺失返回 errNo 102。
8195
8853
  *
8196
8854
  * @public
8197
8855
  * */
@@ -8272,8 +8930,18 @@ export declare interface ShowToastParams {
8272
8930
  * ```json
8273
8931
  * {}
8274
8932
  * ```
8275
- * @errorCode none | - | - | Android,iOS | 无稳定的顶层 errNo/errMsg;调用失败时 Promise reject,业务错误(code、errNo、errMsg、errLogId)在错误对象的 data 字段 | 通过 catch 捕获并读取 e.data 排查
8933
+ * @errorExample
8934
+ * ```json
8935
+ * {
8936
+ * "errNo": 114,
8937
+ * "errMsg": "operation cancelled"
8938
+ * }
8939
+ * ```
8940
+ * @errorCode common | 102 | Android,iOS
8941
+ * @errorCode common | 103 | Android,iOS
8942
+ * @errorCode errNo | 114 | operation cancelled | Android | 用户在签约收银台中取消了签约操作 | 用户需要时可再次调用 `sign` 重新发起签约。
8276
8943
  * @platformNote Android | 需在前台可见的 Activity 中调用,应用退至后台或无有效页面时会返回失败。
8944
+ * @platformNote Android | 用户主动取消签约时返回顶层 errNo 114(operation cancelled);iOS 在该场景不返回顶层专属 errNo。
8277
8945
  * @knownIssue All | 失败结果不会作为 await 的返回值,需通过 catch 捕获并从错误对象的 data 字段读取 code、errNo、errMsg、errLogId。
8278
8946
  *
8279
8947
  * @public
@@ -8594,7 +9262,15 @@ export declare interface SocketTaskSendParams {
8594
9262
  * ```json
8595
9263
  * {}
8596
9264
  * ```
8597
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认设备是否支持加速度传感器
9265
+ * @errorExample
9266
+ * ```json
9267
+ * {
9268
+ * "errNo": 103,
9269
+ * "errMsg": "feature not support"
9270
+ * }
9271
+ * ```
9272
+ * @errorCode common | 102 | Android,iOS
9273
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前设备不支持加速度传感器或无法注册监听 | 在具备加速度传感器的设备上调用,或提前提示用户设备不支持。
8598
9274
  *
8599
9275
  * @public
8600
9276
  */
@@ -8774,7 +9450,15 @@ export declare interface StartBluetoothDevicesDiscoveryParams {
8774
9450
  * ```json
8775
9451
  * {}
8776
9452
  * ```
8777
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认设备是否支持罗盘传感器
9453
+ * @errorExample
9454
+ * ```json
9455
+ * {
9456
+ * "errNo": 103,
9457
+ * "errMsg": "feature not support"
9458
+ * }
9459
+ * ```
9460
+ * @errorCode common | 102 | Android,iOS
9461
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前设备不支持罗盘传感器或无法注册监听 | 在具备罗盘传感器的设备上调用,或提前提示用户设备不支持。
8778
9462
  *
8779
9463
  * @public
8780
9464
  */
@@ -8805,7 +9489,15 @@ export declare const startCompass: (params?: {} | undefined) => Promise<object>;
8805
9489
  * ```json
8806
9490
  * {}
8807
9491
  * ```
8808
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认设备是否支持方向传感器
9492
+ * @errorExample
9493
+ * ```json
9494
+ * {
9495
+ * "errNo": 103,
9496
+ * "errMsg": "feature not support"
9497
+ * }
9498
+ * ```
9499
+ * @errorCode common | 102 | Android,iOS
9500
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前设备不支持方向传感器或无法注册监听 | 在具备方向传感器的设备上调用,或提前提示用户设备不支持。
8809
9501
  *
8810
9502
  * @public
8811
9503
  */
@@ -8851,7 +9543,15 @@ export declare interface StartDeviceMotionListeningParams {
8851
9543
  * ```json
8852
9544
  * {}
8853
9545
  * ```
8854
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认设备是否支持陀螺仪传感器
9546
+ * @errorExample
9547
+ * ```json
9548
+ * {
9549
+ * "errNo": 103,
9550
+ * "errMsg": "feature not support"
9551
+ * }
9552
+ * ```
9553
+ * @errorCode common | 102 | Android,iOS
9554
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前设备不支持陀螺仪传感器或无法注册监听 | 在具备陀螺仪传感器的设备上调用,或提前提示用户设备不支持。
8855
9555
  *
8856
9556
  * @public
8857
9557
  */
@@ -8905,7 +9605,22 @@ export declare interface StartGyroscopeParams {
8905
9605
  * ```json
8906
9606
  * {}
8907
9607
  * ```
8908
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息检查授权、系统定位服务和是否重复启动
9608
+ * @errorExample
9609
+ * ```json
9610
+ * {
9611
+ * "errNo": 1700001,
9612
+ * "errMsg": "location permission denied"
9613
+ * }
9614
+ * ```
9615
+ * @errorCode common | 102 | Android,iOS
9616
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 宿主未注册持续定位能力(location service 不可用) | 确认宿主已集成持续定位能力,不可用时不要调用
9617
+ * @errorCode errNo | 114 | operation cancelled | Android,iOS | 启动过程中被取消(用户取消授权,或授权返回前已调用 stopLocationUpdate) | 需要时重新调用 startLocationUpdate
9618
+ * @errorCode errNo | 118 | already exists | Android,iOS | 持续定位已启动,重复调用 startLocationUpdate | 先调用 stopLocationUpdate 再重新启动
9619
+ * @errorCode errNo | 1700001 | location permission denied | Android,iOS | 用户拒绝应用位置授权或系统定位权限被拒 | 调用 authorize 重新发起授权并在系统设置中开启定位权限后重试
9620
+ * @errorCode errNo | 1700002 | location network error | Android,iOS | 位置授权过程中发生网络错误 | 检查网络连接后重试
9621
+ * @errorCode errNo | 104 | invalid parameter | iOS | 位置授权 scope 非法 | 检查应用权限声明中配置的 scope 后重试
9622
+ * @platformNote Android | 用户拒绝授权返回 1700001、取消返回 114、授权网络失败返回 1700002;宿主未注册持续定位能力返回 103;其他失败统一返回 102。
9623
+ * @platformNote iOS | 用户拒绝授权返回 1700001、取消返回 114、授权网络失败返回 1700002、非法 scope 返回 104;宿主未注册持续定位能力返回 103;其他失败统一返回 102。
8909
9624
  *
8910
9625
  * @public
8911
9626
  */
@@ -8948,7 +9663,16 @@ export declare interface StartLocationUpdateParams {
8948
9663
  * ```json
8949
9664
  * {}
8950
9665
  * ```
8951
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据返回的错误信息重试
9666
+ * @errorExample
9667
+ * ```json
9668
+ * {
9669
+ * "errNo": 103,
9670
+ * "errMsg": "feature not support"
9671
+ * }
9672
+ * ```
9673
+ * @errorCode common | 102 | Android
9674
+ * @errorCode errNo | 103 | feature not support | Android | 设备无可用的 Wi-Fi 能力(缺少系统 Wi-Fi 服务) | 检查设备是否支持 Wi-Fi,不支持时不要调用
9675
+ * @platformNote iOS | 初始化恒返回成功,不返回失败错误码。
8952
9676
  *
8953
9677
  * @public
8954
9678
  */
@@ -9198,7 +9922,16 @@ export declare const stopGyroscope: (params?: {} | undefined) => Promise<object>
9198
9922
  * ```json
9199
9923
  * {}
9200
9924
  * ```
9201
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认持续定位状态后重试
9925
+ * @errorExample
9926
+ * ```json
9927
+ * {
9928
+ * "errNo": 103,
9929
+ * "errMsg": "feature not support"
9930
+ * }
9931
+ * ```
9932
+ * @errorCode common | 102 | Android,iOS
9933
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 持续定位已启动,但宿主未注册持续定位能力(location service 不可用),无法停止 | 确认宿主已集成持续定位能力
9934
+ * @platformNote All | 未启动或仍在授权阶段调用直接返回成功;仅在已启动后停止失败时返回错误码,其他失败统一返回 102。
9202
9935
  *
9203
9936
  * @public
9204
9937
  */
@@ -9228,7 +9961,7 @@ export declare function stopLocationUpdate(): Promise<LocationOperationResult>;
9228
9961
  * ```json
9229
9962
  * {}
9230
9963
  * ```
9231
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据返回的错误信息重试
9964
+ * @errorCode none | - | - | Android,iOS | 该接口双端恒返回成功,无 API 专属错误码 | 无需处理
9232
9965
  *
9233
9966
  * @public
9234
9967
  */
@@ -9468,7 +10201,23 @@ export declare interface UnzipParams {
9468
10201
  * @precondition Android | 未传 taskId 时需传 entityId;两者都不传时仅可在卡片环境调用,以便客户端补充必要信息。
9469
10202
  * @precondition iOS | 未传 taskId 时需传 entityId;两者都不传时仅可在卡片环境调用,以便客户端补充必要信息。
9470
10203
  * @usageNote All | 用于在任务或实体维度补充模型可理解的上下文,请在业务状态变化后按需调用,避免高频重复捐赠相同内容。
9471
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
10204
+ * @errorExample
10205
+ * ```json
10206
+ * {
10207
+ * "errNo": 305,
10208
+ * "errMsg": "network failure"
10209
+ * }
10210
+ * ```
10211
+ * @errorCode common | 100 | Android
10212
+ * @errorCode common | 102 | Android
10213
+ * @errorCode errNo | 103 | feature not support | Android | 当前容器类型不受支持,无法归类为页面、卡片或 Worker 来源 | 请在支持的容器(页面、卡片或 Worker)环境中调用。
10214
+ * @errorCode errNo | 112 | invalid result | Android | 捐赠上下文的远端响应无法解析 | 稍后重试;持续失败时反馈服务端响应异常。
10215
+ * @errorCode errNo | 301 | network request cancelled | iOS | 捐赠上下文的网络请求被取消 | 确认应用与网络状态后重试。
10216
+ * @errorCode errNo | 302 | connection timed out | Android,iOS | 捐赠上下文的网络连接超时 | 检查网络连接后重试。
10217
+ * @errorCode errNo | 303 | no network connection | Android,iOS | 当前无可用网络连接 | 恢复网络连接后重试。
10218
+ * @errorCode errNo | 305 | network failure | Android,iOS | 捐赠上下文时发生其他网络错误 | 检查网络连接,稍后重试。
10219
+ * @platformNote Android | 网络失败细分为连接超时 302、无网络 303、其他网络错误 305;远端响应无法解析返回 112;当前容器类型不受支持返回 103;其他失败统一返回 102,未归类的远端业务错误返回 100。
10220
+ * @platformNote iOS | 依据网络错误细分:请求取消 301、连接超时 302、无网络 303、其他 305;不支持的调用来源仅回退处理、不作为失败。
9472
10221
  *
9473
10222
  * @public
9474
10223
  */
@@ -9525,7 +10274,18 @@ export declare interface UpdateModelContextParams {
9525
10274
  * @precondition Android | 在卡片或消息环境中调用,需传入有效的 widgetInstanceId。
9526
10275
  * @precondition iOS | 在卡片或消息环境中调用,需传入有效的 widgetInstanceId。
9527
10276
  * @usageNote All | 请在卡片交互或服务端结果回写后调用;传入的 widgetData 通常为 `JSON.stringify(viewData)`。
9528
- * @errorCode none | - | - | Android,iOS | 无 API 专属错误码 | 无需处理
10277
+ * @errorExample
10278
+ * ```json
10279
+ * {
10280
+ * "errNo": 104,
10281
+ * "errMsg": "invalid parameter"
10282
+ * }
10283
+ * ```
10284
+ * @errorCode common | 102 | Android,iOS
10285
+ * @errorCode errNo | 103 | feature not support | Android,iOS | 当前运行环境未接入消息更新能力(宿主消息依赖或消息服务缺失) | 请在支持卡片消息更新的豆包环境中调用。
10286
+ * @errorCode errNo | 104 | invalid parameter | Android,iOS | widgetInstanceId 或 widgetData 为空,或传入了空字符串的 widgetId | 传入非空的 widgetInstanceId、widgetData,并确保 widgetId 有效后重试。
10287
+ * @errorCode errNo | 116 | resource not found | Android,iOS | 依据 widgetInstanceId 找不到对应消息,或依据 widgetId 找不到已注册的 Widget | 确认 widgetInstanceId 与 widgetId 有效后重试。
10288
+ * @platformNote All | 参数为空返回 104;消息或 Widget 未找到返回 116;宿主消息依赖或消息服务缺失返回 103;其他失败统一返回 102。
9529
10289
  *
9530
10290
  * @public
9531
10291
  */
@@ -9556,27 +10316,83 @@ export declare interface UpdateWidgetParams {
9556
10316
  * @param params 上传参数,字段见 {@link UploadFileParams}。
9557
10317
  * @returns 当前上传任务对应的 {@link UploadTask}。
9558
10318
  *
9559
- * @public
9560
- */
9561
- export declare function uploadFile(params: UploadFileParams): UploadTask;
9562
-
9563
- /**
9564
- * 文件上传失败回调结果。
10319
+ * @remarks
10320
+ * `uploadFile` 会同步返回可监听、可中断的 Promise 任务对象。
10321
+ * 建议在调用后立即注册进度和响应头监听;不再需要上传时调用 `UploadTask.abort`。
10322
+ * @example
10323
+ * ```typescript
10324
+ * import { uploadFile } from '@doubao-dev/framework/api';
10325
+ *
10326
+ * const task = uploadFile({
10327
+ * url: 'https://example.com/upload',
10328
+ * filePath: 'ttfile://temp/example.png',
10329
+ * name: 'file',
10330
+ * formData: { scene: 'profile' }
10331
+ * });
10332
+ *
10333
+ * task
10334
+ * .then((result) => {
10335
+ * console.log(result.statusCode, result.data);
10336
+ * })
10337
+ * .catch((error) => {
10338
+ * console.error(error);
10339
+ * })
10340
+ * .finally(() => {
10341
+ * console.log('upload finished');
10342
+ * });
10343
+ *
10344
+ * task.onProgressUpdate((event) => {
10345
+ * console.log(event.progress, event.totalBytesSent);
10346
+ * });
10347
+ * task.onHeadersReceived((event) => {
10348
+ * console.log(event.header);
10349
+ * });
10350
+ *
10351
+ * // 不再需要上传时中断任务。
10352
+ * // task.abort();
10353
+ * ```
10354
+ *
10355
+ * @since 0.0.39
10356
+ * @contractStatus verified | enableProfile 当前仅允许 false,Android、iOS 均支持正常发起上传。
10357
+ * @platformSupport Android | supported | 支持文件上传、进度监听、响应头监听和中断任务。
10358
+ * @platformSupport iOS | supported | 支持文件上传、进度监听、响应头监听和中断任务。
10359
+ * @platformSupport PC | unsupported | 当前未提供该平台实现。
10360
+ * @platformSupport HarmonyOS | unsupported | 当前未提供该平台实现。
10361
+ * @permission none | - | none | Android,iOS | 无需额外权限
10362
+ * @precondition All | url 需命中当前智能服务的上传域名白名单,filePath 需指向当前智能服务可访问的本地文件。
10363
+ * @usageNote All | 上传成功时 Promise resolve,上传失败或取消时 Promise reject;任务结束或不再使用时应移除监听,必要时调用 abort。
10364
+ * @errorCode errNo | 121999 | uploadFile:fail url is invalid | Android,iOS | url 缺失或不是有效上传地址 | 传入完整的 HTTP/HTTPS URL
10365
+ * @errorCode errNo | 121999 | uploadFile:fail name is required | Android,iOS | name 缺失或为空 | 传入服务端接收文件所使用的 form field name
10366
+ * @errorCode errNo | 121901 | uploadFile:fail url not in domain list | Android,iOS | url 未命中上传域名白名单 | 在智能服务配置中添加上传域名后重试
10367
+ * @errorCode errNo | 121902 | uploadFile:fail no file exist | Android,iOS | filePath 为空、文件不存在或路径不是文件 | 使用文件 API 获取当前智能服务可访问的有效文件路径
10368
+ * @errorCode errNo | 121905 | uploadFile:fail upload file abort | Android,iOS | 调用 UploadTask.abort 中断上传 | 按业务需要处理取消状态,无需自动重试
10369
+ * @errorCode errNo | 121906 | uploadFile:fail file path permission denied | Android,iOS | 当前智能服务无权访问 filePath | 改用当前智能服务目录内的文件
10370
+ * @errorCode errNo | 121920 | uploadFile:fail request time out | Android,iOS | 上传超过宿主超时时间 | 检查网络或设置合理的 timeout 后重试
10371
+ * @errorCode errNo | 121985 | uploadFile:fail network unavailable | Android,iOS | 当前网络不可用 | 恢复网络连接后重试
10372
+ * @errorCode errNo | 121991 | uploadFile:fail network error | Android,iOS | 上传过程中发生网络错误 | 检查网络和服务端状态后重试
10373
+ * @errorCode errNo | 121992 | uploadFile:fail enableProfile is not supported | Android,iOS | enableProfile 设置为 true | 移除 enableProfile 或设置为 false
10374
+ * @resultExample
10375
+ * ```json
10376
+ * {
10377
+ * "statusCode": 200,
10378
+ * "header": {
10379
+ * "content-type": "application/json"
10380
+ * },
10381
+ * "data": "{\"ok\":true}"
10382
+ * }
10383
+ * ```
10384
+ * @errorExample
10385
+ * ```json
10386
+ * {
10387
+ * "errMsg": "uploadFile:fail request time out",
10388
+ * "errNo": 121920,
10389
+ * "errorCode": 121920
10390
+ * }
10391
+ * ```
9565
10392
  *
9566
10393
  * @public
9567
10394
  */
9568
- export declare interface UploadFileFailCallbackResult {
9569
- /** 错误信息。 */
9570
- errMsg: string;
9571
- /** 错误码,尽量对齐抖音小程序 uploadFile 错误码。 */
9572
- errNo?: number;
9573
- /** 抖音小程序风格错误码字段。 */
9574
- errorCode?: number;
9575
- /** HTTP 状态码;请求已收到响应但被判定失败时可能存在。 */
9576
- statusCode?: number;
9577
- /** HTTP 响应头;请求已收到响应但被判定失败时可能存在。 */
9578
- header?: Record<string, string>;
9579
- }
10395
+ export declare function uploadFile(params: UploadFileParams): UploadTask;
9580
10396
 
9581
10397
  /**
9582
10398
  * 文件上传参数。
@@ -9590,28 +10406,38 @@ export declare interface UploadFileParams {
9590
10406
  filePath: string;
9591
10407
  /** 文件对应的 form field name/key,服务端通过该 key 获取文件内容;multipart filename 使用 filePath 的 basename。 */
9592
10408
  name: string;
9593
- /** HTTP 请求 Header。`referer`、`user-agent`、`content-type` 等宿主管控字段不会被业务覆盖。 */
10409
+ /**
10410
+ * HTTP 请求 Header。`referer`、`user-agent`、`content-type` 等宿主管控字段不会被业务覆盖。
10411
+ *
10412
+ * @default -
10413
+ */
9594
10414
  header?: Record<string, string>;
9595
- /** 额外的 form-data 字段。对象或数组值会按 JSON 字符串传递。 */
10415
+ /**
10416
+ * 额外的 form-data 字段。对象或数组值会按 JSON 字符串传递。
10417
+ *
10418
+ * @default -
10419
+ */
9596
10420
  formData?: Record<string, unknown>;
9597
- /** 超时时间,单位 ms。 */
10421
+ /**
10422
+ * 超时时间,单位 ms;不传时使用宿主侧默认超时配置。
10423
+ *
10424
+ * @default -
10425
+ */
9598
10426
  timeout?: number;
9599
- /** 是否返回网络 profile。当前 native upload 链路暂不支持,设置为 true 会触发 fail。 */
9600
- enableProfile?: boolean;
9601
- /** 上传成功回调。 */
9602
- success?: (result: UploadFileSuccessCallbackResult) => void;
9603
- /** 上传失败回调。 */
9604
- fail?: (result: UploadFileFailCallbackResult) => void;
9605
- /** 上传完成回调,成功或失败都会触发。 */
9606
- complete?: (result: UploadFileSuccessCallbackResult | UploadFileFailCallbackResult) => void;
10427
+ /**
10428
+ * 是否返回网络 profile。当前 native upload 链路暂不支持,仅支持 false。
10429
+ *
10430
+ * @default false
10431
+ */
10432
+ enableProfile?: false;
9607
10433
  }
9608
10434
 
9609
10435
  /**
9610
- * 文件上传成功回调结果。
10436
+ * 文件上传结果。
9611
10437
  *
9612
10438
  * @public
9613
10439
  */
9614
- export declare interface UploadFileSuccessCallbackResult {
10440
+ export declare interface UploadFileResult {
9615
10441
  /** HTTP 状态码。 */
9616
10442
  statusCode: number;
9617
10443
  /** HTTP 响应头。 */
@@ -9625,17 +10451,37 @@ export declare interface UploadFileSuccessCallbackResult {
9625
10451
  *
9626
10452
  * @public
9627
10453
  */
9628
- export declare interface UploadTask {
9629
- /** 中断上传任务。 */
9630
- abort(): void;
9631
- /** 监听上传进度变化。 */
9632
- onProgressUpdate(callback: (event: UploadTaskProgressUpdateEvent) => void): void;
9633
- /** 取消监听上传进度变化;不传 callback 时移除当前任务的全部进度监听。 */
9634
- offProgressUpdate(callback?: (event: UploadTaskProgressUpdateEvent) => void): void;
9635
- /** 监听 HTTP Response Header 事件。 */
9636
- onHeadersReceived(callback: (event: UploadTaskHeadersReceivedEvent) => void): void;
9637
- /** 取消监听 HTTP Response Header 事件;不传 callback 时移除当前任务的全部 Header 监听。 */
9638
- offHeadersReceived(callback?: (event: UploadTaskHeadersReceivedEvent) => void): void;
10454
+ export declare interface UploadTask extends Promise<UploadFileResult> {
10455
+ /**
10456
+ * 中断当前上传任务。
10457
+ *
10458
+ * 中断成功后上传 Promise reject;任务已经结束时调用无副作用。
10459
+ */
10460
+ abort: () => void;
10461
+ /**
10462
+ * 监听上传进度变化。
10463
+ *
10464
+ * 同一个任务可以注册多个回调,每次收到宿主进度事件时依次调用。
10465
+ */
10466
+ onProgressUpdate: (callback: (event: UploadTaskProgressUpdateEvent) => void) => void;
10467
+ /**
10468
+ * 取消监听上传进度变化。
10469
+ *
10470
+ * 传入 callback 时只移除该回调;不传 callback 时移除当前任务的全部进度监听。
10471
+ */
10472
+ offProgressUpdate: (callback?: (event: UploadTaskProgressUpdateEvent) => void) => void;
10473
+ /**
10474
+ * 监听 HTTP Response Header 事件。
10475
+ *
10476
+ * 同一个任务可以注册多个回调,宿主收到上传响应头时依次调用。
10477
+ */
10478
+ onHeadersReceived: (callback: (event: UploadTaskHeadersReceivedEvent) => void) => void;
10479
+ /**
10480
+ * 取消监听 HTTP Response Header 事件。
10481
+ *
10482
+ * 传入 callback 时只移除该回调;不传 callback 时移除当前任务的全部 Header 监听。
10483
+ */
10484
+ offHeadersReceived: (callback?: (event: UploadTaskHeadersReceivedEvent) => void) => void;
9639
10485
  }
9640
10486
 
9641
10487
  /**
@@ -9726,7 +10572,16 @@ export declare type UserScreenRecordState = 'start' | 'stop';
9726
10572
  * ```json
9727
10573
  * {}
9728
10574
  * ```
9729
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认设备是否支持震动
10575
+ * @errorExample
10576
+ * ```json
10577
+ * {
10578
+ * "errNo": 103,
10579
+ * "errMsg": "feature not support"
10580
+ * }
10581
+ * ```
10582
+ * @errorCode errNo | 103 | feature not support | Android | Android 设备无振动器或不支持震动能力 | 提示用户当前设备不支持震动,避免依赖该能力
10583
+ * @errorCode common | 102 | Android
10584
+ * @platformNote iOS | 长震动恒返回成功,无失败错误码
9730
10585
  *
9731
10586
  * @public
9732
10587
  */
@@ -9757,7 +10612,16 @@ export declare const vibrateLong: (params?: {} | undefined) => Promise<object>;
9757
10612
  * ```json
9758
10613
  * {}
9759
10614
  * ```
9760
- * @errorCode none | - | - | Android,iOS | 当前实现未稳定返回顶层 errNo/errMsg | 根据异常信息确认设备是否支持震动
10615
+ * @errorExample
10616
+ * ```json
10617
+ * {
10618
+ * "errNo": 103,
10619
+ * "errMsg": "feature not support"
10620
+ * }
10621
+ * ```
10622
+ * @errorCode errNo | 103 | feature not support | Android,iOS | Android 设备无振动器或不支持震动能力,或 iOS 系统版本低于 13.0 | 提示用户当前设备或系统不支持震动,避免依赖该能力
10623
+ * @errorCode common | 102 | Android
10624
+ * @platformNote Android | 设备不支持震动或触发震动失败时返回 102 internal error;iOS 无对应失败错误码
9761
10625
  *
9762
10626
  * @public
9763
10627
  */
@@ -9930,7 +10794,7 @@ export declare interface WriteBLECharacteristicValueParams {
9930
10794
  *
9931
10795
  * @remarks
9932
10796
  * - 如果文件不存在会自动创建;如果文件已存在则会覆盖原有内容。
9933
- * - 父目录不存在时写入会失败,需先通过 {@link FileSystemManager.mkdir} 创建目录。
10797
+ * - 父目录不存在时会自动创建。
9934
10798
  *
9935
10799
  * @public
9936
10800
  */