utsApiJson.json 378.6 KB
Newer Older
D
DCloud_LXH 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881
{
	"getApp": {
		"name": "## getApp() @getapp",
		"description": "\r\n`getApp()` 函数用于获取当前应用实例,可通过应用实例调用 App.uvue methods 中定义的方法。",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| any | \n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[getApp](https://uniapp.dcloud.net.cn/tutorial/page.html#getapp)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.global.get-app)\n"
	},
	"get-app": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-app/get-app.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex:1;padding-bottom: 20px;\">\r\n  <!-- #endif -->\r\n    <view>\r\n      <page-head title=\"getApp\"></page-head>\r\n      <view class=\"uni-padding-wrap\">\r\n        <button @click=\"getGlobalData\">get globalData</button>\r\n        <template v-if=\"originGlobalData.str.length\">\r\n          <text class=\"uni-common-mt bold\">初始的 globalData:</text>\r\n          <text class=\"uni-common-mt\">globalData string: {{ originGlobalData.str }}</text>\r\n          <text class=\"uni-common-mt\">globalData number: {{ originGlobalData.num }}</text>\r\n          <text class=\"uni-common-mt\">globalData boolean: {{ originGlobalData.bool }}</text>\r\n          <text class=\"uni-common-mt\">globalData object: {{ originGlobalData.obj }}</text>\r\n          <text class=\"uni-common-mt\">globalData null: {{ originGlobalData.null }}</text>\r\n          <text class=\"uni-common-mt\">globalData array: {{ originGlobalData.arr }}</text>\r\n          <text class=\"uni-common-mt\">globalData Set: {{ originGlobalData.set }}</text>\r\n          <text class=\"uni-common-mt\">globalData Map: {{ originGlobalData.map }}</text>\r\n          <text class=\"uni-common-mt\">globalData func 返回值: {{ originGlobalDataFuncRes }}</text>\r\n        </template>\r\n        <button @click=\"setGlobalData\" class=\"uni-common-mt\">set globalData</button>\r\n        <template v-if=\"newGlobalData.bool\">\r\n          <text class=\"uni-common-mt bold\">更新后的 globalData:</text>\r\n          <text class=\"uni-common-mt\">globalData string: {{ newGlobalData.str }}</text>\r\n          <text class=\"uni-common-mt\">globalData number: {{ newGlobalData.num }}</text>\r\n          <text class=\"uni-common-mt\">globalData boolean: {{ newGlobalData.bool }}</text>\r\n          <text class=\"uni-common-mt\">globalData object: {{ newGlobalData.obj }}</text>\r\n          <text class=\"uni-common-mt\">globalData null: {{ newGlobalData.null }}</text>\r\n          <text class=\"uni-common-mt\">globalData array: {{ newGlobalData.arr }}</text>\r\n          <text class=\"uni-common-mt\">globalData Set: {{ newGlobalData.set }}</text>\r\n          <text class=\"uni-common-mt\">globalData Map: {{ newGlobalData.map }}</text>\r\n          <text class=\"uni-common-mt\">globalData func 返回值: {{ newGlobalDataFuncRes }}</text>\r\n        </template>\n        <view class=\"uni-common-mt hr\"></view>\r\n        <text class=\"uni-common-mt\">点击按钮调用 App.uvue methods</text>\r\n        <text class=\"margin-top:6px;\">increasetLifeCycleNum 方法</text>\r\n        <button class=\"uni-common-mt\" @click=\"_increasetLifeCycleNum\">\r\n          increase lifeCycleNum\r\n        </button>\r\n        <text class=\"uni-common-mt\">lifeCycleNum: {{ lifeCycleNum }}</text>\r\n      </view>\r\n    </view>\r\n  <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n\r\n<script lang=\"uts\">\r\n  type MyGlobalData = {\r\n    str : string,\r\n    num : number,\r\n    bool : boolean,\r\n    obj : UTSJSONObject,\r\n    null : string | null,\r\n    arr : number[],\r\n    set : Set<string>,\r\n    map : Map<string, any>,\r\n    func : () => string\r\n  }\r\n  import { state, setLifeCycleNum } from '@/store/index.uts'\r\n\r\n  export default {\r\n    data() {\r\n      return {\r\n        originGlobalData: {\r\n          str: '',\r\n          num: 0,\r\n          bool: false,\r\n          obj: {\r\n            str: '',\r\n            num: 0,\r\n            bool: false\r\n          } as UTSJSONObject,\r\n          null: null,\r\n          arr: [] as number[],\r\n          set: new Set<string>(),\r\n          map: new Map<string, any>(),\r\n          func: () : string => ''\r\n        } as MyGlobalData,\r\n        originGlobalDataFuncRes: '',\r\n        newGlobalData: {\r\n          str: '',\r\n          num: 0,\r\n          bool: false,\r\n          obj: {\r\n            str: '',\r\n            num: 0,\r\n            bool: false\r\n          } as UTSJSONObject,\r\n          null: null,\r\n          arr: [] as number[],\r\n          set: new Set<string>(),\r\n          map: new Map<string, any>(),\r\n          func: () : string => ''\r\n        } as MyGlobalData,\r\n        newGlobalDataFuncRes: '',\r\n        lifeCycleNum: 0,\r\n      }\r\n    },\r\n    onReady() {\r\n      this.lifeCycleNum = state.lifeCycleNum\r\n    },\r\n    methods: {\r\n      getGlobalData() {\r\n        const app = getApp()\r\n        this.originGlobalData.str = app.globalData.str\r\n        this.originGlobalData.num = app.globalData.num\r\n        this.originGlobalData.bool = app.globalData.bool\r\n        this.originGlobalData.obj = app.globalData.obj\r\n        this.originGlobalData.null = app.globalData.null\r\n        this.originGlobalData.arr = app.globalData.arr\r\n        this.originGlobalData.set = app.globalData.set\r\n        this.originGlobalData.map = app.globalData.map\r\n        this.originGlobalData.func = app.globalData.func\r\n        this.originGlobalDataFuncRes = this.originGlobalData.func()\r\n      },\r\n      setGlobalData() {\r\n        const app = getApp()\r\n\r\n        app.globalData.str = 'new globalData str'\r\n        app.globalData.num = 100\r\n        app.globalData.bool = true\r\n        app.globalData.obj = {\r\n          str: 'new globalData obj str',\r\n          num: 200,\r\n          bool: true\r\n        }\r\n        app.globalData.null = 'not null'\r\n        app.globalData.arr = [1, 2, 3]\r\n        app.globalData.set = new Set(['a', 'b', 'c'])\r\n        app.globalData.map = new Map([\r\n          ['a', 1],\r\n          ['b', 2],\r\n          ['c', 3]\r\n        ])\r\n        app.globalData.func = () : string => {\r\n          return 'new globalData func'\r\n        }\r\n\r\n        this.newGlobalData.str = app.globalData.str\r\n        this.newGlobalData.num = app.globalData.num\r\n        this.newGlobalData.bool = app.globalData.bool\r\n        this.newGlobalData.obj = app.globalData.obj\r\n        this.newGlobalData.null = app.globalData.null\r\n        this.newGlobalData.arr = app.globalData.arr\r\n        this.newGlobalData.set = app.globalData.set\r\n        this.newGlobalData.map = app.globalData.map\r\n        this.newGlobalData.func = app.globalData.func\r\n        this.newGlobalDataFuncRes = this.newGlobalData.func()\r\n      },\r\n      _increasetLifeCycleNum: function () {\r\n        const app = getApp()\r\n        app.increasetLifeCycleNum()\r\n        this.lifeCycleNum = state.lifeCycleNum\r\n      },\r\n      // 自动化测试\r\n      setLifeCycleNum(num : number) {\r\n        setLifeCycleNum(num)\r\n      }\r\n    },\r\n  }\r\n</script>\r\n\r\n<style>\r\n  .bold {\r\n    font-weight: bold;\r\n  }\n  .hr{border-bottom: 1px solid #ccc;}\r\n</style>\n\n```"
	},
	"getCurrentPages": {
		"name": "## getCurrentPages() @getcurrentpages",
		"description": "",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| Array\\<[BasePage](#basepage-values)\\> | \n\n#### BasePage 的属性值 @basepage-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| route | string | 是 | - | - |\n| options | Map\\<string, string \\\\| null> | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.global.get-current-pages)\n"
	},
	"get-current-pages": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-current-pages/get-current-pages.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head title=\"getCurrentPages\"></page-head>\r\n    <view class=\"uni-padding-wrap\">\r\n      <button @click=\"_getCurrentPages\">getCurrentPages</button>\r\n      <view v-if=\"pages.length\" style=\"padding: 15px 0px\">\r\n        <text>当前页面栈中 {{ pages.length }} 个页面,列表如下:</text>\r\n        <template v-for=\"(page, index) in pages\" :key=\"page.route\">\r\n          <text style=\"margin-top: 5px\"\r\n            >index: {{ index }}, route: {{ page.route }}</text\r\n          >\r\n        </template>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n\r\n<script lang=\"uts\">\r\nclass Page {\r\n  constructor(public route : string) {\r\n  }\r\n}\r\n\r\nexport default {\r\n  data() {\r\n    return {\r\n      checked: false,\r\n      pages: [] as Page[],\r\n    }\r\n  },\r\n  methods: {\r\n    _getCurrentPages: function () {\r\n      this.pages.length = 0\r\n      const pages = getCurrentPages()\r\n      this.pages.push(new Page(pages[0].route))\r\n      if (this.pages[0].route.includes('/tabBar/')) {\r\n        this.checked = true\r\n      }\r\n      for (let i = 1; i < pages.length; i++) {\r\n        this.pages.push(new Page(pages[i].route))\r\n        if (pages[i].route.includes('/tabBar/')) {\r\n          this.checked = false\r\n        }\r\n      }\r\n    },\r\n  },\r\n}\r\n</script>\r\n\n```"
	},
	"$on": {
		"name": "## uni.$on(eventName, callback) @$on",
		"description": "\r\n监听自定义事件。事件可以由 uni.$emit 触发。回调函数会接收 uni.$emit 传递的参数。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| eventName | string | 是 | - | - |\n| callback | () => void | 是 | - | - |",
		"returnValue": "",
		"compatibility": "",
		"tutorial": "\n### 参见\n[$on](http://uniapp.dcloud.io/api/window/communication?id=on)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.event-bus.$on)\n"
	},
	"$off": {
		"name": "## uni.$off(eventName, callback) @$off",
		"description": "\r\n移除自定义事件监听器。如果没有指定事件名,则移除所有事件监听器。如果提供事件名,则移除该事件的所有监听器。如果提供了事件名和回调,则只移除这个回调的监听器。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| eventName | string | 是 | - | - |\n| callback | () => void | 是 | - | - |",
		"returnValue": "",
		"compatibility": "",
		"tutorial": "\n### 参见\n[$off](http://uniapp.dcloud.io/api/window/communication?id=off)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.event-bus.$once)\n"
	},
	"$once": {
		"name": "## uni.$once(eventName, callback) @$once",
		"description": "\r\n监听一个自定义事件。事件只触发一次,在第一次触发之后移除事件监听器。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| eventName | string | 是 | - | - |\n| callback | () => void | 是 | - | - |",
		"returnValue": "",
		"compatibility": "",
		"tutorial": "\n### 参见\n[$once](http://uniapp.dcloud.io/api/window/communication?id=once)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.event-bus.$off)\n"
	},
	"$emit": {
		"name": "## uni.$emit(eventName, args?) @$emit",
		"description": "\r\n触发自定义事件,附加的参数会传递给事件监听器。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| eventName | string | 是 | - | - |\n| args | any | 否 | - | - |",
		"returnValue": "",
		"compatibility": "",
		"tutorial": "\n### 参见\n[$emit](http://uniapp.dcloud.io/api/window/communication?id=emit)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.event-bus.$emit)\n"
	},
	"event-bus": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/event-bus/event-bus.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n    <!-- #endif -->\r\n    <view>\r\n      <button @click=\"on\">开始监听</button>\r\n      <button @click=\"once\">监听一次</button>\r\n      <button @click=\"off\">取消监听</button>\r\n      <button @click=\"emit\">触发监听</button>\r\n      <button @click=\"clear\">清空消息</button>\r\n      <view class=\"box\">\r\n        <view>收到的消息:</view>\r\n        <view>\r\n          <view v-for=\"(item, index) in log\" :key=\"index\">{{ item }}</view>\r\n        </view>\r\n      </view>\r\n    </view>\r\n    <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n\r\n<script lang=\"uts\">\r\nexport default {\r\n  data() {\r\n    return {\r\n      log: [] as string[],\r\n    }\r\n  },\r\n  methods: {\r\n    fn(res: string) {\r\n      this.log.push(res)\r\n    },\r\n    on() {\r\n      uni.$on('test', this.fn)\r\n    },\r\n    once() {\r\n      uni.$once('test', this.fn)\r\n    },\r\n    off() {\r\n      uni.$off('test', this.fn)\r\n    },\r\n    emit() {\r\n      uni.$emit('test', 'msg:' + Date.now())\r\n    },\r\n    clear() {\r\n      this.log.length = 0\r\n    },\r\n  },\r\n}\r\n</script>\r\n\r\n<style>\r\n.box {\r\n  padding: 10px;\r\n}\r\n</style>\r\n\n```"
	},
	"addInterceptor": {
		"name": "## uni.addInterceptor(name, interceptor) @addinterceptor",
		"description": "\r\n添加拦截器",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| name | string | 是 | - | 需要拦截的 API 名称 |\n| interceptor | [Interceptor](#interceptor-values) | 是 | - | 拦截器 |\n#### Interceptor 的属性值 @interceptor-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (...args?: any) => any | 否 | - | 成功回调拦截 |\n| fail | (...args?: any) => any | 否 | - | 失败回调拦截 |\n| complete | (...args?: any) => any | 否 | - | 完成回调拦截 |\n\n#### Interceptor 的方法 @interceptor-values \n\n#### invoke(...args?) @invoke\n\r\n拦截前触发\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| ...args | any | 否 | - | - |\n##### 返回值 \n\n| 类型 |\n| :- |\n| any | \n\n\n\n#### returnValue(...args?) @returnvalue\n\r\n方法调用后触发,处理返回值\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| ...args | any | 否 | - | - |\n##### 返回值 \n\n| 类型 |\n| :- |\n| any | \n\n\n",
		"returnValue": "",
		"compatibility": "### addInterceptor 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | 3.97 | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.interceptor.addInterceptor)\n"
	},
	"removeInterceptor": {
		"name": "## uni.removeInterceptor(name, interceptor?) @removeinterceptor",
		"description": "\r\n删除拦截器",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| name | string | 是 | - | 需要删除拦截器的 API 名称 |\n| interceptor | [Interceptor](#interceptor-values) | 否 | - | 拦截器 |\n#### Interceptor 的属性值 @interceptor-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (...args?: any) => any | 否 | - | 成功回调拦截 |\n| fail | (...args?: any) => any | 否 | - | 失败回调拦截 |\n| complete | (...args?: any) => any | 否 | - | 完成回调拦截 |\n\n#### Interceptor 的方法 @interceptor-values \n\n#### invoke(...args?) @invoke\n\r\n拦截前触发\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| ...args | any | 否 | - | - |\n##### 返回值 \n\n| 类型 |\n| :- |\n| any | \n\n\n\n#### returnValue(...args?) @returnvalue\n\r\n方法调用后触发,处理返回值\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| ...args | any | 否 | - | - |\n##### 返回值 \n\n| 类型 |\n| :- |\n| any | \n\n\n",
		"returnValue": "",
		"compatibility": "### removeInterceptor 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | 3.97 | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.interceptor.removeInterceptor)\n"
	},
	"interceptor": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/interceptor/interceptor.uvue) \n ```html\n<template>\r\n  <view>\r\n    <button @click=\"addInterceptor\">添加路由拦截器</button>\r\n    <button @click=\"removeInterceptor\">移除路由拦截器</button>\r\n    <text>点击下方按钮{{msg}}</text>\r\n    <button @click=\"navigateTo\">跳转到测试页面</button>\r\n  </view>\r\n</template>\r\n\r\n<script>\r\n  const interceptor = {\r\n    invoke: function (options : NavigateToOptions) {\r\n      console.log('拦截 navigateTo 接口传入参数为:', options)\r\n      const url = './page2'\r\n      uni.showToast({\r\n        title: `重定向到页面:${url}`\r\n      })\r\n      options.url = url\r\n    },\r\n    success: function (res : NavigateBackSuccess) {\r\n      console.log('拦截 navigateTo 接口 success 返回参数为:', res)\r\n    },\r\n    fail: function (err : NavigateToFail) {\r\n      console.log('拦截 navigateTo 接口 fail 返回参数为:', err)\r\n    },\r\n    complete: function (res : NavigateToComplete) {\r\n      console.log('拦截 navigateTo 接口 complete 返回参数为:', res)\r\n    }\r\n  } as Interceptor\r\n  export default {\r\n    data() {\r\n      return {\r\n        msg: \"会跳转到测试页面1\"\r\n      }\r\n    },\r\n    beforeUnmount() {\r\n      // 移除 navigateTo 所有拦截器\r\n      uni.removeInterceptor('navigateTo')\r\n    },\r\n    methods: {\r\n      addInterceptor() {\r\n        uni.addInterceptor('navigateTo', interceptor)\r\n        uni.showToast({\r\n          title: '页面跳转已拦截'\r\n        })\r\n        this.msg = \",路由被劫持到测试页面2\"\r\n      },\r\n      removeInterceptor() {\r\n        uni.removeInterceptor('navigateTo', interceptor)\r\n        uni.showToast({\r\n          title: '拦截器已移除'\r\n        })\r\n        this.msg = \"会跳转到测试页面1\"\r\n      },\r\n      navigateTo() {\r\n        uni.navigateTo({\r\n          url: './page1',\r\n          success(res) {\r\n            console.log('res:', res)\r\n          },\r\n          fail(err) {\r\n            console.error('err:', err)\r\n          },\r\n          complete(res) {\r\n            console.log('res:', res)\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\n\n```"
	},
	"getLaunchOptionsSync": {
		"name": "## uni.getLaunchOptionsSync() @getlaunchoptionssync",
		"description": "\r\n获取本次启动时的参数。返回值与App.onLaunch的回调参数一致\r\n",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [OnLaunchOptions](#onlaunchoptions-values) | \n\n#### OnLaunchOptions 的属性值 @onlaunchoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| path | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[getLaunchOptionsSync](http://uniapp.dcloud.io/api/plugins/getLaunchOptionsSync)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.get-launch-options-sync)\n"
	},
	"get-launch-options-sync": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-launch-options-sync/get-launch-options-sync.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head title=\"getLaunchOptionsSync\"></page-head>\r\n    <view class=\"uni-padding-wrap\">\r\n      <button @click=\"getLaunchOptionsSync\">getLaunchOptionsSync</button>\r\n      <view v-if=\"launchOptionsPath.length > 0\" class=\"uni-common-mt\">\r\n        <text>应用启动路径:</text>\r\n        <text style=\"margin-top: 5px\">{{ launchOptionsPath }}</text>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n\r\n<script lang=\"uts\">\r\nexport default {\r\n  data() {\r\n    return {\r\n      checked: false,\r\n      homePagePath: '/pages/tabBar/component',\r\n      launchOptionsPath: '',\r\n    }\r\n  },\r\n  methods: {\r\n    getLaunchOptionsSync() {\r\n      const launchOptions = uni.getLaunchOptionsSync()\r\n      this.launchOptionsPath = launchOptions.path\r\n      if (launchOptions.path == this.homePagePath) {\r\n        this.checked = true\r\n      }\r\n    },\r\n  },\r\n}\r\n</script>\r\n\n```"
	},
	"exit": {
		"name": "## uni.exit(options?) @exit",
		"description": "\r\n退出当前应用",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ExitOptions](#exitoptions-values) | 否 | - | - |\n#### ExitOptions 的属性值 @exitoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (res: [ExitSuccess](#exitsuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (res: [IExitError](#iexiterror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ExitSuccess 的属性值 @exitsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### IExitError 的属性值 @iexiterror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 12001 \\\\| 12002 | 是 | - | 错误码<br>- 12001: 系统不支持<br>- 12002: 未知错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### exit 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.8.15 | 3.9.0 | x | x | x |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.exit)\n",
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/exit/exit.uvue) \n ```html\n<template>\r\n\t<view>\r\n\t\t<button @tap=\"exitAppClick\">退出应用</button>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\n\texport default {\r\n\t\tmethods: {\r\n\t\t\texitAppClick:function(){\r\n\t\t\t\tuni.exit({\r\n\t\t\t\t\tsuccess:function(res){\r\n\t\t\t\t\t\tconsole.log(res)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\n```"
	},
	"env": {
		"name": "## env",
		"description": "",
		"param": "### env 的属性值 @env-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| USER_DATA_PATH | string | 是 | - | 应用专属存储空间的外置存储空间根目录下的files目录 |\n| CACHE_PATH | string | 是 | - | 应用专属存储空间的外置存储空间根目录下的cache目录 |\n| SANDBOX_PATH | string | 是 | - | 应用专属存储空间的外置存储空间根目录(caches/files) |\n\n#### env 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| USER_DATA_PATH | 5.0 | x | 3.99 | x | x | x |\n| CACHE_PATH | 5.0 | x | 3.99 | x | x | x |\n| SANDBOX_PATH | 5.0 | x | 3.99 | x | x | x |\n",
		"compatibility": "#### env 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| USER_DATA_PATH | 5.0 | x | 3.99 | x | x | x |\n| CACHE_PATH | 5.0 | x | 3.99 | x | x | x |\n| SANDBOX_PATH | 5.0 | x | 3.99 | x | x | x |\n",
		"returnValue": "",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.base.env)\n"
	},
	"navigateTo": {
		"name": "## uni.navigateTo(options) @navigateto",
		"description": "\r\n保留当前页面,跳转到应用内的某个页面\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [NavigateToOptions](#navigatetooptions-values) | 是 | - | - |\n#### NavigateToOptions 的属性值 @navigatetooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| url | string (string.PageURIString) | 是 | - | 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [NavigateToError](#navigatetoerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### NavigateToError 的属性值 @navigatetoerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | 路由错误码 - 4: 框架内部异常 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### NavigateToOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| url | 5.0 | √ | √ | 10.0 | √ | x |\n| success | 5.0 | √ | √ | 10.0 | √ | x |\n| fail | 5.0 | √ | √ | 10.0 | √ | x |\n| complete | 5.0 | √ | √ | 10.0 | √ | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### navigateTo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | √ | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[navigateTo](http://uniapp.dcloud.io/api/router?id=navigateto)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.navigator.navigateTo)\n"
	},
	"redirectTo": {
		"name": "## uni.redirectTo(options) @redirectto",
		"description": "\r\n关闭当前页面,跳转到应用内的某个页面\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [RedirectToOptions](#redirecttooptions-values) | 是 | - | - |\n#### RedirectToOptions 的属性值 @redirecttooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| url | string (string.PageURIString) | 是 | - | 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [RedirectToError](#redirecttoerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### RedirectToError 的属性值 @redirecttoerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### RedirectToOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| url | 5.0 | √ | √ | 10.0 | √ | x |\n| success | 5.0 | √ | √ | 10.0 | √ | x |\n| fail | 5.0 | √ | √ | 10.0 | √ | x |\n| complete | 5.0 | √ | √ | 10.0 | √ | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### redirectTo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | √ | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[redirectTo](http://uniapp.dcloud.io/api/router?id=redirectto)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.navigator.reLaunch)\n"
	},
	"reLaunch": {
		"name": "## uni.reLaunch(options) @relaunch",
		"description": "\r\n关闭所有页面,打开到应用内的某个页面\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ReLaunchOptions](#relaunchoptions-values) | 是 | - | - |\n#### ReLaunchOptions 的属性值 @relaunchoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| url | string (string.PageURIString) | 是 | - | 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [ReLaunchError](#relauncherror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ReLaunchError 的属性值 @relauncherror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### ReLaunchOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| url | 5.0 | √ | √ | 10.0 | √ | x |\n| success | 5.0 | √ | √ | 10.0 | √ | x |\n| fail | 5.0 | √ | √ | 10.0 | √ | x |\n| complete | 5.0 | √ | √ | 10.0 | √ | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### reLaunch 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | √ | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[reLaunch](http://uniapp.dcloud.io/api/router?id=relaunch)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.navigator.navigateBack)\n"
	},
	"switchTab": {
		"name": "## uni.switchTab(options) @switchtab",
		"description": "\r\n跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SwitchTabOptions](#switchtaboptions-values) | 是 | - | - |\n#### SwitchTabOptions 的属性值 @switchtaboptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| url | string (string.PageURIString) | 是 | - | 需要跳转的 tabBar 页面的路径,路径后不能带参数 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SwitchTabError](#switchtaberror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SwitchTabError 的属性值 @switchtaberror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### SwitchTabOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| url | 5.0 | √ | √ | 10.0 | √ | x |\n| success | 5.0 | √ | √ | 10.0 | √ | x |\n| fail | 5.0 | √ | √ | 10.0 | √ | x |\n| complete | 5.0 | √ | √ | 10.0 | √ | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### switchTab 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | √ | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[switchTab](http://uniapp.dcloud.io/api/router?id=switchtab)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.navigator.redirectTo)\n"
	},
	"navigateBack": {
		"name": "## uni.navigateBack(options?) @navigateback",
		"description": "\r\n关闭当前页面,返回上一页面或多级页面\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [NavigateBackOptions](#navigatebackoptions-values) | 否 | - | - |\n#### NavigateBackOptions 的属性值 @navigatebackoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| delta | number | 否 | - | 返回的页面数,如果 delta 大于现有页面数,则返回到首页 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [NavigateBackError](#navigatebackerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### NavigateBackError 的属性值 @navigatebackerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### NavigateBackOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| delta | 5.0 | √ | √ | 10.0 | √ | x |\n| success | 5.0 | √ | √ | 10.0 | √ | x |\n| fail | 5.0 | √ | √ | 10.0 | √ | x |\n| complete | 5.0 | √ | √ | 10.0 | √ | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### navigateBack 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | √ | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[navigateBack](http://uniapp.dcloud.io/api/router?id=navigateback)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.navigator.switchTab)\n"
	},
	"navigator": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/navigator/navigator.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n    <!-- #endif -->\r\n    <view>\r\n      <page-head title=\"navigate\"></page-head>\r\n      <view class=\"uni-padding-wrap uni-common-mt uni-common-mb\">\r\n        <view class=\"direction-row\">\r\n          <text class=\"label\">onLoad触发时间戳:</text>\r\n          <text>{{ onLoadTime }}</text>\r\n        </view>\r\n        <view class=\"direction-row\">\r\n          <text class=\"label\">onShow触发时间戳:</text>\r\n          <text>{{ onShowTime }}</text>\r\n        </view>\r\n        <view class=\"direction-row\">\r\n          <text class=\"label\">onReady触发时间戳:</text>\r\n          <text>{{ onReadyTime }}</text>\r\n        </view>\r\n        <view class=\"direction-row\">\r\n          <text class=\"label\">onHide触发时间戳:</text>\r\n          <text>{{ onHideTime }}</text>\r\n        </view>\r\n        <view class=\"direction-row\">\r\n          <text class=\"label\">onBackPress触发时间戳:</text>\r\n          <text>见控制台</text>\r\n        </view>\r\n        <view class=\"direction-row\">\r\n          <text class=\"label\">onUnload触发时间戳:</text>\r\n          <text>见控制台</text>\r\n        </view>\r\n        <view class=\"uni-btn-v\">\r\n          <button @tap=\"navigateTo\" class=\"uni-btn\">\r\n            跳转新页面,并传递数据\r\n          </button>\r\n          <button @tap=\"navigateBack\" class=\"uni-btn\">返回上一页</button>\r\n          <button @tap=\"redirectTo\" class=\"uni-btn\">在当前页面打开</button>\r\n          <button @tap=\"switchTab\" class=\"uni-btn\">切换到模板选项卡</button>\r\n          <button @tap=\"reLaunch\" class=\"uni-btn\">\r\n            关闭所有页面,打开首页\r\n          </button>\r\n          <button @tap=\"navigateToErrorPage\" class=\"uni-btn\">\r\n            打开不存在的页面\r\n          </button>\r\n        </view>\r\n      </view>\r\n    </view>\r\n    <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n\r\n<script lang=\"uts\">\r\nimport { state, setLifeCycleNum } from '@/store/index.uts'\r\n\r\nexport default {\r\n  data() {\r\n    return {\r\n      onLoadTime: 0,\r\n      onShowTime: 0,\r\n      onReadyTime: 0,\r\n      onHideTime: 0,\r\n    }\r\n  },\r\n  onLoad() {\r\n    this.onLoadTime = Date.now()\r\n    console.log('onLoad', this.onLoadTime)\r\n  },\r\n  onShow() {\r\n    this.onShowTime = Date.now()\r\n    console.log('onShow', this.onShowTime)\r\n  },\r\n  onReady() {\r\n    this.onReadyTime = Date.now()\r\n    console.log('onReady', this.onReadyTime)\r\n  },\r\n  onHide() {\r\n    this.onHideTime = Date.now()\r\n    console.log('onHide', this.onHideTime)\r\n  },\r\n  onBackPress(options: OnBackPressOptions): boolean | null {\r\n    console.log('onBackPress', Date.now())\r\n    console.log('onBackPress from', options.from)\r\n    return null\r\n  },\r\n  onUnload() {\r\n    console.log('onUnload', Date.now())\r\n  },\r\n  methods: {\r\n    reLaunch() {\r\n      uni.reLaunch({\r\n        url: '/pages/tabBar/component',\r\n        success(result) {\r\n          console.log('reLaunch success', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail(error) {\r\n          console.log('reLaunch fail', error.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete(result) {\r\n          console.log('reLaunch complete', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    navigateTo() {\r\n      uni.navigateTo({\r\n        url: '/pages/API/navigator/new-page/new-page-1?data=Hello',\r\n        success(result) {\r\n          console.log('navigateTo success', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail(error) {\r\n          console.log('navigateTo fail', error.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete(result) {\r\n          console.log('navigateTo complete', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    navigateToErrorPage() {\r\n      uni.navigateTo({\r\n        url: '/pages/error-page/error-page',\r\n        success(result) {\r\n          console.log('navigateTo success', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        fail(error) {\r\n          console.log('navigateTo fail', error.errMsg)\r\n          uni.showToast({\r\n            title: error.errMsg,\r\n            icon: 'none',\r\n          })\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        complete(result) {\r\n          console.log('navigateTo complete', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    navigateToDebounce() {\r\n      uni.navigateTo({\r\n        url: '/pages/API/navigator/new-page/new-page-1?data=debounce',\r\n        success(result) {\r\n          console.log('navigateTo success', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail(error) {\r\n          console.log('navigateTo fail', error.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete(result) {\r\n          console.log('navigateTo complete', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n      uni.navigateTo({\r\n        url: '/pages/API/navigator/new-page/new-page-1?data=debounce',\r\n        success(result) {\r\n          console.log('navigateTo success', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        fail(error) {\r\n          console.log('navigateTo fail', error.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        complete(result) {\r\n          console.log('navigateTo complete', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    // 自动化测试\r\n    navigateToRelativePath1() {\r\n      uni.navigateTo({\r\n        url: 'new-page/new-page-1?data=new-page/new-page-1',\r\n        success() {\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail() {\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete() {\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    // 自动化测试\r\n    navigateToRelativePath2() {\r\n      uni.navigateTo({\r\n        url: './new-page/new-page-1?data=./new-page/new-page-1',\r\n        success() {\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail() {\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete() {\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    // 自动化测试\r\n    navigateToRelativePath3() {\r\n      uni.navigateTo({\r\n        url: '../navigator/new-page/new-page-1?data=../navigator/new-page/new-page-1',\r\n        success() {\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail() {\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete() {\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    navigateBack() {\r\n      uni.navigateBack({\r\n        success(result) {\r\n          console.log('navigateBack success', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail(error) {\r\n          console.log('navigateBack fail', error.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete(result) {\r\n          console.log('navigateBack complete', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    navigateBackWithDelta1() {\r\n      uni.navigateTo({\r\n        url: '/pages/API/navigator/new-page/new-page-1',\r\n        success() {\r\n          uni.navigateBack({\r\n            delta: 1,\r\n            success(result) {\r\n              console.log('navigateBack success', result.errMsg)\r\n              // 自动化测试\r\n              setLifeCycleNum(state.lifeCycleNum + 1)\r\n            },\r\n            fail(error) {\r\n              console.log('navigateBack fail', error.errMsg)\r\n              // 自动化测试\r\n              setLifeCycleNum(state.lifeCycleNum - 1)\r\n            },\r\n            complete(result) {\r\n              console.log('navigateBack complete', result.errMsg)\r\n              // 自动化测试\r\n              setLifeCycleNum(state.lifeCycleNum + 1)\r\n            },\r\n          })\r\n        },\r\n      })\r\n    },\r\n    navigateBackWithDelta100() {\r\n      uni.navigateTo({\r\n        url: '/pages/API/navigator/new-page/new-page-1',\r\n        success() {\r\n          uni.navigateBack({\r\n            delta: 100,\r\n            success(result) {\r\n              console.log('navigateBack success', result.errMsg)\r\n              // 自动化测试\r\n              setLifeCycleNum(state.lifeCycleNum + 1)\r\n            },\r\n            fail(error) {\r\n              console.log('navigateBack fail', error.errMsg)\r\n              // 自动化测试\r\n              setLifeCycleNum(state.lifeCycleNum - 1)\r\n            },\r\n            complete(result) {\r\n              console.log('navigateBack complete', result.errMsg)\r\n              // 自动化测试\r\n              setLifeCycleNum(state.lifeCycleNum + 1)\r\n            },\r\n          })\r\n        },\r\n      })\r\n    },\r\n    redirectTo() {\r\n      uni.redirectTo({\r\n        url: '/pages/API/navigator/new-page/new-page-1?data=Hello',\r\n        success(result) {\r\n          console.log('redirectTo success', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail(error) {\r\n          console.log('redirectTo fail', error.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete(result) {\r\n          console.log('redirectTo complete', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    switchTab() {\r\n      uni.switchTab({\r\n        url: '/pages/tabBar/template',\r\n        success(result) {\r\n          console.log('switchTab success', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail(error) {\r\n          console.log('switchTab fail', error.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete(result) {\r\n          console.log('switchTab complete', result.errMsg)\r\n          // 自动化测试\r\n          setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n      })\r\n    },\r\n    // 自动化测试\r\n    getLifeCycleNum(): number {\r\n      return state.lifeCycleNum\r\n    },\r\n    // 自动化测试\r\n    setLifeCycleNum(num: number) {\r\n      setLifeCycleNum(num)\r\n    },\r\n  },\r\n}\r\n</script>\r\n\r\n<style>\r\n.direction-row {\r\n  flex-direction: row;\r\n}\r\n.label {\r\n  width: 190px;\r\n}\r\n</style>\r\n\n```"
	},
	"setNavigationBarColor": {
		"name": "## uni.setNavigationBarColor(options) @setnavigationbarcolor",
		"description": "\r\n设置导航条、状态栏颜色\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SetNavigationBarColorOptions](#setnavigationbarcoloroptions-values) | 是 | - | - |\n#### SetNavigationBarColorOptions 的属性值 @setnavigationbarcoloroptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| frontColor | \"#ffffff\" \\\\| \"#000000\" | 是 | - | 前景颜色值,包括按钮、标题、状态栏的颜色,仅支持 #ffffff 和 #000000 |\n| backgroundColor | string | 是 | - | 背景颜色值,有效值为十六进制颜色 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (error: [SetNavigationBarColorError](#setnavigationbarcolorerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetNavigationBarColorError 的属性值 @setnavigationbarcolorerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### SetNavigationBarColorOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| frontColor | 5.0 | √ | √ | 10.0 | √ | x |\n| backgroundColor | 5.0 | √ | √ | 10.0 | √ | x |\n| success | 5.0 | √ | √ | 10.0 | √ | x |\n| fail | 5.0 | √ | √ | 10.0 | √ | x |\n| complete | 5.0 | √ | √ | 10.0 | √ | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### setNavigationBarColor 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | √ | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[setNavigationBarColor](https://uniapp.dcloud.net.cn/uni-app-x/api/set-navigation-bar-color.html)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-navigation-bar-color)\n"
	},
	"set-navigation-bar-color": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/set-navigation-bar-color/set-navigation-bar-color.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head title=\"setNavigationBarColor\"></page-head>\r\n    <view class=\"uni-padding-wrap uni-common-mt\">\r\n      <button @tap=\"setNavigationBarColor1\" class=\"uni-btn\">\r\n        设置导航条背景绿色,标题白色\r\n      </button>\r\n      <button @tap=\"setNavigationBarColor2\" class=\"uni-btn\">\r\n        设置导航条背景红色,标题黑色\r\n      </button>\r\n      <button @tap=\"goCustomNavigation\" class=\"uni-btn\">\r\n        跳转自定义导航栏页面\r\n      </button>\r\n    </view>\r\n  </view>\r\n</template>\r\n\r\n<script lang=\"uts\">\r\nimport { state, setLifeCycleNum } from '@/store/index.uts'\r\n\r\nexport default {\r\n  methods: {\r\n    setNavigationBarColor1() {\r\n      uni.setNavigationBarColor({\r\n        frontColor: '#ffffff',\r\n        backgroundColor: '#00ff00',\r\n        success: () => {\r\n          console.log('setNavigationBarColor success')\r\n          this.setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail: () => {\r\n          console.log('setNavigationBarColor fail')\r\n          this.setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete: () => {\r\n          console.log('setNavigationBarColor complete')\r\n          this.setLifeCycleNum(state.lifeCycleNum + 1)\r\n        }\r\n      })\r\n    },\r\n    setNavigationBarColor2() {\r\n      uni.setNavigationBarColor({\r\n        frontColor: '#000000',\r\n        backgroundColor: '#ff0000',\r\n        success: () => {\r\n          console.log('setNavigationBarColor success')\r\n          this.setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail: () => {\r\n          console.log('setNavigationBarColor fail')\r\n          this.setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete: () => {\r\n          console.log('setNavigationBarColor complete')\r\n          this.setLifeCycleNum(state.lifeCycleNum + 1)\r\n        }\r\n      })\r\n    },\r\n    // 自动化测试\r\n    getLifeCycleNum(): number {\r\n      return state.lifeCycleNum\r\n    },\r\n    // 自动化测试\r\n    setLifeCycleNum(num: number) {\r\n      setLifeCycleNum(num)\r\n    },\r\n    goCustomNavigation(){\r\n      uni.navigateTo({\r\n        url: '/pages/API/set-navigation-bar-color/set-custom-navigation-bar-color'\r\n      })\r\n    }\r\n  },\r\n}\r\n</script>\r\n\n```"
	},
	"setNavigationBarTitle": {
		"name": "## uni.setNavigationBarTitle(options) @setnavigationbartitle",
		"description": "\r\n动态设置当前页面的标题\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SetNavigationBarTitleOptions](#setnavigationbartitleoptions-values) | 是 | - | - |\n#### SetNavigationBarTitleOptions 的属性值 @setnavigationbartitleoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| title | string | 是 | - | 页面标题 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (error: [SetNavigationBarTitleError](#setnavigationbartitleerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetNavigationBarTitleError 的属性值 @setnavigationbartitleerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### SetNavigationBarTitleOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| title | 5.0 | √ | 3.97 | 10.0 | √ | x |\n| success | 5.0 | √ | 3.97 | 10.0 | √ | x |\n| fail | 5.0 | √ | 3.97 | 10.0 | √ | x |\n| complete | 5.0 | √ | 3.97 | 10.0 | √ | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### setNavigationBarTitle 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | 3.97 | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[setNavigationBarTitle](https://uniapp.dcloud.net.cn/uni-app-x/api/set-navigation-bar-title.html)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-navigation-bar-title)\n"
	},
	"set-navigation-bar-title": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/set-navigation-bar-title/set-navigation-bar-title.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head title=\"setNavigationBarTitle\"></page-head>\r\n    <view class=\"uni-padding-wrap uni-common-mt\">\r\n      <button @tap=\"setNavigationBarNewTitle\" class=\"uni-btn\">\r\n        设置当前页面标题为: {{ newTitle }}\r\n      </button>\r\n      <button @tap=\"setNavigationBarLongTitle\" class=\"uni-btn\">\r\n        设置超长标题\r\n      </button>\r\n    </view>\r\n  </view>\r\n</template>\r\n\r\n<script lang=\"uts\">\r\nimport { state, setLifeCycleNum } from '@/store/index.uts'\r\n\r\nexport default {\r\n  data(){\r\n    return {\r\n      newTitle: 'new title',\r\n      longTitle: 'long title long title long title long title long title long title long title long title long title long title'\r\n    }\r\n  },\r\n  methods: {\r\n    setNavigationBarNewTitle() {\r\n      uni.setNavigationBarTitle({\r\n        title: this.newTitle,\r\n        success: () => {\r\n          console.log('setNavigationBarTitle success')\r\n          this.setLifeCycleNum(state.lifeCycleNum + 1)\r\n        },\r\n        fail: () => {\r\n          console.log('setNavigationBarTitle fail')\r\n          this.setLifeCycleNum(state.lifeCycleNum - 1)\r\n        },\r\n        complete: () => {\r\n          console.log('setNavigationBarTitle complete')\r\n          this.setLifeCycleNum(state.lifeCycleNum + 1)\r\n        }\r\n      })\r\n    },\r\n    setNavigationBarLongTitle() {\r\n      uni.setNavigationBarTitle({\r\n        title: this.longTitle,\r\n        success() {\r\n          console.log('setNavigationBarTitle success')\r\n        },\r\n        fail() {\r\n          console.log('setNavigationBarTitle fail')\r\n        },\r\n        complete() {\r\n          console.log('setNavigationBarTitle complete')\r\n        }\r\n      })\r\n    },\r\n    // 自动化测试\r\n    getLifeCycleNum(): number {\r\n      return state.lifeCycleNum\r\n    },\r\n    // 自动化测试\r\n    setLifeCycleNum(num: number) {\r\n      setLifeCycleNum(num)\r\n    }\r\n  },\r\n}\r\n</script>\r\n\n```"
	},
	"setTabBarBadge": {
		"name": "## uni.setTabBarBadge(options) @settabbarbadge",
		"description": "\r\n为 tabBar 某一项的右上角添加文本\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SetTabBarBadgeOptions](#settabbarbadgeoptions-values) | 是 | - | - |\n#### SetTabBarBadgeOptions 的属性值 @settabbarbadgeoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| index | number | 是 | - | tabBar的哪一项,从左边算起,索引从0开始 |\n| text | string | 是 | - | 显示的文本,不超过 3 个半角字符 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SetTabBarError](#settabbarerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetTabBarError 的属性值 @settabbarerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 100 \\\\| 200 | 是 | - | 错误码<br>- 100: TabBar 不存在<br>- 200: 参数错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[setTabBarBadge](http://uniapp.dcloud.io/api/ui/tabbar?id=settabbarbadge)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-tabbar.showTabBar)\n"
	},
	"removeTabBarBadge": {
		"name": "## uni.removeTabBarBadge(options) @removetabbarbadge",
		"description": "\r\n移除 tabBar 某一项右上角的文本\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [RemoveTabBarBadgeOptions](#removetabbarbadgeoptions-values) | 是 | - | - |\n#### RemoveTabBarBadgeOptions 的属性值 @removetabbarbadgeoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| index | number | 是 | - | tabBar的哪一项,从左边算起,索引从0开始 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SetTabBarError](#settabbarerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetTabBarError 的属性值 @settabbarerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 100 \\\\| 200 | 是 | - | 错误码<br>- 100: TabBar 不存在<br>- 200: 参数错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[removeTabBarBadge](http://uniapp.dcloud.io/api/ui/tabbar?id=removetabbarbadge)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-tabbar.hideTabBar)\n"
	},
	"setTabBarItem": {
		"name": "## uni.setTabBarItem(options) @settabbaritem",
		"description": "\r\n动态设置 tabBar 某一项的内容\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SetTabBarItemOptions](#settabbaritemoptions-values) | 是 | - | - |\n#### SetTabBarItemOptions 的属性值 @settabbaritemoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| index | number | 是 | - | tabBar 的哪一项,从左边算起,索引从0开始 |\n| text | string | 否 | - | tab 上按钮文字 |\n| iconPath | string | 否 | - | 图片路径 |\n| selectedIconPath | string | 否 | - | 选中时的图片路径 |\n| pagePath | string | 否 | - | 页面绝对路径 |\n| iconfont | [SetTabBarItemIconFontOptions](#settabbaritemiconfontoptions-values) | 否 | - | 字体图标,优先级高于 iconPath |\n| visible | boolean | 否 | - | tab 是否显示 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SetTabBarError](#settabbarerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetTabBarItemIconFontOptions 的属性值 @settabbaritemiconfontoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| text | string | 是 | - | 字库 Unicode 码 |\n| selectedText | string | 是 | - | 选中后字库 Unicode 码 |\n| fontSize | string | 否 | - | 字体图标字号(px) |\n| color | string | 否 | - | 字体图标颜色 |\n| selectedColor | string | 否 | - | 字体图标选中颜色 |\n\n##### SetTabBarError 的属性值 @settabbarerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 100 \\\\| 200 | 是 | - | 错误码<br>- 100: TabBar 不存在<br>- 200: 参数错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[setTabBarItem](http://uniapp.dcloud.io/api/ui/tabbar?id=settabbaritem)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-tabbar.showTabBarRedDot)\n"
	},
	"setTabBarStyle": {
		"name": "## uni.setTabBarStyle(options) @settabbarstyle",
		"description": "\r\n动态设置 tabBar 的整体样式\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SetTabBarStyleOptions](#settabbarstyleoptions-values) | 是 | - | - |\n#### SetTabBarStyleOptions 的属性值 @settabbarstyleoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| color | string (string.ColorString) | 否 | - | tab 上的文字默认颜色 |\n| selectedColor | string (string.ColorString) | 否 | - | tab 上的文字选中时的颜色 |\n| backgroundColor | string (string.ColorString) | 否 | - | tab 的背景色 |\n| backgroundImage | string | 否 | - | 图片背景 |\n| backgroundRepeat | \"repeat\" \\\\| \"repeat-x\" \\\\| \"repeat-y\" \\\\| \"no-repeat\" | 否 | - | 背景图平铺方式<br>- repeat: 背景图片在垂直方向和水平方向平铺<br>- repeat-x: 背景图片在水平方向平铺,垂直方向拉伸<br>- repeat-y: 背景图片在垂直方向平铺,水平方向拉伸<br>- no-repeat: 背景图片在垂直方向和水平方向都拉伸 |\n| borderStyle | string | 否 | - | tabbar上边框的颜色 |\n| midButton | [MidButtonOptions](#midbuttonoptions-values) | 否 | - | tabbar 中间按钮 仅在 list 项为偶数时有效 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SetTabBarError](#settabbarerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### MidButtonOptions 的属性值 @midbuttonoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| width | string | 否 | - | 中间按钮的宽度,tabBar 其它项为减去此宽度后平分,默认值为与其它项平分宽度。默认 80px |\n| height | string | 否 | - | 中间按钮的高度,可以大于 tabBar 高度,达到中间凸起的效果。默认 50px |\n| text | string | 否 | - | 中间按钮的文字 |\n| iconPath | string | 否 | - | 中间按钮的图片路径 |\n| iconWidth | string | 否 | - | 图片宽度(高度等比例缩放)。默认 24px |\n| backgroundImage | string | 否 | - | 中间按钮的背景图片路径 |\n| iconfont | [MidButtonIconFont](#midbuttoniconfont-values) | 否 | - | 字体图标,优先级高于 iconPath |\n\n###### MidButtonIconFont 的属性值 @midbuttoniconfont-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| text | string | 否 | - | 字库 Unicode 码 |\n| selectedText | string | 否 | - | 选中后字库 Unicode 码 |\n| fontSize | string | 否 | - | 字体图标字号(px) |\n| color | string | 否 | - | 字体图标颜色 |\n| selectedColor | string | 否 | - | 字体图标选中颜色 |\n\n##### SetTabBarError 的属性值 @settabbarerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 100 \\\\| 200 | 是 | - | 错误码<br>- 100: TabBar 不存在<br>- 200: 参数错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[setTabBarStyle](http://uniapp.dcloud.io/api/ui/tabbar?id=settabbarstyle)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-tabbar.hideTabBarRedDot)\n"
	},
	"hideTabBar": {
		"name": "## uni.hideTabBar(options?) @hidetabbar",
		"description": "\r\n隐藏 tabBar\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [HideTabBarOptions](#hidetabbaroptions-values) | 否 | - | - |\n#### HideTabBarOptions 的属性值 @hidetabbaroptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| animation | boolean | 否 | - | 是否需要动画效果 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SetTabBarError](#settabbarerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetTabBarError 的属性值 @settabbarerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 100 \\\\| 200 | 是 | - | 错误码<br>- 100: TabBar 不存在<br>- 200: 参数错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[hideTabBar](http://uniapp.dcloud.io/api/ui/tabbar?id=hidetabbar)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-tabbar.setTabBarBadge)\n"
	},
	"showTabBar": {
		"name": "## uni.showTabBar(options?) @showtabbar",
		"description": "\r\n显示 tabBar\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ShowTabBarOptions](#showtabbaroptions-values) | 否 | - | - |\n#### ShowTabBarOptions 的属性值 @showtabbaroptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| animation | boolean | 否 | - | 是否需要动画效果 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SetTabBarError](#settabbarerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetTabBarError 的属性值 @settabbarerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 100 \\\\| 200 | 是 | - | 错误码<br>- 100: TabBar 不存在<br>- 200: 参数错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[showTabBar](http://uniapp.dcloud.io/api/ui/tabbar?id=showtabbar)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-tabbar.removeTabBarBadge)\n"
	},
	"showTabBarRedDot": {
		"name": "## uni.showTabBarRedDot(options) @showtabbarreddot",
		"description": "\r\n显示 tabBar 某一项的右上角的红点\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ShowTabBarRedDotOptions](#showtabbarreddotoptions-values) | 是 | - | - |\n#### ShowTabBarRedDotOptions 的属性值 @showtabbarreddotoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| index | number | 是 | - | tabBar的哪一项,从左边算起,索引从0开始 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SetTabBarError](#settabbarerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetTabBarError 的属性值 @settabbarerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 100 \\\\| 200 | 是 | - | 错误码<br>- 100: TabBar 不存在<br>- 200: 参数错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[showTabBarRedDot](http://uniapp.dcloud.io/api/ui/tabbar?id=showtabbarreddot)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-tabbar.setTabBarStyle)\n"
	},
	"hideTabBarRedDot": {
		"name": "## uni.hideTabBarRedDot(options) @hidetabbarreddot",
		"description": "\r\n隐藏 tabBar 某一项的右上角的红点\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [HideTabBarRedDotOptions](#hidetabbarreddotoptions-values) | 是 | - | - |\n#### HideTabBarRedDotOptions 的属性值 @hidetabbarreddotoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| index | number | 是 | - | tabBar的哪一项,从左边算起,索引从0开始 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [SetTabBarError](#settabbarerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SetTabBarError 的属性值 @settabbarerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 100 \\\\| 200 | 是 | - | 错误码<br>- 100: TabBar 不存在<br>- 200: 参数错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[hideTabBarRedDot](http://uniapp.dcloud.io/api/ui/tabbar?id=hidetabbarreddot)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.set-tabbar.setTabBarItem)\n"
	},
	"startPullDownRefresh": {
		"name": "## uni.startPullDownRefresh(options?) @startpulldownrefresh",
		"description": "\r\n开始下拉刷新\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [StartPullDownRefreshOptions](#startpulldownrefreshoptions-values) | 否 | - | - |\n#### StartPullDownRefreshOptions 的属性值 @startpulldownrefreshoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [PullDownRefreshError](#pulldownrefresherror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### PullDownRefreshError 的属性值 @pulldownrefresherror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[startPullDownRefresh](http://uniapp.dcloud.io/api/ui/pulldown?id=startpulldownrefresh)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.pull-down-refresh.startPullDownRefresh)\n"
	},
	"stopPullDownRefresh": {
		"name": "## uni.stopPullDownRefresh() @stoppulldownrefresh",
		"description": "\r\n停止当前页面下拉刷新\r\n",
		"param": "",
		"returnValue": "",
		"compatibility": "",
		"tutorial": "\n### 参见\n[stopPullDownRefresh](http://uniapp.dcloud.io/api/ui/pulldown?id=stoppulldownrefresh)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.pull-down-refresh.stopPullDownRefresh)\n"
	},
	"pull-down-refresh": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/pull-down-refresh/pull-down-refresh.uvue) \n ```html\n<template>\r\n\t<scroll-view>\r\n\t\t<!-- 实际开发中,长列表应该使用list-view -->\r\n\t\t<view class=\"uni-padding-wrap uni-common-mt\">\r\n\t\t\t<text class=\"text\" v-for=\"(num,index) in data\" :key=\"index\">list - {{num}}</text>\r\n\t\t\t<view v-if=\"showLoadMore\">{{loadMoreText}}</view>\r\n\t\t</view>\r\n\t</scroll-view>\r\n</template>\r\n<script lang=\"uts\">\r\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\tdata: [] as Array<number>,\r\n\t\t\t\tloadMoreText: \"加载中...\",\r\n\t\t\t\tshowLoadMore: false,\r\n\t\t\t\tmax: 0\r\n\t\t\t}\r\n\t\t},\r\n\t\tonLoad() {\r\n\t\t\tthis.initData();\r\n\t\t},\r\n\t\tonReachBottom() {\r\n\t\t\tconsole.log(\"onReachBottom\");\r\n\t\t\tif (this.max > 40) {\r\n\t\t\t\tthis.loadMoreText = \"没有更多数据了!\"\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.showLoadMore = true;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.setListData();\r\n\t\t\t}, 300);\r\n\t\t},\r\n\t\tonPullDownRefresh() {\r\n\t\t\tconsole.log('onPullDownRefresh');\r\n\t\t\tthis.initData();\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tinitData(){\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.max = 0;\r\n\t\t\t\t\tthis.data = [];\r\n\t\t\t\t\tlet data:Array<number> = [];\r\n\t\t\t\t\tthis.max += 20;\r\n\t\t\t\t\tfor (let i:number = this.max - 19; i < this.max + 1; i++) {\r\n\t\t\t\t\t\tdata.push(i)\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.data = this.data.concat(data);\r\n\t\t\t\t\tuni.stopPullDownRefresh();\r\n\t\t\t\t}, 300);\r\n\t\t\t},\r\n\t\t\tsetListData() {\r\n\t\t\t\tlet data:Array<number> = [];\r\n\t\t\t\tthis.max += 10;\r\n\t\t\t\tfor (let i:number = this.max - 9; i < this.max + 1; i++) {\r\n\t\t\t\t\tdata.push(i)\r\n\t\t\t\t}\r\n\t\t\t\tthis.data = this.data.concat(data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.text {\r\n\t\tmargin: 16rpx 0;\r\n\t\twidth:100%;\r\n\t\tbackground-color: #fff;\r\n\t\theight: 120rpx;\r\n\t\tline-height: 120rpx;\r\n\t\ttext-align: center;\r\n\t\tcolor: #555;\r\n\t\tborder-radius: 8rpx;\r\n\t}\r\n</style>\r\n\n```"
	},
	"pageScrollTo": {
		"name": "## uni.pageScrollTo(options) @pagescrollto",
		"description": "\r\n将页面滚动到目标位置\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [PageScrollToOptions](#pagescrolltooptions-values) | 是 | - | - |\n#### PageScrollToOptions 的属性值 @pagescrolltooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| scrollTop | number | 否 | - | 滚动到页面的目标位置 |\n| selector | string | 否 | - | 选择器 |\n| offsetTop | number | 否 | - | 偏移距离,可以滚动到 selector 加偏移距离的位置 |\n| duration | number | 否 | - | 滚动动画的时长 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [PageScrollToError](#pagescrolltoerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### PageScrollToError 的属性值 @pagescrolltoerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### PageScrollToOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| offsetTop | 5.0 | x | 3.91 | 10.0 | x | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### pageScrollTo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | 3.91 | 10.0 | √ | √ |\n",
		"tutorial": "\n### 参见\n[pageScrollTo](http://uniapp.dcloud.io/api/ui/scroll?id=pagescrollto)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.page.page-scroll-to)\n"
	},
	"page-scroll-to": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/page-scroll-to/page-scroll-to.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\" scroll-with-animation=\"true\">\r\n    <!-- #endif -->\r\n    <view class=\"uni-padding-wrap\">\r\n      <page-head :title=\"title\"></page-head>\r\n      <button type=\"default\" class=\"btn-scrollTo\" @click=\"scrollTo\">\r\n        scrollTo\r\n      </button>\r\n      <button\r\n        type=\"default\"\r\n        class=\"btn-scrollToElement\"\r\n        @click=\"scrollToElement\"\r\n      >\r\n        scrollToElement\r\n      </button>\r\n      <view class=\"uni-list\" v-for=\"(_, index) in 10\" :key=\"index\">\r\n        <view class=\"uni-list-cell list-item\">{{ index }}</view>\r\n      </view>\r\n      <view class=\"custom-element\">scrollTo-custom-element</view>\r\n      <view class=\"uni-list\" v-for=\"(_, index2) in 10\" :key=\"index2\">\r\n        <view class=\"uni-list-cell list-item\">{{ index2 }}</view>\r\n      </view>\r\n    </view>\r\n    <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  data() {\r\n    return {\r\n      title: 'pageScrollTo',\r\n    }\r\n  },\r\n  methods: {\r\n    scrollTo() {\r\n      uni.pageScrollTo({\r\n        scrollTop: 100,\r\n        duration: 300,\r\n        success: () => {\r\n          console.log('success')\r\n        },\r\n      })\r\n    },\r\n    scrollToElement() {\r\n      uni.pageScrollTo({\r\n        selector: '.custom-element',\r\n        duration: 300,\r\n        success: () => {\r\n          console.log('success')\r\n        },\r\n      })\r\n    },\r\n  },\r\n}\r\n</script>\r\n\r\n<style>\r\n.list-item {\r\n  height: 100px;\r\n  padding-left: 30px;\r\n}\r\n</style>\r\n\n```"
	},
	"getElementById": {
		"name": "## uni.getElementById(id) @getelementbyid",
		"description": "\r\n返回一个匹配特定 ID 的元素, 如果不存在,返回 null。\\\r\n如果需要获取指定的节点类型,需要使用 as 进行类型转换。\\\r\nID 区分大小写,且应该是唯一的。如果存在多个匹配的元素,则返回第一个匹配的元素。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| id | string.IDString \\\\| string | 是 | - | - |",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| [Element](/dom/element.md) | 否 | \n",
		"compatibility": "### getElementById 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | x | 3.91 | 10.0 | x | x |\n",
		"tutorial": "\n### 参见\n[getElementById](https://uniapp.dcloud.net.cn/uni-app-x/api/get-element.html)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.dom.get-element.getElementById)\n",
		"example": "### 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-element-by-id/get-element-by-id.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head id=\"page-head\" title=\"getElementById\"></page-head>\r\n    <view class=\"uni-padding-wrap\">\r\n      <text id=\"text\">this is text</text>\r\n      <view id=\"view\" class=\"uni-common-mt\" style=\"border: 1px solid red\"\r\n        >this is view</view\r\n      >\r\n      <button class=\"uni-btn\" @click=\"changePageHeadBackgroundColor\">\r\n        修改 page-head 背景色\r\n      </button>\r\n      <button class=\"uni-btn\" @click=\"changeTextColor\">\r\n        修改 text 字体颜色\r\n      </button>\r\n      <button class=\"uni-btn\" @click=\"changeViewStyle\">\r\n        修改 view 宽高及背景色\r\n      </button>\r\n      <button class=\"uni-btn\" @click=\"goMultipleRootNode\">\r\n        跳转多根节点示例\r\n      </button>\r\n    </view>\r\n  </view>\r\n</template>\r\n\r\n<script lang=\"uts\">\r\nexport default {\r\n  data() {\r\n    return {\r\n      checked: false,\r\n      homePagePath: '/pages/tabBar/component',\r\n      launchOptionsPath: '',\r\n    }\r\n  },\r\n  methods: {\r\n    getElementByNotExistId() : Element | null {\r\n      return uni.getElementById('not-exist-id')\r\n    },\r\n    changePageHeadBackgroundColor() {\r\n      const pageHead = uni.getElementById('page-head')!\r\n      pageHead.style.setProperty('backgroundColor', 'red')\r\n    },\r\n    changeTextColor() {\r\n      const text = uni.getElementById('text')!\r\n      text.style.setProperty('color', 'red')\r\n    },\r\n    changeViewStyle() {\r\n      const view = uni.getElementById<UniViewElement>('view')\r\n      if (view !== null) {\r\n        view.style.setProperty('width', '90%')\r\n        view.style.setProperty('height', '50px')\r\n        view.style.setProperty('backgroundColor', '#007AFF')\r\n      }\r\n    },\r\n    goMultipleRootNode() {\r\n      uni.navigateTo({ url: '/pages/API/get-element-by-id/get-element-by-id-multiple-root-node' })\r\n    }\r\n  }\r\n}\r\n</script>\r\n\n```"
	},
	"createSelectorQuery": {
		"name": "## uni.createSelectorQuery() @createselectorquery",
		"description": "\r\n返回一个SelectorQuery对象实例\r\n",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [SelectorQuery](#selectorquery-values) | \n\n#### SelectorQuery 的方法 @selectorquery-values \n\n#### in(component?) @in\n\r\n将选择器的选取范围更改为自定义组件component内\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| component | any | 否 | - | - |\n##### 返回值 \n\n| 类型 |\n| :- |\n| [SelectorQuery](#selectorquery-values) | \n\n\n\n#### select(selector) @select\n\r\n在当前页面下选择第一个匹配选择器selector的节点\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| selector | string | 是 | - | - |\n##### 返回值 \n\n| 类型 |\n| :- |\n| [NodesRef](#nodesref-values) | \n\n###### NodesRef 的方法 @nodesref-values \n\n##### boundingClientRect(callback?) @boundingclientrect\n\r\n添加节点的布局位置的查询请求,相对于显示区域,以像素为单位\n###### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: any) => void | 否 | - | - |\n###### 返回值 \n\n| 类型 |\n| :- |\n| [SelectorQuery](#selectorquery-values) | \n\n\n\n##### scrollOffset(callback) @scrolloffset\n\r\n添加节点的滚动位置查询请求,以像素为单位\n###### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: any) => void | 是 | - | - |\n###### 返回值 \n\n| 类型 |\n| :- |\n| [SelectorQuery](#selectorquery-values) | \n\n\n\n##### fields(fields, callback) @fields\n\r\n获取节点的相关信息,需要获取的字段在fields中指定\n###### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| fields | [NodeField](#nodefield-values) | 是 | - | - |\n| callback | (result: any) => void | 是 | - | - |\n###### NodeField 的属性值 @nodefield-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| id | boolean | 否 | - | 是否返回节点 id |\n| dataset | boolean | 否 | - | 是否返回节点 dataset |\n| rect | boolean | 否 | - | 是否返回节点布局位置(left right top bottom) |\n| size | boolean | 否 | - | 是否返回节点尺寸(width height) |\n| scrollOffset | boolean | 否 | - | 是否返回节点的 scrollLeft scrollTop,节点必须是 scroll-view 或者 viewport |\n| properties | Array\\<string\\> | 否 | - | 指定属性名列表,返回节点对应属性名的当前属性值(只能获得组件文档中标注的常规属性值,id class style 和事件绑定的属性值不可获取) |\n| computedStyle | Array\\<string\\> | 否 | - | 指定样式名列表,返回节点对应样式名的当前值 |\n\n###### 返回值 \n\n| 类型 |\n| :- |\n| [SelectorQuery](#selectorquery-values) | \n\n\n\n##### node(callback) @node\n\r\n获取 Node 节点实例。目前支持 Canvas 的获取。\n###### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: any) => void | 是 | - | - |\n###### 返回值 \n\n| 类型 |\n| :- |\n| [SelectorQuery](#selectorquery-values) | \n\n\n\n\n\n#### selectAll(selector) @selectall\n\r\n在当前页面下选择匹配选择器selector的所有节点\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| selector | string | 是 | - | - |\n##### 返回值 \n\n| 类型 |\n| :- |\n| [NodesRef](#nodesref-values) | \n\n\n\n#### selectViewport() @selectviewport\n\r\n选择显示区域\n\n##### 返回值 \n\n| 类型 |\n| :- |\n| [NodesRef](#nodesref-values) | \n\n\n\n#### exec(callback) @exec\n\r\n执行所有的请求\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: Array\\<any\\>) => void | 是 | - | - |\n##### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| [NodesRef](#nodesref-values) | 否 | \n\n\n",
		"compatibility": "### createSelectorQuery 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | 3.91 | 10.0 | √ | √ |\n",
		"tutorial": "\n### 参见\n[createSelectorQuery](http://uniapp.dcloud.io/api/ui/nodes-info?id=createselectorquery)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.dom.nodes-info.createSelectorQuery)\n"
	},
	"nodes-info": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/nodes-info/nodes-info.uvue) \n ```html\n<template>\r\n  <view class=\"page\">\r\n    <page-head :title=\"title\"></page-head>\r\n    <button class=\"btn btn-get-node-info\" @click=\"getNodeInfo\">getNodeInfo</button>\r\n    <button class=\"btn btn-get-all-node-info\" @click=\"getAllNodeInfo\">getAllNodeInfo</button>\r\n    <view class=\"rect-1-2\">\r\n      <view class=\"rect rect1\"></view>\r\n      <view class=\"rect rect2\"></view>\r\n    </view>\r\n    <view class=\"rect-info-1-2\">\r\n      <view class=\"rect-info\" v-for=\"(nodeInfo, index) in nodeInfoList\" :key=\"index\">\r\n        <view class=\"node-info-item\">\r\n          <text class=\"node-info-item-k\">left: </text>\r\n          <text class=\"node-info-item-v\">{{nodeInfo.left}}</text>\r\n        </view>\r\n        <view class=\"node-info-item\">\r\n          <text class=\"node-info-item-k\">top: </text>\r\n          <text class=\"node-info-item-v\">{{nodeInfo.top}}</text>\r\n        </view>\r\n        <view class=\"node-info-item\">\r\n          <text class=\"node-info-item-k\">right: </text>\r\n          <text class=\"node-info-item-v\">{{nodeInfo.right}}</text>\r\n        </view>\r\n        <view class=\"node-info-item\">\r\n          <text class=\"node-info-item-k\">bottom: </text>\r\n          <text class=\"node-info-item-v\">{{nodeInfo.bottom}}</text>\r\n        </view>\r\n        <view class=\"node-info-item\">\r\n          <text class=\"node-info-item-k\">width: </text>\r\n          <text class=\"node-info-item-v\">{{nodeInfo.width}}</text>\r\n        </view>\r\n        <view class=\"node-info-item\">\r\n          <text class=\"node-info-item-k\">height: </text>\r\n          <text class=\"node-info-item-v\">{{nodeInfo.height}}</text>\r\n        </view>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n\r\n<script>\r\n  type NodeInfoType = {\r\n    left : number | null,\r\n    top : number | null,\r\n    right : number | null,\r\n    bottom : number | null,\r\n    width : number | null,\r\n    height : number | null,\r\n  }\r\n\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'createSelectorQuery',\r\n        nodeInfoList: [] as NodeInfoType[],\r\n      }\r\n    },\r\n    methods: {\r\n      getNodeInfo() {\r\n        uni.createSelectorQuery().select('.rect1').boundingClientRect().exec((ret) => {\r\n          this.nodeInfoList.length = 0\r\n          const i = ret[0] as NodeInfo\r\n          this.nodeInfoList.push({\r\n            left: i.left,\r\n            top: i.top,\r\n            right: i.right,\r\n            bottom: i.bottom,\r\n            width: i.width,\r\n            height: i.height,\r\n          } as NodeInfoType)\r\n        })\r\n      },\r\n      getAllNodeInfo() {\r\n        uni.createSelectorQuery().selectAll('.rect').boundingClientRect().exec((ret) => {\r\n          this.nodeInfoList.length = 0\r\n          const array = ret[0] as NodeInfo[]\r\n          array.forEach((i) => {\r\n            this.nodeInfoList.push({\r\n              left: i.left,\r\n              top: i.top,\r\n              right: i.right,\r\n              bottom: i.bottom,\r\n              width: i.width,\r\n              height: i.height,\r\n            } as NodeInfoType)\r\n          })\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n  .page {\r\n    padding: 15px;\r\n  }\r\n\r\n  .btn {\r\n    margin-top: 15px;\r\n  }\r\n\r\n  .rect-1-2 {\r\n    flex-direction: row;\r\n    margin-top: 15px;\r\n  }\r\n\r\n  .rect {\r\n    width: 150px;\r\n    height: 100px;\r\n  }\r\n\r\n  .rect1 {\r\n    background-color: dodgerblue;\r\n  }\r\n\r\n  .rect2 {\r\n    margin-left: auto;\r\n    background-color: seagreen;\r\n  }\r\n\r\n  .rect-info-1-2 {\r\n    flex-direction: row;\r\n    margin-top: 15px;\r\n  }\r\n\r\n  .rect-info {\r\n    flex: 1;\r\n    flex-direction: column;\r\n  }\r\n\r\n  .node-info-item {\r\n    flex-direction: row;\r\n  }\r\n\r\n  .node-info-item-k {\r\n    width: 72px;\r\n    line-height: 2;\r\n  }\r\n\r\n  .node-info-item-v {\r\n    font-weight: bold;\r\n    line-height: 2;\r\n  }\r\n</style>\n```"
	},
	"showToast": {
		"name": "## uni.showToast(options) @showtoast",
		"description": "显示消息提示框",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ShowToastOptions](#showtoastoptions-values) | 是 | - | uni.showToast参数定义 |\n#### ShowToastOptions 的属性值 @showtoastoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| title | string | 是 | - | 提示的内容,长度与 icon 取值有关。 |\n| icon | string | 否 | - | icon值说明 success: 显示成功图标,error: 显示错误图标; fail: 显示错误图标,此时title文本无长度显示; exception: 显示异常图标,此时title文本无长度显示; loading: 显示加载图标;none: 不显示图标。 |\n| image | string | 否 | - | 自定义图标的本地路径(app端暂不支持gif) |\n| mask | boolean | 否 | - | 是否显示透明蒙层,防止触摸穿透,默认:false |\n| duration | number | 否 | - | 提示的延迟时间,单位毫秒,默认:1500 |\n| position | string | 否 | - | position值说明(仅App生效) top: 居上显示; center: 居中显示;bottom: 居底显示 |\n| success | (res: ShowToastSuccess) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n",
		"returnValue": "",
		"compatibility": "### showToast 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[showToast]([](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showtoast))\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.ui.prompt.showActionSheet)\n",
		"example": "### 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/toast/toast.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head :title=\"title\"></page-head>\r\n    <view class=\"uni-padding-wrap\">\r\n      <view class=\"uni-btn-v\">\r\n        <button class=\"uni-btn-v\" type=\"default\" @tap=\"toast1Tap\">点击弹出默认toast</button>\r\n        <button class=\"uni-btn-v\" type=\"default\" @tap=\"toastTapIconError\">点击弹出设置icon的toast</button>\r\n        <button class=\"uni-btn-v\" type=\"default\" @tap=\"toast2Tap\">点击弹出设置duration的toast</button>\r\n        <button class=\"uni-btn-v\" type=\"default\" @tap=\"toast3Tap\">点击弹出显示loading的toast</button>\r\n        <!-- #ifndef MP-ALIPAY -->\r\n        <button class=\"uni-btn-v\" type=\"default\" @tap=\"toast4Tap\">点击弹出显示自定义图片的toast</button>\r\n        <!-- #endif -->\r\n        <!-- #ifdef APP-PLUS -->\r\n        <button class=\"uni-btn-v\" type=\"default\" @tap=\"toast5Tap\">点击显示无图标的居底toast</button>\r\n        <!-- #endif -->\r\n        <button class=\"uni-btn-v\" type=\"default\" @tap=\"hideToast\">点击隐藏toast</button>\r\n      </view>\r\n      <text>{{exeRet}}</text>\r\n    </view>\r\n  </view>\r\n</template>\r\n<script lang=\"uts\">\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'toast',\r\n        exeRet: ''\r\n      }\r\n    },\r\n    onLoad(){\r\n      uni.showToast({\r\n      \ttitle:'onLoad 调用示例,1秒后消失'\r\n      })\r\n      setTimeout(function() {\r\n        uni.hideToast()\r\n      }, 1000);\r\n    },\r\n    methods: {\r\n      toast1Tap: function () {\r\n        uni.showToast({\r\n          title: \"默认\",\r\n          success: (res) => {\r\n            this.exeRet = \"success:\" + JSON.stringify(res) + new Date()\r\n          },\r\n          fail: (res) => {\r\n            this.exeRet = \"fail:\" + JSON.stringify(res)\r\n          },\r\n        })\r\n      },\r\n      toastTapIconError: function () {\r\n        uni.showToast({\r\n          title: \"默认\",\r\n          icon: 'error',\r\n          success: (res) => {\r\n            this.exeRet = \"success:\" + JSON.stringify(res) + new Date()\r\n          },\r\n          fail: (res) => {\r\n            this.exeRet = \"fail:\" + JSON.stringify(res)\r\n          },\r\n        })\r\n      },\r\n      toast2Tap: function () {\r\n        uni.showToast({\r\n          title: \"duration 3000\",\r\n          duration: 3000,\r\n          success: (res) => {\r\n            this.exeRet = \"success:\" + JSON.stringify(res) + new Date()\r\n          },\r\n          fail: (res) => {\r\n            this.exeRet = \"fail:\" + JSON.stringify(res)\r\n          },\r\n        })\r\n      },\r\n      toast3Tap: function () {\r\n        uni.showToast({\r\n          title: \"loading\",\r\n          icon: \"loading\",\r\n          duration: 5000,\r\n          success: (res) => {\r\n            this.exeRet = \"success:\" + JSON.stringify(res) + new Date()\r\n          },\r\n          fail: (res) => {\r\n            this.exeRet = \"fail:\" + JSON.stringify(res)\r\n          },\r\n        })\r\n      },\r\n      toast4Tap: function () {\r\n        uni.showToast({\r\n          title: \"logo\",\r\n          image: \"/static/uni.png\",\r\n          success: (res) => {\r\n            this.exeRet = \"success:\" + JSON.stringify(res) + new Date()\r\n          },\r\n          fail: (res) => {\r\n            this.exeRet = \"fail:\" + JSON.stringify(res)\r\n          },\r\n        })\r\n      },\r\n      // #ifdef APP-PLUS\r\n      toast5Tap: function () {\r\n        uni.showToast({\r\n          title: \"显示一段轻提示\",\r\n          position: 'bottom',\r\n          success: (res) => {\r\n            this.exeRet = \"success:\" + JSON.stringify(res) + new Date()\r\n          },\r\n          fail: (res) => {\r\n            this.exeRet = \"fail:\" + JSON.stringify(res)\r\n          },\r\n        })\r\n      },\r\n      // #endif\r\n      hideToast: function () {\r\n        uni.hideToast()\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\n```"
	},
	"showLoading": {
		"name": "## uni.showLoading(options) @showloading",
		"description": "显示 loading 提示框, 需主动调用 uni.hideLoading 才能关闭提示框。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ShowLoadingOptions](#showloadingoptions-values) | 是 | - | uni.showLoading参数定义 |\n#### ShowLoadingOptions 的属性值 @showloadingoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| title | string | 是 | - | 提示的内容,长度与 icon 取值有关。 |\n| mask | boolean | 否 | - | 是否显示透明蒙层,防止触摸穿透,默认:false |\n| success | (res: ShowLoadingSuccess) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n",
		"returnValue": "",
		"compatibility": "### showLoading 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[showLoading]([](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showloading))\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.ui.prompt.showLoading)\n",
		"example": "### 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/loading/loading.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head :title=\"title\"></page-head>\r\n    <view class=\"uni-list\">\r\n      <view class=\"uni-list-cell uni-list-cell-pd\">\r\n        <view class=\"uni-list-cell-db\">是否显示透明蒙层-屏蔽点击事件</view>\r\n        <switch :checked=\"maskSelect\" @change=\"maskChange\" />\r\n      </view>\r\n      <view class=\"uni-padding-wrap\">\r\n        <view class=\"uni-title uni-common-mt\">\r\n          <text class=\"uni-title-text\"> 设置标题 </text>\r\n        </view>\r\n      </view>\r\n      <view class=\"uni-list uni-common-pl\">\r\n        <radio-group @change=\"radioChange\" class=\"radio-group\">\r\n          <radio\r\n            class=\"uni-list-cell uni-list-cell-pd radio\"\r\n            v-for=\"(item, index) in items\"\r\n            :key=\"item.value\"\r\n            :class=\"index < items.length - 1 ? 'uni-list-cell-line' : ''\"\r\n            :value=\"item.value\"\r\n            :checked=\"index === current\"\r\n          >\r\n            {{ item.name }}\r\n          </radio>\r\n        </radio-group>\r\n      </view>\r\n    </view>\r\n    <view class=\"uni-padding-wrap\">\r\n      <view class=\"uni-btn-v\">\r\n        <button class=\"uni-btn-v\" type=\"primary\" @click=\"showLoading\">\r\n          显示 loading 提示框\r\n        </button>\r\n        <button class=\"uni-btn-v\" @click=\"hideLoading\">\r\n          隐藏 loading 提示框\r\n        </button>\r\n        <text>为方便演示,loading弹出3秒后自动关闭</text>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n<script lang=\"uts\">\r\ntype ItemType = {\r\n  value : string\r\n  name : string\r\n}\r\nexport default {\r\n  data() {\r\n    return {\r\n      title: 'loading',\r\n      items: [\r\n        {\r\n          value: 'null',\r\n          name: '无标题',\r\n        },\r\n        {\r\n          value: '三秒后自动关闭',\r\n          name: '普通标题',\r\n        },\r\n        {\r\n          value: '超长文本内容,测试超出范围-超长文本内容,测试超出范围-三秒后自动关闭',\r\n          name: '长标题',\r\n        },\r\n      ] as ItemType[],\r\n      current: 0,\r\n      maskSelect: false,\r\n      titleSelect: \"null\"\r\n    }\r\n  },\r\n  methods: {\r\n\r\n    radioChange(e : RadioGroupChangeEvent) {\r\n      const selected = this.items.find((item) : boolean => {\r\n        return item.value == e.detail.value\r\n      })\r\n      if (selected != null) {\r\n        this.titleSelect = selected.value\r\n      }\r\n    },\r\n    maskChange: function (e : SwitchChangeEvent) {\r\n      this.maskSelect = e.detail.value\r\n    },\r\n    showLoading: function () {\r\n\r\n      console.log(this.titleSelect)\r\n      if (this.titleSelect == \"null\") {\r\n        uni.showLoading({\r\n          title: \"\",\r\n          mask: this.maskSelect\r\n        });\r\n      } else {\r\n        uni.showLoading({\r\n          title: this.titleSelect,\r\n          mask: this.maskSelect\r\n        });\r\n      }\r\n      setTimeout(() => {\r\n        this.hideLoading();\r\n      }, 3000);\r\n    },\r\n    hideLoading: function () {\r\n      uni.hideLoading();\r\n    }\r\n  }\r\n}\r\n</script>\r\n\n```"
	},
	"showModal": {
		"name": "## uni.showModal(options) @showmodal",
		"description": "显示模态弹窗,可以只有一个确定按钮,也可以同时有确定和取消按钮。类似于一个API整合了 html 中:alert、confirm。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ShowModalOptions](#showmodaloptions-values) | 是 | - | uni.showModal 参数定义 |\n#### ShowModalOptions 的属性值 @showmodaloptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| title | string | 否 | - | 提示的标题 |\n| content | string | 否 | - | 提示的内容 |\n| showCancel | boolean | 否 | true<br>是否显示取消按钮,默认为 true |  |\n| cancelText | string | 否 | - | 取消按钮的文字,默认为\"取消\" |\n| cancelColor | string | 否 | - | 取消按钮的文字颜色,默认为\"#000000\" |\n| confirmText | string | 否 | - | 确定按钮的文字,默认为\"确定\" |\n| confirmColor | string | 否 | - | 确定按钮的文字颜色 |\n| editable | boolean | 否 | false<br>是否显示输入框 |  |\n| placeholderText | string | 否 | - | 显示输入框时的提示文本 |\n| success | (res: [ShowModalSuccess](#showmodalsuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ShowModalSuccess 的属性值 @showmodalsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| confirm | boolean | 是 | - | 为 true 时,表示用户点击了确定按钮 |\n| cancel | boolean | 是 | - | 为 true 时,表示用户点击了取消(用于 Android 系统区分点击蒙层关闭还是点击取消按钮关闭) |\n| content | string | 否 | - | editable 为 true 时,用户输入的文本 |\n",
		"returnValue": "",
		"compatibility": "### showModal 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[showModal]([](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showmodal))\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.ui.prompt.showModal)\n",
		"example": "### 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/modal/modal.uvue) \n ```html\n<template>\r\n\t<!-- #ifdef APP -->\r\n\t<scroll-view style=\"flex: 1\">\r\n\t\t<!-- #endif -->\r\n\t\t<view>\r\n\t\t\t<page-head :title=\"title\"></page-head>\r\n\t\t\t<view class=\"uni-list\">\r\n\t\t\t\t<radio-group @change=\"radioChange\">\r\n\t\t\t\t\t<radio class=\"uni-list-cell uni-list-cell-pd\" v-for=\"(item, index) in items\" :key=\"item.value\"\r\n\t\t\t\t\t\t:class=\"index < items.length - 1 ? 'uni-list-cell-line' : ''\" :value=\"item.value\"\r\n\t\t\t\t\t\t:checked=\"index === current\">\r\n\t\t\t\t\t\t{{ item.name }}\r\n\t\t\t\t\t</radio>\r\n\t\t\t\t</radio-group>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"uni-list\">\r\n\t\t\t\t<view class=\"uni-list-cell uni-list-cell-pd\">\r\n\t\t\t\t\t<view class=\"uni-list-cell-db\">是否显示取消按钮</view>\r\n\t\t\t\t\t<switch :checked=\"showCancelSelect\" @change=\"showCancelChange\" />\r\n\t\t\t\t</view>\r\n\t\t\t\t<view class=\"uni-list-cell uni-list-cell-pd\">\r\n\t\t\t\t\t<view class=\"uni-list-cell-db\">定制取消文案</view>\r\n\t\t\t\t\t<switch :checked=\"cancelTextSelect\" @change=\"cancelTextChange\" />\r\n\t\t\t\t</view>\r\n\t\t\t\t<view class=\"uni-list-cell uni-list-cell-pd\">\r\n\t\t\t\t\t<view class=\"uni-list-cell-db\">定制确认文案</view>\r\n\t\t\t\t\t<switch :checked=\"confirmTextSelect\" @change=\"confirmTextChange\" />\r\n\t\t\t\t</view>\r\n\t\t\t\t<view class=\"uni-list-cell uni-list-cell-pd\">\r\n\t\t\t\t\t<view class=\"uni-list-cell-db\">是否显示输入框</view>\r\n\t\t\t\t\t<switch :checked=\"editableSelect\" @change=\"editableChange\" />\r\n\t\t\t\t</view>\r\n\t\t\t\t<view class=\"uni-list-cell uni-list-cell-pd\">\r\n\t\t\t\t\t<view class=\"uni-list-cell-db\">是否定制输入提示词</view>\r\n\t\t\t\t\t<switch :checked=\"placeholderTextSelect\" @change=\"placeholderTextChange\" />\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"uni-padding-wrap uni-common-mt\">\r\n\t\t\t\t<view class=\"uni-btn-v\">\r\n\t\t\t\t\t<button class=\"uni-btn-v\" type=\"default\" @tap=\"modalTap\">\r\n\t\t\t\t\t\tmodal测试\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</view>\r\n\t\t\t\t<text>{{ exeRet }}</text>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\t\t<!-- #ifdef APP -->\r\n\t</scroll-view>\r\n\t<!-- #endif -->\r\n</template>\r\n<script lang=\"uts\">\r\n\ttype ItemType = {\r\n\t\tvalue : string,\r\n\t\tname : string,\r\n\t}\r\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\ttitle: 'modal',\r\n\t\t\t\tshowCancelSelect: false,\r\n\t\t\t\tcancelTextSelect: false,\r\n\t\t\t\tconfirmTextSelect: false,\r\n\t\t\t\teditableSelect: false,\r\n\t\t\t\tplaceholderTextSelect: false,\r\n\t\t\t\texeRet: \"\",\r\n\t\t\t\titems: [{\r\n\t\t\t\t\tvalue: '标题',\r\n\t\t\t\t\tname: '有标题'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '',\r\n\t\t\t\t\tname: '无标题'\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tvalue: '超长标题测试内容,测试超过显示最大范围之后的样式-超长标题测试内容,测试超过显示最大范围之后的样式',\r\n\t\t\t\t\tname: '超长标题'\r\n\t\t\t\t}\r\n\t\t\t\t] as ItemType[],\r\n\t\t\t\tcurrent: 0\r\n\t\t\t}\r\n\t\t},\r\n    onLoad(){\r\n      uni.showModal({\r\n        title: \"onLoad 调用示例,请手动取消\",\r\n        showCancel:false\r\n      })\r\n    },\r\n\t\tmethods: {\r\n\t\t\tshowCancelChange: function (e : SwitchChangeEvent) {\r\n\t\t\t\tthis.showCancelSelect = e.detail.value\r\n\t\t\t},\r\n\t\t\tcancelTextChange: function (e : SwitchChangeEvent) {\r\n\t\t\t\tthis.cancelTextSelect = e.detail.value\r\n\t\t\t},\r\n\t\t\tconfirmTextChange: function (e : SwitchChangeEvent) {\r\n\t\t\t\tthis.confirmTextSelect = e.detail.value\r\n\t\t\t},\r\n\t\t\teditableChange: function (e : SwitchChangeEvent) {\r\n\t\t\t\tthis.editableSelect = e.detail.value\r\n\t\t\t},\r\n\t\t\tplaceholderTextChange: function (e : SwitchChangeEvent) {\r\n\t\t\t\tthis.placeholderTextSelect = e.detail.value\r\n\t\t\t},\r\n\t\t\tradioChange(e : RadioGroupChangeEvent) {\r\n\t\t\t\tfor (let i = 0; i < this.items.length; i++) {\r\n\t\t\t\t\tif (this.items[i].value === e.detail.value) {\r\n\t\t\t\t\t\tthis.current = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tmodalTap: function () {\r\n\t\t\t\tlet cancelTextVal : string\r\n\t\t\t\tlet cancelColorVal = ''\r\n\t\t\t\tif (this.cancelTextSelect) {\r\n\t\t\t\t\tcancelTextVal = \"修改后的取消文本\"\r\n\t\t\t\t\tcancelColorVal = \"#ff00ff\"\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcancelTextVal = \"取消\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet confirmTextVal = '确定'\r\n\t\t\t\tlet confirmColorVal = ''\r\n\t\t\t\tif (this.confirmTextSelect) {\r\n\t\t\t\t\tconfirmTextVal = \"修改后的确定文本\"\r\n\t\t\t\t\tconfirmColorVal = \"#00ffff\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet placeholderTextVal = ''\r\n\t\t\t\tlet contentVal = \"弹窗内容,告知当前状态、信息和解决方法,描述文字尽量控制在三行内\"\r\n\t\t\t\tif (this.placeholderTextSelect) {\r\n\t\t\t\t\tplaceholderTextVal = \"定制提示信息\"\r\n\t\t\t\t\tcontentVal = \"\"\r\n\t\t\t\t}\r\n\t\t\t\tuni.showModal({\r\n\t\t\t\t\ttitle: this.items[this.current].value,\r\n\t\t\t\t\teditable: this.editableSelect,\r\n\t\t\t\t\tplaceholderText: placeholderTextVal,\r\n\t\t\t\t\tcontent: contentVal,\r\n\t\t\t\t\tshowCancel: this.showCancelSelect,\r\n\t\t\t\t\tcancelText: cancelTextVal,\r\n\t\t\t\t\tcancelColor: cancelColorVal,\r\n\t\t\t\t\tconfirmText: confirmTextVal,\r\n\t\t\t\t\tconfirmColor: confirmColorVal,\r\n\t\t\t\t\tsuccess: (res) => {\r\n\t\t\t\t\t\tthis.exeRet = JSON.stringify(res)\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfail: (res) => {\r\n\t\t\t\t\t\tthis.exeRet = JSON.stringify(res)\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n</script>\r\n\n```"
	},
	"showActionSheet": {
		"name": "## uni.showActionSheet(options) @showactionsheet",
		"description": "从底部向上弹出操作菜单",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ShowActionSheetOptions](#showactionsheetoptions-values) | 是 | - | uni.showActionSheet函数参数定义 |\n#### ShowActionSheetOptions 的属性值 @showactionsheetoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| title | string | 否 | - | 菜单标题 |\n| alertText | string | 否 | - | 警示文案(同菜单标题, app无效) |\n| itemList | Array\\<string\\> | 是 | - | 按钮的文字数组 |\n| itemColor | string | 否 | - | 按钮的文字颜色,字符串格式(iOS默认为系统控件颜色) |\n| popover | [Popover](#popover-values) | 否 | - | 大屏设备弹出原生选择按钮框的指示区域,默认居中显示 |\n| success | (res: [ShowActionSheetSuccess](#showactionsheetsuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### Popover 的属性值 @popover-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| top | number | 是 | - | 指示区域坐标,使用原生 navigationBar 时一般需要加上 navigationBar 的高度 |\n| left | number | 是 | - | 指示区域坐标 |\n| width | number | 是 | - | 指示区域宽度 |\n| height | number | 是 | - | 指示区域高度 |\n\n##### ShowActionSheetSuccess 的属性值 @showactionsheetsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| tapIndex | number | 否 | - | 用户点击的按钮,从上到下的顺序,从0开始 |\n",
		"returnValue": "",
		"compatibility": "### showActionSheet 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | √ | 3.9.0 | 9.0 | √ | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[showActionSheet]([](https://uniapp.dcloud.net.cn/api/ui/prompt.html#showactionsheet))\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.ui.prompt.showToast)\n",
		"example": "### 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/action-sheet/action-sheet.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head :title=\"title\"></page-head>\r\n    <view class=\"uni-list\">\r\n      <radio-group @change=\"radioChange\">\r\n        <radio class=\"uni-list-cell uni-list-cell-pd\" v-for=\"(item, index) in items\" :key=\"item.value\"\r\n          :class=\"index < items.length - 1 ? 'uni-list-cell-line': ''\" :value=\"item.value\" :checked=\"index === current\">\r\n          {{item.name}}\r\n        </radio>\r\n      </radio-group>\r\n    </view>\r\n    <view class=\"uni-list\">\r\n      <view class=\"uni-list-cell uni-list-cell-pd\">\r\n        <view class=\"uni-list-cell-db\">自定义itemColor</view>\r\n        <switch :checked=\"itemColorCustom\" @change=\"itemColorChange\" />\r\n      </view>\r\n      <view class=\"uni-list-cell uni-list-cell-pd\">\r\n        <view class=\"uni-list-cell-db\">超长文本和空文本item</view>\r\n        <switch :checked=\"itemContentLarge\" @change=\"itemContentLargeChange\" />\r\n      </view>\r\n      <view class=\"uni-list-cell uni-list-cell-pd\">\r\n        <view class=\"uni-list-cell-db\">超过6个item</view>\r\n        <switch :checked=\"itemNumLargeSelect\" @change=\"itemNumLargeChange\" />\r\n      </view>\r\n    </view>\r\n    <view class=\"uni-padding-wrap\">\r\n      <view class=\"uni-btn-v\">\r\n        <button class=\"uni-btn-v\" type=\"default\" @tap=\"actionSheetTap\">弹出action sheet</button>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n<script lang=\"uts\">\r\n  type ItemType = {\r\n    value : string,\r\n    name : string,\r\n  }\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'action-sheet',\r\n        itemColorCustom: false,\r\n        itemContentLarge: false,\r\n        itemNumLargeSelect: false,\r\n        items: [{\r\n          value: '标题',\r\n          name: '有标题'\r\n        },\r\n        {\r\n          value: '',\r\n          name: '无标题'\r\n        },\r\n        {\r\n          value: '超长标题测试内容,测试超过显示最大范围之后的样式-超长标题测试内容,测试超过显示最大范围之后的样式',\r\n          name: '超长标题'\r\n        }\r\n        ] as ItemType[],\r\n        current: 0,\r\n      }\r\n    },\n    onLoad(){\n      uni.showActionSheet({\n        title: \"onLoad 调用示例,请手动取消\",\n        itemList:['item1', 'item2'],\n      })\n    },\r\n    methods: {\r\n      radioChange(e : RadioGroupChangeEvent) {\r\n        for (let i = 0; i < this.items.length; i++) {\r\n          if (this.items[i].value === e.detail.value) {\r\n            this.current = i;\r\n            break;\r\n          }\r\n        }\r\n      },\r\n      itemContentLargeChange: function (e : SwitchChangeEvent) {\r\n        this.itemContentLarge = e.detail.value\r\n      },\r\n      itemColorChange: function (e : SwitchChangeEvent) {\r\n        this.itemColorCustom = e.detail.value\r\n      },\r\n      itemNumLargeChange: function (e : SwitchChangeEvent) {\r\n        this.itemNumLargeSelect = e.detail.value\r\n      },\r\n      actionSheetTap() {\r\n\r\n        let itemInfo = ['item1', 'item2', 'item3', 'item4']\r\n\r\n        if (this.itemContentLarge) {\r\n          itemInfo = ['两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船', '水光潋滟晴方好,山色空蒙雨亦奇。 欲把西湖比西子,淡妆浓抹总相宜', '']\r\n        }\n\n        if (this.itemNumLargeSelect) {\r\n          // 大量选项测试,不能超过6个元素 https://uniapp.dcloud.net.cn/api/ui/prompt.html#showactionsheet\r\n          itemInfo = []\n          for (var i = 1; i <= 10; i++) {\r\n            itemInfo.push('两个黄鹂鸣翠柳,一行白鹭上青天');\r\n          }\r\n        }\r\n\r\n        const that = this\r\n        if (this.itemColorCustom) {\r\n          uni.showActionSheet({\r\n            title: this.items[this.current].value,\r\n            itemList: itemInfo,\r\n            itemColor: \"#ff00ff\",\r\n            success: (e) => {\r\n              console.log(e.tapIndex);\r\n              uni.showToast({\r\n                title: \"点击了第\" + e.tapIndex + \"个选项\",\r\n                icon: \"none\"\r\n              })\r\n            },\r\n            fail: (e) => {\r\n              console.log(e);\r\n            }\r\n          })\r\n        } else {\r\n          uni.showActionSheet({\r\n            title: this.items[this.current].value,\r\n            itemList: itemInfo,\r\n            success: (e) => {\r\n              console.log(e.tapIndex);\r\n              uni.showToast({\r\n                title: \"点击了第\" + e.tapIndex + \"个选项\",\r\n                icon: \"none\"\r\n              })\r\n            },\r\n            fail: (e) => {\r\n              console.log(e);\r\n              uni.showToast({\r\n                title: e.errMsg,\r\n                icon: \"none\"\r\n              })\r\n            }\r\n          })\r\n        }\r\n      },\r\n    }\r\n  }\r\n</script>\n\n```"
	},
	"loadFontFace": {
		"name": "## uni.loadFontFace(options) @loadfontface",
		"description": "\r\n动态加载网络字体\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [LoadFontFaceOptions](#loadfontfaceoptions-values) | 是 | - | - |\n#### LoadFontFaceOptions 的属性值 @loadfontfaceoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| global | boolean | 否 | - | 是否全局生效。微信小程序 '2.10.0'起支持全局生效,需在 app.vue 中调用。 |\n| family | string | 是 | - | 定义的字体名称 |\n| source | string | 是 | - | 字体资源的地址 |\n| success | (result: [AsyncApiSuccessResult](#asyncapisuccessresult-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (error: [LoadFontFaceError](#loadfontfaceerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: [AsyncApiResult](#asyncapiresult-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### LoadFontFaceError 的属性值 @loadfontfaceerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 4 \\\\| 99 \\\\| 101 \\\\| 100001 \\\\| 100002 \\\\| 200001 \\\\| 300001 \\\\| 300002 | 是 | - | 错误码<br>- 4: 框架内部异常<br>- 99: page is not ready<br>- 101: 参数错误<br>- 100001: family is null<br>- 100002: source is null<br>- 200001: local font not found<br>- 300001: same source task is loading<br>- 300002: download fail |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| errMsg | string | 是 | - | 统一错误描述信息 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| name | string | 是 | - | - |\n| message | string | 是 | - | - |\n\n##### AsyncApiResult 的属性值 @asyncapiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### LoadFontFaceOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| global | 5.0 | √ | √ | 10.0 | √ | x |\n| family | 5.0 | √ | √ | 10.0 | √ | x |\n| source | 5.0 | √ | √ | 10.0 | √ | x |\n| success | 5.0 | √ | √ | 10.0 | √ | x |\n| fail | 5.0 | √ | √ | 10.0 | √ | x |\n| complete | 5.0 | √ | √ | 10.0 | √ | x |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| Promise<[AsyncApiSuccessResult](#asyncapisuccessresult-values)> | 否 | \n\n#### AsyncApiSuccessResult 的属性值 @asyncapisuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n",
		"compatibility": "### loadFontFace 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | √ | 10.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[loadFontFace](http://uniapp.dcloud.io/api/ui/font?id=loadfontface)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.ui.load-font-face)\n"
	},
	"load-font-face": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/load-font-face/load-font-face.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head title=\"loadFontFace\"></page-head>\r\n    <view class=\"uni-padding-wrap\">\r\n      <text class=\"font-size-20\">全局加载字体:</text>\r\n      <text class=\"font-size-20 line-height-40\" style=\"font-family: UniFontFamily\">font-family: uni.ttf</text>\r\n      <view style=\"flex-direction: row;\">\r\n        <text class=\"font-size-20\" style=\"font-family: UniFontFamily;\">{{\r\n          uniIcon1\r\n        }}</text>\r\n        <text style=\"margin-left:5px;margin-right: 20px;line-height:22px;\">\\ue100</text>\r\n        <text class=\"font-size-20\" style=\"font-family: UniFontFamily;\">{{\r\n          uniIcon2\r\n        }}</text>\r\n        <text style=\"margin-left:5px;line-height:22px;\">\\ue101</text>\r\n      </view>\r\n      <text class=\"uni-common-mt font-size-20\">非全局加载字体:</text>\r\n      <text class=\"font-size-20 line-height-40\" style=\"font-family: AlimamaDaoLiTiTTF\">font-family: 阿里妈妈刀隶体-ttf\r\n        (网络字体下载后生效)</text>\r\n      <text class=\"font-size-20 line-height-40\" style=\"font-family: AlimamaDaoLiTiOTF\">font-family:\r\n        阿里妈妈刀隶体-otf</text>\r\n      <text class=\"item\" style=\"font-family: AlimamaDaoLiTiWOFF\">font-family: 阿里妈妈刀隶体-woff</text>\r\n      <text class=\"item\" style=\"font-family: AlimamaDaoLiTiWOFF2\">font-family: 阿里妈妈刀隶体-woff2</text>\r\n      <button class=\"uni-btn\" @click=\"navigateToChild\">跳转子页面测试字体生效范围</button>\r\n    </view>\r\n  </view>\r\n</template>\r\n<script>\r\n  export default {\r\n    data() {\r\n      return {\r\n        uniIcon1: '\\ue100',\r\n        uniIcon2: '\\ue101',\r\n      }\r\n    },\r\n    onLoad() {\r\n      uni.loadFontFace({\r\n        global: true,\r\n        family: 'UniFontFamily',\r\n        source: '/static/font/uni.ttf',\r\n        success() {\r\n          console.log('global loadFontFace uni.ttf success')\r\n        },\r\n        fail(error) {\r\n          console.warn('global loadFontFace uni.ttf fail', error.errMsg)\r\n        },\r\n      })\r\n      uni.loadFontFace({\r\n        family: 'AlimamaDaoLiTiTTF',\r\n        source:\r\n          'https://native-res.dcloud.net.cn/uni-app-x/static/font/AlimamaDaoLiTi.ttf',\r\n        success() {\r\n          console.log('loadFontFace Remote AlimamaDaoLiTi.ttf success')\r\n        },\r\n        fail(error) {\r\n          console.warn('loadFontFace Remote AlimamaDaoLiTi.ttf fail', error.errMsg)\r\n        },\r\n      })\r\n      uni.loadFontFace({\r\n        family: 'AlimamaDaoLiTiOTF',\r\n        source: '/static/font/AlimamaDaoLiTi.otf',\r\n        success() {\r\n          console.log('loadFontFace AlimamaDaoLiTi.otf success')\r\n        },\r\n        fail(error) {\r\n          console.warn('loadFontFace AlimamaDaoLiTi.otf fail', error.errMsg)\r\n        },\r\n      })\r\n      uni.loadFontFace({\r\n        family: 'AlimamaDaoLiTiWOFF',\r\n        source: '/static/font/AlimamaDaoLiTi.woff',\r\n        success() {\r\n          console.log('loadFontFace AlimamaDaoLiTi.woff success')\r\n        },\r\n        fail(error) {\r\n          console.warn('loadFontFace AlimamaDaoLiTi.woff fail', error.errMsg)\r\n        },\r\n      })\r\n      uni.loadFontFace({\r\n        family: 'AlimamaDaoLiTiWOFF2',\r\n        source: '/static/font/AlimamaDaoLiTi.woff2',\r\n        success() {\r\n          console.log('loadFontFace AlimamaDaoLiTi.woff2 success')\r\n        },\r\n        fail(error) {\r\n          console.warn('loadFontFace AlimamaDaoLiTi.woff2 fail', error.errMsg)\r\n        },\r\n      })\r\n    },\r\n    methods: {\r\n      navigateToChild() {\r\n        uni.navigateTo({\r\n          url: '/pages/API/load-font-face/load-font-face-child',\r\n        })\r\n      },\r\n    },\r\n  }\r\n</script>\r\n\r\n<style>\r\n  .font-size-20 {\r\n    font-size: 20px;\r\n  }\r\n\r\n  .line-height-40 {\r\n    line-height: 40px;\r\n  }\r\n</style>\n```"
	},
	"request": {
		"name": "## uni.request(param) @request",
		"description": "发起网络请求。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| param | [RequestOptions\\<T>](#requestoptions-values) | 是 | - | 网络请求参数 |\n#### RequestOptions\\<T> 的属性值 @requestoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| url | string | 是 | - | 开发者服务器接口地址 |\n| data | any | 否 | null | 请求的参数 UTSJSONObject\\|string类型 |\n| header | [UTSJSONObject](/uts/buildin-object-api/utsjsonobject.md) | 否 | null | 设置请求的 header,header 中不能设置 Referer |\n| method | \"GET\" \\\\| \"POST\" \\\\| \"PUT\" \\\\| \"PATCH\" \\\\| \"DELETE\" \\\\| \"HEAD\" \\\\| \"OPTIONS\" | 否 | \"GET\" | 请求方法<br>如果设置的值不在取值范围内,会以GET方法进行请求。 |\n| timeout | number | 否 | 60000 | 超时时间,单位 ms |\n| dataType | string | 否 | \"json\" | 如果设为 json,会对返回的数据进行一次 JSON.parse,非 json 不会进行 JSON.parse |\n| responseType | string | 否 | - | 设置响应的数据类型。  |\n| sslVerify | boolean | 否 | - | 验证 ssl 证书  |\n| firstIpv4 | boolean | 否 | false | DNS解析时优先使用ipv4 |\n| success | (option: [RequestSuccess\\<T>](#requestsuccess-values)) => void | 否 | null | 网络请求成功回调。 |\n| fail | (option: [RequestFail](#requestfail-values)) => void | 否 | null | 网络请求失败回调。 |\n| complete | (option: any) => void | 否 | null | 网络请求完成回调,成功或者失败都会调用。 |\n\n##### RequestSuccess\\<T> 的属性值 @requestsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| data | any | 否 | - | 开发者服务器返回的数据 |\n| statusCode | number | 是 | - | 开发者服务器返回的 HTTP 状态码 |\n| header | any | 是 | - | 开发者服务器返回的 HTTP Response Header |\n| cookies | Array\\<string\\> | 是 | - | 开发者服务器返回的 cookies,格式为字符串数组 |\n\n##### RequestFail 的属性值 @requestfail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 5 \\\\| 1000 \\\\| 100001 \\\\| 100002 \\\\| 600003 \\\\| 600009 \\\\| 602001 | 是 | - | 错误码<br>- 5 接口超时<br>- 1000 服务端系统错误<br>- 100001 json数据解析错误<br>- 100002 错误信息json解析失败<br>- 600003 网络中断<br>- 600009 URL格式不合法<br>- 602001 request系统错误(3.99+) |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| [RequestTask](#requesttask-values) | 否 | \n\n#### RequestTask 的方法 @requesttask-values \n\n#### abort() @abort\n中断网络请求。\n\n\n##### abort 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | 3.9+ |\n\n\n##### 参见\n[abort](https://uniapp.dcloud.net.cn/api/request/request.html#request)\n",
		"compatibility": "### request 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | 3.9+ |\n",
		"tutorial": "\n### 参见\n[request](https://uniapp.dcloud.net.cn/api/request/request.html)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.request)\n",
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/request/request.uvue) \n ```html\n<template>\r\n  <view style=\"flex: 1;\">\r\n    <view class=\"uni-padding-wrap uni-common-mt\">\r\n      <view class=\"uni-common-mt\" style=\"border-width: 2rpx;border-style: solid; border-radius: 4rpx;\">\r\n        <textarea :value=\"res\" class=\"uni-textarea\"></textarea>\r\n      </view>\r\n      <view>\r\n        <text>地址 : {{ host + url}}</text>\r\n        <text>请求方式 : {{method}}</text>\r\n      </view>\r\n      <view class=\"uni-btn-v uni-common-mt\">\r\n        <button type=\"primary\" @click=\"sendRequest\">发起请求</button>\r\n      </view>\r\n    </view>\r\n    <scroll-view style=\"flex: 1;\" show-scrollbar=\"true\">\r\n      <view style=\"padding: 20rpx;\">\r\n        <text>设置请求方式</text>\r\n        <view class=\"uni-common-pb\"></view>\r\n        <view style=\"flex-direction: row;flex-wrap: wrap;\">\r\n          <button style=\"padding: 5rpx; margin-right: 10rpx;\" type=\"primary\" size=\"mini\"\r\n            @click=\"changeMethod('GET')\">GET</button>\r\n          <button style=\"padding: 5rpx; margin-right: 10rpx; \" type=\"primary\" size=\"mini\"\r\n            @click=\"changeMethod('POST')\">POST</button>\r\n          <button style=\"padding: 5rpx; margin-right: 10rpx; \" type=\"primary\" size=\"mini\"\r\n            @click=\"changeMethod('PUT')\">PUT</button>\r\n          <button style=\"padding: 5rpx; margin-right: 10rpx;\" type=\"primary\" size=\"mini\"\r\n            @click=\"changeMethod('DELETE')\">DELETE</button>\r\n          <button style=\"padding: 5rpx; margin-right: 10rpx; \" type=\"primary\" size=\"mini\"\r\n            @click=\"changeMethod('PATCH')\">PATCH</button>\r\n          <button style=\"padding: 5rpx;margin-right: 10rpx;\" type=\"primary\" size=\"mini\"\r\n            @click=\"changeMethod('OPTIONS')\">OPTIONS</button>\r\n          <button style=\"padding: 5rpx;\" type=\"primary\" size=\"mini\" @click=\"changeMethod('HEAD')\">HEAD</button>\r\n        </view>\r\n      </view>\r\n      <view style=\"padding: 20rpx;\">\r\n        <text>请求返回错误码的接口(默认为GET)</text>\r\n        <view class=\"uni-common-pb\"></view>\r\n        <view style=\"flex-direction: row;flex-wrap: wrap;\">\r\n          <button style=\"padding: 5rpx;\" type=\"primary\" size=\"mini\" v-for=\"(item, index) in errorCodeUrls\" :key=\"index\"\r\n            @click=\"changeUrl(item)\">{{item}}</button>\r\n        </view>\r\n      </view>\r\n      <view style=\"padding: 20rpx;\">\r\n        <text>请求不同header的接口(默认为GET)</text>\r\n        <view class=\"uni-common-pb\"></view>\r\n        <view style=\"flex-direction: row;flex-wrap: wrap;\">\r\n          <button style=\"padding: 5rpx;\" type=\"primary\" size=\"mini\" v-for=\"(item, index) in headerUrls\" :key=\"index\"\r\n            @click=\"changeUrl(item)\">{{item}}</button>\r\n        </view>\r\n      </view>\r\n      <view style=\"padding: 20rpx;\">\r\n        <text>请求不同content-type的接口(默认为GET)</text>\r\n        <view class=\"uni-common-pb\"></view>\r\n        <view style=\"flex-direction: row;flex-wrap: wrap;\">\r\n          <button style=\"padding: 5rpx;\" type=\"primary\" size=\"mini\" v-for=\"(item, index) in contentTypeUrls\"\r\n            :key=\"index\" @click=\"changeUrl(item)\">{{item}}</button>\r\n        </view>\r\n      </view>\r\n\r\n      <view style=\"padding: 20rpx;\">\r\n        <text>POST请求(有body)</text>\r\n        <view class=\"uni-common-pb\"></view>\r\n        <view style=\"flex-direction: row;flex-wrap: wrap;\">\r\n          <button style=\"padding: 5rpx;\" type=\"primary\" size=\"mini\" v-for=\"(item, index) in postUrls\" :key=\"index\"\r\n            @click=\"changeUrlFromPost(item)\">{{item}}</button>\r\n        </view>\r\n      </view>\r\n    </scroll-view>\r\n  </view>\r\n</template>\r\n<script>\r\n  const duration = 2000\r\n  const methodMap = {\r\n    \"GET\": \"/api/http/method/get\",\r\n    \"POST\": \"/api/http/method/post\",\r\n    \"PUT\": \"/api/http/method/put\",\r\n    \"DELETE\": \"/api/http/method/delete\",\r\n    \"PATCH\": \"/api/http/method/patch\",\r\n    \"OPTIONS\": \"/api/http/method/options\",\r\n    \"HEAD\": \"/api/http/method/head\"\r\n  }\r\n\r\n\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'request',\r\n        res: '',\r\n        task: null as RequestTask | null,\r\n        host: \"http://request.dcloud.net.cn\",\r\n        url: \"/api/http/method/get\",\r\n        method: \"GET\" as RequestMethod | null,\r\n        data: null as any | null,\r\n        header: null as UTSJSONObject | null,\r\n        errorCodeUrls: [\r\n          \"/api/http/statusCode/200\",\r\n          \"/api/http/statusCode/204\",\r\n          \"/api/http/statusCode/301\",\r\n          \"/api/http/statusCode/302\",\r\n          \"/api/http/statusCode/307\",\r\n          \"/api/http/statusCode/400\",\r\n          \"/api/http/statusCode/401\",\r\n          \"/api/http/statusCode/403\",\r\n          \"/api/http/statusCode/404\",\r\n          \"/api/http/statusCode/405\",\r\n          \"/api/http/statusCode/500\",\r\n          \"/api/http/statusCode/502\",\r\n          \"/api/http/statusCode/503\",\r\n          \"/api/http/statusCode/504\",\r\n        ],\r\n        headerUrls: [\r\n          \"/api/http/header/ua\",\r\n          \"/api/http/header/referer\",\r\n          \"/api/http/header/requestCookie\",\r\n          \"/api/http/header/setCookie\",\r\n          \"/api/http/header/deleteCookie\"\r\n        ],\r\n        contentTypeUrls: [\r\n          \"/api/http/contentType/text/plain\",\r\n          \"/api/http/contentType/text/html\",\r\n          \"/api/http/contentType/text/xml\",\r\n          \"/api/http/contentType/image/gif\",\r\n          \"/api/http/contentType/image/jpeg\",\r\n          \"/api/http/contentType/image/png\",\r\n          \"/api/http/contentType/application/json\",\r\n          \"/api/http/contentType/application/octetStream\",\r\n        ],\r\n        postUrls: [\r\n          \"/api/http/contentType/json\",\r\n          \"/api/http/contentType/xWwwFormUrlencoded\",\r\n        ],\r\n        //自动化测试例专用\r\n        jest_result: false\r\n      }\r\n    },\r\n    onLoad() {\r\n    },\r\n    onUnload() {\r\n      uni.hideLoading();\r\n      this.task?.abort();\r\n    },\r\n    methods: {\r\n      changeMethod(e : RequestMethod) {\r\n        this.method = e;\r\n        this.url = methodMap[e] as string;\r\n        this.data = null;\r\n        this.header = null;\r\n      },\r\n      changeUrl(e : string) {\r\n        this.method = \"GET\";\r\n        this.url = e;\r\n        this.data = null;\r\n        this.header = null;\r\n      },\r\n      changeUrlFromPost(e : string) {\r\n        this.method = \"POST\";\r\n        this.url = e;\r\n        switch (e) {\r\n          case \"/api/http/contentType/json\":\r\n            this.header = {\r\n              \"Content-Type\": \"application/json\"\r\n            };\r\n            this.data = {\r\n              \"hello\": \"world\"\r\n            };\r\n            break;\r\n          case \"/api/http/contentType/xWwwFormUrlencoded\":\r\n            this.header = {\r\n              \"Content-Type\": \"application/x-www-form-urlencoded\"\r\n            };\r\n            this.data = \"hello=world\";\r\n            break;\r\n        }\r\n      },\r\n      sendRequest() {\r\n        uni.showLoading({\r\n          title: \"请求中...\"\r\n        })\r\n        this.task = uni.request({\r\n          url: this.host + this.url,\r\n          // dataType: \"json\",\r\n          // responseType: \"json\",\r\n          method: this.method,\r\n          data: this.data,\r\n          header: this.header,\r\n          timeout: 6000,\r\n          sslVerify: false,\r\n          withCredentials: false,\r\n          firstIpv4: false,\r\n          success: (res) => {\r\n            console.log('request success', JSON.stringify(res.data))\r\n            uni.showToast({\r\n              title: '请求成功',\r\n              icon: 'success',\r\n              mask: true,\r\n              duration: duration\r\n            });\r\n            this.res = '请求结果 : ' + JSON.stringify(res);\r\n          },\r\n          fail: (err) => {\r\n            console.log('request fail', err);\r\n            uni.showModal({\r\n              content: err.errMsg,\r\n              showCancel: false\r\n            });\r\n          },\r\n          complete: () => {\r\n            uni.hideLoading()\r\n          },\r\n        });\r\n      },\r\n      //自动化测试例专用\r\n      jest_request() {\r\n        uni.request({\r\n          url: this.host + this.url,\r\n          // dataType: \"json\",\r\n          // responseType: \"json\",\r\n          method: this.method,\r\n          data: this.data,\r\n          header: this.header,\r\n          timeout: 6000,\r\n          sslVerify: false,\r\n          withCredentials: false,\r\n          firstIpv4: false,\r\n          success: () => {\r\n            this.jest_result = true;\r\n          },\r\n          fail: () => {\r\n            this.jest_result = false;\r\n          },\r\n        });\r\n      }\r\n    }\r\n  }\r\n</script>\n```"
	},
	"uploadFile": {
		"name": "## uni.uploadFile(options) @uploadfile",
		"description": "将本地资源上传到开发者服务器。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [UploadFileOptions](#uploadfileoptions-values) | 是 | - | - |\n#### UploadFileOptions 的属性值 @uploadfileoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| url | string | 是 | - | 开发者服务器 url |\n| filePath | string | 否 | null | 要上传文件资源的路径 |\n| name | string | 否 | null | 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 |\n| files | Array\\<[UploadFileOptionFiles](#uploadfileoptionfiles-values)\\> | 否 | null | 需要上传的文件列表。 |\n| header | [UTSJSONObject](/uts/buildin-object-api/utsjsonobject.md) | 否 | null | HTTP 请求 Header, header 中不能设置 Referer |\n| formData | [UTSJSONObject](/uts/buildin-object-api/utsjsonobject.md) | 否 | null | HTTP 请求中其他额外的 form data |\n| timeout | number | 否 | 120000 | 超时时间,单位 ms |\n| success | (result: [UploadFileSuccess](#uploadfilesuccess-values)) => void | 否 | null | 成功返回的回调函数 |\n| fail | (result: [UploadFileFail](#uploadfilefail-values)) => void | 否 | null | 失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 结束的回调函数(调用成功、失败都会执行) |\n\n##### UploadFileOptionFiles 的属性值 @uploadfileoptionfiles-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| name | string | 否 | \"file\" | multipart 提交时,表单的项目名,默认为 file,如果 name 不填或填的值相同,可能导致服务端读取文件时只能读取到一个文件。 |\n| uri | string | 是 | - | 要上传文件资源的路径 |\n\n##### UploadFileSuccess 的属性值 @uploadfilesuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| data | string | 是 | - | 开发者服务器返回的数据 |\n| statusCode | number | 是 | - | 开发者服务器返回的 HTTP 状态码 |\n\n##### UploadFileFail 的属性值 @uploadfilefail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 5 \\\\| 1000 \\\\| 100001 \\\\| 100002 \\\\| 600003 \\\\| 600009 \\\\| 602001 | 是 | - | 错误码<br>- 5 接口超时<br>- 1000 服务端系统错误<br>- 100001 json数据解析错误<br>- 100002 错误信息json解析失败<br>- 600003 网络中断<br>- 600009 URL格式不合法<br>- 602001 request系统错误(3.99+) |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| [UploadTask](#uploadtask-values) | 否 | \n\n#### UploadTask 的方法 @uploadtask-values \n\n#### abort() @abort\n中断上传任务。\n\n\n##### abort 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[abort](https://uniapp.dcloud.net.cn/api/request/network-file.html#uploadfile)\n\n#### onProgressUpdate(callback) @onprogressupdate\n监听上传进度变化。\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnProgressUpdateResult](#onprogressupdateresult-values)) => void | 是 | - | - |\n###### OnProgressUpdateResult 的属性值 @onprogressupdateresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| progress | number | 是 | - | 上传进度百分比 |\n| totalBytesSent | number | 是 | - | 已经上传的数据长度,单位 Bytes |\n| totalBytesExpectedToSend | number | 是 | - | 预期需要上传的数据总长度,单位 Bytes |\n\n\n##### onProgressUpdate 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[onProgressUpdate](https://uniapp.dcloud.net.cn/api/request/network-file.html#uploadfile)\n",
		"compatibility": "### uploadFile 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[uploadFile](https://uniapp.dcloud.net.cn/api/request/network-file.html#uploadfile)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.upload-file)\n"
	},
	"upload-file": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/upload-file/upload-file.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n  <!-- #endif -->\r\n    <view>\r\n      <page-head :title=\"title\"></page-head>\r\n      <view class=\"uni-padding-wrap uni-common-mt\">\r\n        <view class=\"demo\">\r\n          <image v-if=\"imageSrc\" :src=\"imageSrc\" class=\"image\" mode=\"widthFix\"></image>\r\n          <text v-else class=\"uni-hello-addfile\" @click=\"chooseImage\">+ 选择图片</text>\r\n        </view>\r\n      </view>\r\n    </view>\r\n  <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n<script>\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'uploadFile',\r\n        imageSrc: '',\r\n        task: null as UploadTask | null,\r\n        //自动化测试例专用\r\n        jest_result: false,\r\n      }\r\n    },\r\n    onLoad() {\r\n    },\r\n    onUnload() {\r\n      this.imageSrc = '';\r\n      uni.hideLoading();\r\n      this.task?.abort();\r\n    },\r\n    methods: {\r\n      chooseImage: function () {\r\n        uni.chooseImage({\r\n          count: 1,\r\n          sizeType: ['compressed'],\r\n          sourceType: ['album'],\r\n          success: (res) => {\r\n            console.log('chooseImage success, temp path is', res.tempFilePaths[0])\r\n            var imageSrc = res.tempFilePaths[0]\r\n            uni.showLoading({\r\n              title: '上传中'\r\n            })\r\n            this.task = uni.uploadFile({\r\n              url: 'https://unidemo.dcloud.net.cn/upload', //仅为示例,非真实的接口地址\r\n              filePath: imageSrc,\r\n              name: 'file',\r\n              formData: {\r\n                'user': 'test'\r\n              },\r\n              success: (res) => {\r\n                console.log('uploadImage success, res is:', res)\r\n                uni.hideLoading();\r\n                uni.showToast({\r\n                  title: '上传成功',\r\n                  icon: 'success',\r\n                  duration: 1000\r\n                })\r\n                this.imageSrc = imageSrc\r\n              },\r\n              fail: (err) => {\r\n                console.log('uploadImage fail', err);\r\n                uni.hideLoading();\r\n                uni.showModal({\r\n                  content: err.errMsg,\r\n                  showCancel: false\r\n                });\r\n              },\r\n            });\r\n          },\r\n          fail: (err) => {\r\n            console.log('chooseImage fail', err)\r\n          }\r\n        })\r\n      },\r\n      //自动化测试例专用\r\n      jest_uploadFile() {\r\n        const imageSrc = \"/static/uni.png\";\r\n        this.task = uni.uploadFile({\r\n          url: 'https://unidemo.dcloud.net.cn/upload', //仅为示例,非真实的接口地址\r\n          filePath: imageSrc,\r\n          name: 'file',\r\n          formData: {\r\n            'user': 'test'\r\n          },\r\n          success: () => {\r\n            this.jest_result = true;\r\n          },\r\n          fail: () => {\r\n            this.jest_result = false;\r\n          },\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n  .image {\r\n    width: 100%;\r\n  }\r\n\r\n  .demo {\r\n    background: #fff;\r\n    padding: 50rpx;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n\r\n  .uni-hello-addfile {\r\n    text-align: center;\r\n    background: #fff;\r\n    padding: 50rpx;\r\n    margin-top: 10px;\r\n    font-size: 38rpx;\r\n    color: #808080;\r\n  }\r\n</style>\n```"
	},
	"downloadFile": {
		"name": "## uni.downloadFile(options) @downloadfile",
		"description": "下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [DownloadFileOptions](#downloadfileoptions-values) | 是 | - | - |\n#### DownloadFileOptions 的属性值 @downloadfileoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| url | string | 是 | - | 下载资源的 url |\n| header | [UTSJSONObject](/uts/buildin-object-api/utsjsonobject.md) | 否 | null | HTTP 请求 Header,header 中不能设置 Referer |\n| filePath | string | 否 | null | 指定文件下载路径 支持相对路径与绝对路径,例: `/imgs/pic.png`、`/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/temp/imgs/pic.png` 并且支持指定下载目录,例: `/imgs/` |\n| timeout | number | 否 | 120000 | 超时时间,单位 ms |\n| success | (result: [DownloadFileSuccess](#downloadfilesuccess-values)) => void | 否 | null | 下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: '文件的临时路径'} |\n| fail | (result: [DownloadFileFail](#downloadfilefail-values)) => void | 否 | null | 失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 结束的回调函数(调用成功、失败都会执行) |\n\n##### DownloadFileSuccess 的属性值 @downloadfilesuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| tempFilePath | string | 是 | - | 临时文件路径,下载后的文件会存储到一个临时文件 |\n| statusCode | number | 是 | - | 开发者服务器返回的 HTTP 状态码 |\n\n##### DownloadFileFail 的属性值 @downloadfilefail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 5 \\\\| 1000 \\\\| 100001 \\\\| 100002 \\\\| 600003 \\\\| 600009 \\\\| 602001 | 是 | - | 错误码<br>- 5 接口超时<br>- 1000 服务端系统错误<br>- 100001 json数据解析错误<br>- 100002 错误信息json解析失败<br>- 600003 网络中断<br>- 600009 URL格式不合法<br>- 602001 request系统错误(3.99+) |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| [DownloadTask](#downloadtask-values) | 否 | \n\n#### DownloadTask 的方法 @downloadtask-values \n\n#### abort() @abort\n中断下载任务。\n\n\n##### abort 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[abort](https://uniapp.dcloud.net.cn/api/request/network-file.html#downloadfile)\n\n#### onProgressUpdate(callback) @onprogressupdate\n监听下载进度变化。\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnProgressDownloadResult](#onprogressdownloadresult-values)) => void | 是 | - | - |\n###### OnProgressDownloadResult 的属性值 @onprogressdownloadresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| progress | number | 是 | - | 下载进度百分比 |\n| totalBytesWritten | number | 是 | - | 已经下载的数据长度,单位 Bytes |\n| totalBytesExpectedToWrite | number | 是 | - | 预期需要下载的数据总长度,单位 Bytes |\n\n\n##### onProgressUpdate 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[onProgressUpdate](https://uniapp.dcloud.net.cn/api/request/network-file.html#downloadfile)\n",
		"compatibility": "### downloadFile 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[downloadFile](https://uniapp.dcloud.net.cn/api/request/network-file.html#downloadfile)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.download-file)\n"
	},
	"download-file": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/download-file/download-file.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n  <!-- #endif -->\r\n    <view>\r\n      <page-head :title=\"title\"></page-head>\r\n      <view class=\"uni-padding-wrap uni-common-mt\">\r\n        <view v-if=\"imageSrc\" class=\"image-container\">\r\n          <image class=\"img\" :src=\"imageSrc\" mode=\"center\" />\r\n        </view>\r\n        <view v-else style=\"margin-top: 50px\">\r\n          <text class=\"uni-hello-text\">点击按钮下载服务端示例图片(下载网络文件到本地临时目录)</text>\r\n          <view class=\"uni-btn-v\">\r\n            <button type=\"primary\" @tap=\"downloadImage\">下载</button>\r\n          </view>\r\n        </view>\r\n      </view>\r\n    </view>\r\n  <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n<script>\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'downloadFile',\r\n        imageSrc: '',\r\n        task: null as DownloadTask | null,\r\n        //自动化测试例专用\r\n        jest_result: false\r\n      }\r\n    },\r\n    onLoad() {\r\n    },\r\n    onUnload() {\r\n      this.imageSrc = '';\r\n      uni.hideLoading();\r\n      this.task?.abort();\r\n    },\r\n    methods: {\r\n      downloadImage: function () {\r\n        uni.showLoading({\r\n          title: '下载中'\r\n        })\r\n        var self = this\r\n        this.task = uni.downloadFile({\r\n          url: \"https://web-assets.dcloud.net.cn/unidoc/zh/uni-app.png\",\r\n          success: (res) => {\r\n            console.log('downloadFile success, res is', res)\r\n            self.imageSrc = res.tempFilePath;\r\n            uni.hideLoading();\r\n          },\r\n          fail: (err) => {\r\n            console.log('downloadFile fail, err is:', err)\r\n            uni.hideLoading();\r\n          }\r\n        });\r\n        this.task?.onProgressUpdate((update) => {\r\n          console.log(\"progress : \", update.progress);\r\n        })\r\n      },\r\n      //自动化测试例专用\r\n      jest_downloadFile() {\r\n        uni.downloadFile({\r\n          url: \"https://web-assets.dcloud.net.cn/unidoc/zh/uni-app.png\",\r\n          success: () => {\r\n            this.jest_result = true\r\n          },\r\n          fail: () => {\r\n            this.jest_result = false\r\n          }\r\n        });\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n  .img {\r\n    width: 500rpx;\r\n    height: 500rpx;\r\n    margin: 0 auto;\r\n  }\r\n\r\n  .image-container {\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n</style>\n```"
	},
	"getNetworkType": {
		"name": "## uni.getNetworkType(options) @getnetworktype",
		"description": "获取网络类型",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetNetworkTypeOptions](#getnetworktypeoptions-values) | 是 | - | - |\n#### GetNetworkTypeOptions 的属性值 @getnetworktypeoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (result: [GetNetworkTypeSuccess](#getnetworktypesuccess-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetNetworkTypeSuccess 的属性值 @getnetworktypesuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| networkType | string | 是 | - | 网络类型 |\n",
		"returnValue": "",
		"compatibility": "### getNetworkType 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[getNetworkType](http://uniapp.dcloud.io/api/system/network?id=getnetworktype)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.get-network-type)\n"
	},
	"get-network-type": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-network-type/get-network-type.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head :title=\"title\"></page-head>\r\n    <view class=\"uni-padding-wrap uni-common-mt\">\r\n      <view style=\"background:#FFFFFF; padding:40rpx;\">\r\n        <view class=\"uni-center\">网络状态</view>\r\n        <view v-if=\"hasNetworkType == false\">\r\n          <view class=\"uni-center uni-common-mt\">未获取</view>\r\n          <view class=\"uni-center uni-common-mt\">请点击下面按钮获取网络状态</view>\r\n        </view>\r\n        <view v-if=\"hasNetworkType == true\">\r\n          <view class=\"uni-center uni-common-mt\">{{networkType}}</view>\r\n        </view>\r\n      </view>\r\n      <view class=\"uni-btn-v uni-common-mt\">\r\n        <button type=\"primary\" @tap=\"getNetworkType\">获取设备网络状态</button>\r\n        <button class=\"uni-common-mt\" @tap=\"clear\">清空</button>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n<script>\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'getNetworkType',\r\n        hasNetworkType: false,\r\n        networkType: '',\r\n        connectedWifi: '',\r\n        //自动化测试例专用\r\n        jest_result: false,\r\n      }\r\n    },\r\n    onLoad() {\r\n    },\r\n    onUnload: function () {\r\n      this.networkType = '';\r\n      this.hasNetworkType = false;\r\n    },\r\n    methods: {\r\n      getNetworkType: function () {\r\n        uni.getNetworkType({\r\n          success: (res) => {\r\n            console.log(res)\r\n            this.hasNetworkType = true;\r\n            this.networkType = res.networkType\r\n          },\r\n          fail: () => {\r\n            uni.showModal({\r\n              content: '获取失败!',\r\n              showCancel: false\r\n            })\r\n          }\r\n        })\r\n      },\r\n      clear: function () {\r\n        this.hasNetworkType = false;\r\n        this.networkType = '';\r\n        this.connectedWifi = '';\r\n      },\r\n      //自动化测试例专用\r\n      jest_getNetworkType() {\r\n        uni.getNetworkType({\r\n          success: () => {\r\n            this.jest_result = true;\r\n          },\r\n          fail: () => {\r\n            this.jest_result = false;\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\n```"
	},
	"connectSocket": {
		"name": "## connectSocket(options) @connectsocket",
		"description": "创建一个 WebSocket 连接。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ConnectSocketOptions](#connectsocketoptions-values) | 是 | - | - |\n#### ConnectSocketOptions 的属性值 @connectsocketoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| url | string | 是 | - | 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名 |\n| header | [UTSJSONObject](/uts/buildin-object-api/utsjsonobject.md) | 否 | null | HTTP 请求 Header,header 中不能设置 Referer |\n| protocols | Array\\<string\\> | 否 | null | 子协议数组 |\n| success | (result: [ConnectSocketSuccess](#connectsocketsuccess-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [ConnectSocketFail](#connectsocketfail-values)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ConnectSocketSuccess 的属性值 @connectsocketsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n##### ConnectSocketFail 的属性值 @connectsocketfail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | 错误码 - 600009 URL格式不合法 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [SocketTask](#sockettask-values) | \n\n#### SocketTask 的方法 @sockettask-values \n\n#### send(options) @send\n通过 WebSocket 连接发送数据\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SendSocketMessageOptions](#sendsocketmessageoptions-values) | 是 | - | - |\n###### SendSocketMessageOptions 的属性值 @sendsocketmessageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| data | any | 是 | - | 需要发送的内容 |\n| success | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [SendSocketMessageFail](#sendsocketmessagefail-values)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### SendSocketMessageFail 的属性值 @sendsocketmessagefail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 10001 \\\\| 10002 \\\\| 602001 | 是 | - | 错误码<br>- 10001 发送数据超限,发送队列不能超过16M大小。<br>- 10002 websocket未连接<br>- 602001 websocket系统错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n\n##### send 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[send](https://uniapp.dcloud.net.cn/api/request/socket-task.html#sockettask-send)\n\n#### close(options) @close\n关闭 WebSocket 连接\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [CloseSocketOptions](#closesocketoptions-values) | 是 | - | - |\n###### CloseSocketOptions 的属性值 @closesocketoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| code | number | 否 | 1000 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭) |\n| reason | string | 否 | \"\" | 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符) |\n| success | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n\n##### close 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[close](https://uniapp.dcloud.net.cn/api/request/socket-task.html#sockettask-close)\n\n#### onOpen(callback) @onopen\n监听 WebSocket 连接打开事件\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnSocketOpenCallbackResult](#onsocketopencallbackresult-values)) => void | 是 | - | - |\n###### OnSocketOpenCallbackResult 的属性值 @onsocketopencallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| header | any | 是 | - | 连接成功的 HTTP 响应 Header |\n\n\n##### onOpen 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[onOpen](https://uniapp.dcloud.net.cn/api/request/socket-task.html#sockettask-onopen)\n\n#### onClose(callback) @onclose\n监听 WebSocket 连接关闭事件\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: any) => void | 是 | - | - |\n\n##### onClose 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[onClose](https://uniapp.dcloud.net.cn/api/request/socket-task.html#sockettask-onclose)\n\n#### onError(callback) @onerror\n监听 WebSocket 错误\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 是 | - | - |\n\n##### onError 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[onError](https://uniapp.dcloud.net.cn/api/request/socket-task.html#sockettask-onerror)\n\n#### onMessage(callback) @onmessage\n监听 WebSocket 接受到服务器的消息事件\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnSocketMessageCallbackResult](#onsocketmessagecallbackresult-values)) => void | 是 | - | - |\n###### OnSocketMessageCallbackResult 的属性值 @onsocketmessagecallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| data | any | 是 | - | 服务器返回的消息 |\n\n\n##### onMessage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n\n\n##### 参见\n[onMessage](https://uniapp.dcloud.net.cn/api/request/socket-task.html#sockettask-onmessage)\n",
		"compatibility": "### connectSocket 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[connectSocket](https://uniapp.dcloud.net.cn/api/request/websocket.html#connectsocket)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.websocket-global.connectSocket)\n"
	},
	"onSocketOpen": {
		"name": "## onSocketOpen(options) @onsocketopen",
		"description": "监听WebSocket连接打开事件。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | (result: [OnSocketOpenCallbackResult](#onsocketopencallbackresult-values)) => void | 是 | - | - |",
		"returnValue": "",
		"compatibility": "### onSocketOpen 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[onSocketOpen](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketopen)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.websocket-global.onSocketOpen)\n"
	},
	"onSocketError": {
		"name": "## onSocketError(callback) @onsocketerror",
		"description": "下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnSocketErrorCallbackResult](#onsocketerrorcallbackresult-values)) => void | 是 | - | - |\n#### OnSocketErrorCallbackResult 的属性值 @onsocketerrorcallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | 错误信息 |\n",
		"returnValue": "",
		"compatibility": "### onSocketError 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[onSocketError](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketerror)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.websocket-global.onSocketError)\n"
	},
	"sendSocketMessage": {
		"name": "## sendSocketMessage(options) @sendsocketmessage",
		"description": "通过 WebSocket 连接发送数据,需要先 uni.connectSocket,并在 uni.onSocketOpen 回调之后才能发送。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SendSocketMessageOptions](#sendsocketmessageoptions-values) | 是 | - | - |\n#### SendSocketMessageOptions 的属性值 @sendsocketmessageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| data | any | 是 | - | 需要发送的内容 |\n| success | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [SendSocketMessageFail](#sendsocketmessagefail-values)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SendSocketMessageFail 的属性值 @sendsocketmessagefail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 10001 \\\\| 10002 \\\\| 602001 | 是 | - | 错误码<br>- 10001 发送数据超限,发送队列不能超过16M大小。<br>- 10002 websocket未连接<br>- 602001 websocket系统错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### sendSocketMessage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[sendSocketMessage](https://uniapp.dcloud.net.cn/api/request/websocket.html#sendsocketmessage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.websocket-global.sendSocketMessage)\n"
	},
	"onSocketMessage": {
		"name": "## onSocketMessage(callback) @onsocketmessage",
		"description": "监听WebSocket接受到服务器的消息事件。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnSocketMessageCallbackResult](#onsocketmessagecallbackresult-values)) => void | 是 | - | - |\n#### OnSocketMessageCallbackResult 的属性值 @onsocketmessagecallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| data | any | 是 | - | 服务器返回的消息 |\n",
		"returnValue": "",
		"compatibility": "### onSocketMessage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[onSocketMessage](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketmessage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.websocket-global.onSocketMessage)\n"
	},
	"closeSocket": {
		"name": "## closeSocket(options) @closesocket",
		"description": "关闭 WebSocket 连接。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [CloseSocketOptions](#closesocketoptions-values) | 是 | - | - |\n#### CloseSocketOptions 的属性值 @closesocketoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| code | number | 否 | 1000 | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭) |\n| reason | string | 否 | \"\" | 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符) |\n| success | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: [GeneralCallbackResult](#generalcallbackresult-values)) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n",
		"returnValue": "",
		"compatibility": "### closeSocket 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[closeSocket](https://uniapp.dcloud.net.cn/api/request/websocket.html#closesocket)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.websocket-global.closeSocket)\n"
	},
	"onSocketClose": {
		"name": "## onSocketClose(callback) @onsocketclose",
		"description": "监听WebSocket关闭。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnSocketCloseCallbackResult](#onsocketclosecallbackresult-values)) => void | 是 | - | - |\n#### OnSocketCloseCallbackResult 的属性值 @onsocketclosecallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| code | number | 是 | - | 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。\t |\n| reason | string | 是 | - | 一个可读的字符串,表示连接被关闭的原因。\t |\n",
		"returnValue": "",
		"compatibility": "### onSocketClose 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[onSocketClose](https://uniapp.dcloud.net.cn/api/request/websocket.html#onsocketclose)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.network.websocket-global.onSocketClose)\n"
	},
	"websocket-global": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/websocket-global/websocket-global.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head title=\"websocket通讯示例\"></page-head>\r\n    <view class=\"uni-padding-wrap\">\r\n      <view class=\"uni-btn-v\">\r\n        <text class=\"websocket-msg\">{{ showMsg }}</text>\r\n        <button class=\"uni-btn-v\" type=\"primary\" @click=\"connect\">\r\n          连接websocket服务\r\n        </button>\r\n        <button class=\"uni-btn-v\" v-show=\"connected\" type=\"primary\" @click=\"send\">\r\n          发送一条消息\r\n        </button>\r\n        <button class=\"uni-btn-v\" type=\"primary\" @click=\"close\">\r\n          断开websocket服务\r\n        </button>\r\n        <text class=\"websocket-tips\">发送消息后会收到一条服务器返回的消息(与发送的消息内容一致)</text>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n\r\n<script lang=\"uts\">\r\n  export default {\r\n    data() {\r\n      return {\r\n        connected: false,\r\n        connecting: false,\r\n        msg: '',\r\n        roomId: '',\r\n        platform: '',\r\n      }\r\n    },\r\n    computed: {\r\n      showMsg() : string {\r\n        if (this.connected) {\r\n          if (this.msg.length > 0) {\r\n            return '收到消息:' + this.msg\r\n          } else {\r\n            return '等待接收消息'\r\n          }\r\n        } else {\r\n          return '尚未连接'\r\n        }\r\n      },\r\n    },\r\n    onLoad() {\r\n      this.platform = uni.getSystemInfoSync().platform\r\n    },\r\n    onUnload() {\r\n      uni.closeSocket({\r\n        code: 1000,\r\n        reason: 'close reason from client',\r\n        success: (res : any) => {\r\n          console.log('uni.closeSocket success', res)\r\n        },\r\n        fail: (err : any) => {\r\n          console.log('uni.closeSocket fail', err)\r\n        },\r\n      } as CloseSocketOptions)\r\n      uni.hideLoading()\r\n    },\r\n    methods: {\r\n      connect() {\r\n        if (this.connected || this.connecting) {\r\n          uni.showModal({\r\n            content: '正在连接或者已经连接,请勿重复连接',\r\n            showCancel: false,\r\n          })\r\n          return\r\n        }\r\n        this.connecting = true\r\n        uni.showLoading({\r\n          title: '连接中...',\r\n        })\r\n        uni.connectSocket({\r\n          url: 'ws://websocket.dcloud.net.cn',\r\n          success: (res : any) => {\r\n            // 这里是接口调用成功的回调,不是连接成功的回调,请注意\r\n            console.log('uni.connectSocket success', res)\r\n          },\r\n          fail: (err : any) => {\r\n            // 这里是接口调用失败的回调,不是连接失败的回调,请注意\r\n            console.log('uni.connectSocket fail', err)\r\n          },\r\n        })\r\n        uni.onSocketOpen((res) => {\r\n          this.connecting = false\r\n          this.connected = true\r\n          uni.hideLoading()\r\n\r\n          uni.showToast({\r\n            icon: 'none',\r\n            title: '连接成功',\r\n          })\r\n          console.log('onOpen', res)\r\n        })\r\n        uni.onSocketError((err) => {\r\n          this.connecting = false\r\n          this.connected = false\r\n          uni.hideLoading()\r\n\r\n          uni.showModal({\r\n            content: '连接失败,可能是websocket服务不可用,请稍后再试',\r\n            showCancel: false,\r\n          })\r\n          console.log('onError', err)\r\n        })\r\n        uni.onSocketMessage((res) => {\r\n          this.msg = res.data as string\r\n          console.log('onMessage', res)\r\n        })\r\n        uni.onSocketClose((res) => {\r\n          this.connected = false\r\n          this.msg = ''\r\n          console.log('onClose', res)\r\n        })\r\n      },\r\n      send() {\r\n        uni.sendSocketMessage({\r\n          data:\r\n            'from ' +\r\n            this.platform +\r\n            ' : ' +\r\n            parseInt((Math.random() * 10000).toString()).toString(),\r\n          success: (res : any) => {\r\n            console.log(res)\r\n          },\r\n          fail: (err : any) => {\r\n            console.log(err)\r\n          },\r\n        } as SendSocketMessageOptions)\r\n      },\r\n      close() {\r\n        uni.closeSocket({\r\n          code: 1000,\r\n          reason: 'close reason from client',\r\n          success: (res : any) => {\r\n            console.log('uni.closeSocket success', res)\r\n          },\r\n          fail: (err : any) => {\r\n            console.log('uni.closeSocket fail', err)\r\n          },\r\n        } as CloseSocketOptions)\r\n      },\r\n    },\r\n  }\r\n</script>\r\n\r\n<style>\r\n  .uni-btn-v {\r\n    padding: 10rpx 0;\r\n  }\r\n\r\n  .uni-btn-v {\r\n    margin: 20rpx 0;\r\n  }\r\n\r\n  .websocket-msg {\r\n    padding: 40px 0px;\r\n    text-align: center;\r\n    font-size: 14px;\r\n    line-height: 40px;\r\n    color: #666666;\r\n  }\r\n\r\n  .websocket-tips {\r\n    padding: 40px 0px;\r\n    text-align: center;\r\n    font-size: 14px;\r\n    line-height: 24px;\r\n    color: #666666;\r\n  }\r\n</style>\n```"
	},
	"getSystemInfo": {
		"name": "## uni.getSystemInfo(options) @getsysteminfo",
		"description": "异步获取系统信息",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetSystemInfoOptions](#getsysteminfooptions-values) | 是 | - | - |\n#### GetSystemInfoOptions 的属性值 @getsysteminfooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (result: [GetSystemInfoResult](#getsysteminforesult-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetSystemInfoResult 的属性值 @getsysteminforesult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SDKVersion | string | 是 | - | 客户端基础库版本 |\n| appId | string | 是 | - | `manifest.json` 中应用appid。 |\n| appLanguage | string | 是 | - | 应用设置的语言。 |\n| appName | string | 是 | - | `manifest.json` 中应用名称。 |\n| appVersion | string | 是 | - | `manifest.json` 中应用版本名称。 |\n| appVersionCode | string | 是 | - | `manifest.json` 中应用版本名号。 |\n| brand | string | 是 | - | 手机品牌。 |\n| browserName | string | 是 | - | 浏览器名称。`App` 端是系统 webview 的名字,比如 wkwebview、chrome。小程序端为空 |\n| browserVersion | string | 是 | - | 浏览器版本、webview 版本。 |\n| deviceId | string | 是 | - | 设备 ID |\n| deviceBrand | string | 是 | - | 设备品牌。如:`apple`、`huawei`。 |\n| deviceModel | string | 是 | - | 设备型号 |\n| deviceType | string | 是 | - | 设备类型。`phone`、`pad`、`pc` |\n| devicePixelRatio | number | 是 | - | 设备像素比 |\n| deviceOrientation | string | 是 | - | 设备方向。如:`竖屏 portrait`、`横屏 landscape` - portrait: 竖屏 - landscape: 横屏 |\n| language | string | 是 | - | 程序设置的语言 |\n| model | string | 是 | - | 手机型号 |\n| osName | string | 是 | - | ios、android、windows、mac、linux |\n| osVersion | string | 是 | - | 操作系统版本。如 ios 版本,andriod 版本 |\n| osLanguage | string | 是 | - | 操作系统语言 |\n| pixelRatio | number | 是 | - | 设备像素比 |\n| platform | string | 是 | - | 客户端平台 |\n| screenWidth | number | 是 | - | 屏幕宽度 |\n| screenHeight | number | 是 | - | 屏幕高度 |\n| statusBarHeight | number | 是 | - | 状态栏的高度 |\n| system | string | 是 | - | 操作系统版本 |\n| safeArea | [SafeArea](#safearea-values) | 是 | - | 在竖屏正方向下的安全区域 |\n| safeAreaInsets | [SafeAreaInsets](#safeareainsets-values) | 是 | - | 在竖屏正方向下的安全区域插入位置 |\n| ua | string | 是 | - | 用户标识。小程序端为空 |\n| uniCompileVersion | string | 是 | - | uni 编译器版本 |\n| uniPlatform | string | 是 | - | uni-app 运行平台。如:`app`、`mp-weixin`、`web` |\n| uniRuntimeVersion | string | 是 | - | uni 运行时版本 |\n| uniCompileVersionCode | number | 是 | - | uni 编译器版本号 |\n| uniRuntimeVersionCode | number | 是 | - | uni 运行时版本号 |\n| version | string | 是 | - | 引擎版本号。已废弃,仅为了向下兼容保留  |\n| romName | string | 是 | - | rom 名称。Android 部分机型获取不到值。iOS 恒为 `ios` |\n| romVersion | string | 是 | - | rom 版本号。Android 部分机型获取不到值。iOS 恒为 `ios 版本号` |\n| windowWidth | number | 是 | - | 可使用窗口宽度 |\n| windowHeight | number | 是 | - | 可使用窗口高度 |\n| windowTop | number | 是 | - | 可使用窗口的顶部位置 |\n| windowBottom | number | 是 | - | 可使用窗口的底部位置 |\n| oaid | string | 否 | - | oaid  |\n| osAndroidAPILevel | number | 否 | - | Android 系统API库的版本。  |\n\n###### SafeArea 的属性值 @safearea-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| left | number | 是 | - | 安全区域左上角横坐标 |\n| right | number | 是 | - | 安全区域右下角横坐标 |\n| top | number | 是 | - | 安全区域左上角纵坐标 |\n| bottom | number | 是 | - | 安全区域右下角纵坐标 |\n| width | number | 是 | - | 安全区域的宽度,单位逻辑像素 |\n| height | number | 是 | - | 安全区域的高度,单位逻辑像素 |\n\n###### SafeAreaInsets 的属性值 @safeareainsets-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| left | number | 是 | - | 安全区域左侧插入位置 |\n| right | number | 是 | - | 安全区域右侧插入位置 |\n| top | number | 是 | - | 安全区顶部插入位置 |\n| bottom | number | 是 | - | 安全区域底部插入位置 |\n\n###### GetSystemInfoResult 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| oaid | 4.4 | √ | √ | x | x | x |\n| osAndroidAPILevel | 4.4 | √ | √ | x | x | x |\n",
		"returnValue": "",
		"compatibility": "### getSystemInfo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[getSystemInfo](http://uniapp.dcloud.io/api/system/info?id=getsysteminfo)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-system-info.getSystemInfo)\n"
	},
	"getSystemInfoSync": {
		"name": "## uni.getSystemInfoSync() @getsysteminfosync",
		"description": "同步获取系统信息",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [GetSystemInfoResult](#getsysteminforesult-values) | \n\n#### GetSystemInfoResult 的属性值 @getsysteminforesult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SDKVersion | string | 是 | - | 客户端基础库版本 |\n| appId | string | 是 | - | `manifest.json` 中应用appid。 |\n| appLanguage | string | 是 | - | 应用设置的语言。 |\n| appName | string | 是 | - | `manifest.json` 中应用名称。 |\n| appVersion | string | 是 | - | `manifest.json` 中应用版本名称。 |\n| appVersionCode | string | 是 | - | `manifest.json` 中应用版本名号。 |\n| brand | string | 是 | - | 手机品牌。 |\n| browserName | string | 是 | - | 浏览器名称。`App` 端是系统 webview 的名字,比如 wkwebview、chrome。小程序端为空 |\n| browserVersion | string | 是 | - | 浏览器版本、webview 版本。 |\n| deviceId | string | 是 | - | 设备 ID |\n| deviceBrand | string | 是 | - | 设备品牌。如:`apple`、`huawei`。 |\n| deviceModel | string | 是 | - | 设备型号 |\n| deviceType | string | 是 | - | 设备类型。`phone`、`pad`、`pc` |\n| devicePixelRatio | number | 是 | - | 设备像素比 |\n| deviceOrientation | string | 是 | - | 设备方向。如:`竖屏 portrait`、`横屏 landscape` - portrait: 竖屏 - landscape: 横屏 |\n| language | string | 是 | - | 程序设置的语言 |\n| model | string | 是 | - | 手机型号 |\n| osName | string | 是 | - | ios、android、windows、mac、linux |\n| osVersion | string | 是 | - | 操作系统版本。如 ios 版本,andriod 版本 |\n| osLanguage | string | 是 | - | 操作系统语言 |\n| pixelRatio | number | 是 | - | 设备像素比 |\n| platform | string | 是 | - | 客户端平台 |\n| screenWidth | number | 是 | - | 屏幕宽度 |\n| screenHeight | number | 是 | - | 屏幕高度 |\n| statusBarHeight | number | 是 | - | 状态栏的高度 |\n| system | string | 是 | - | 操作系统版本 |\n| safeArea | [SafeArea](#safearea-values) | 是 | - | 在竖屏正方向下的安全区域 |\n| safeAreaInsets | [SafeAreaInsets](#safeareainsets-values) | 是 | - | 在竖屏正方向下的安全区域插入位置 |\n| ua | string | 是 | - | 用户标识。小程序端为空 |\n| uniCompileVersion | string | 是 | - | uni 编译器版本 |\n| uniPlatform | string | 是 | - | uni-app 运行平台。如:`app`、`mp-weixin`、`web` |\n| uniRuntimeVersion | string | 是 | - | uni 运行时版本 |\n| uniCompileVersionCode | number | 是 | - | uni 编译器版本号 |\n| uniRuntimeVersionCode | number | 是 | - | uni 运行时版本号 |\n| version | string | 是 | - | 引擎版本号。已废弃,仅为了向下兼容保留  |\n| romName | string | 是 | - | rom 名称。Android 部分机型获取不到值。iOS 恒为 `ios` |\n| romVersion | string | 是 | - | rom 版本号。Android 部分机型获取不到值。iOS 恒为 `ios 版本号` |\n| windowWidth | number | 是 | - | 可使用窗口宽度 |\n| windowHeight | number | 是 | - | 可使用窗口高度 |\n| windowTop | number | 是 | - | 可使用窗口的顶部位置 |\n| windowBottom | number | 是 | - | 可使用窗口的底部位置 |\n| oaid | string | 否 | - | oaid  |\n| osAndroidAPILevel | number | 否 | - | Android 系统API库的版本。  |\n\n##### SafeArea 的属性值 @safearea-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| left | number | 是 | - | 安全区域左上角横坐标 |\n| right | number | 是 | - | 安全区域右下角横坐标 |\n| top | number | 是 | - | 安全区域左上角纵坐标 |\n| bottom | number | 是 | - | 安全区域右下角纵坐标 |\n| width | number | 是 | - | 安全区域的宽度,单位逻辑像素 |\n| height | number | 是 | - | 安全区域的高度,单位逻辑像素 |\n\n##### SafeAreaInsets 的属性值 @safeareainsets-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| left | number | 是 | - | 安全区域左侧插入位置 |\n| right | number | 是 | - | 安全区域右侧插入位置 |\n| top | number | 是 | - | 安全区顶部插入位置 |\n| bottom | number | 是 | - | 安全区域底部插入位置 |\n\n##### GetSystemInfoResult 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| oaid | 4.4 | √ | √ | x | x | x |\n| osAndroidAPILevel | 4.4 | √ | √ | x | x | x |\n",
		"compatibility": "### getSystemInfoSync 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[getSystemInfoSync](http://uniapp.dcloud.io/api/system/info?id=getsysteminfosync)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-system-info.getSystemInfoSync)\n"
	},
	"get-system-info": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-system-info/get-system-info.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n    <!-- #endif -->\r\n    <view>\r\n      <page-head :title=\"title\"></page-head>\r\n      <view class=\"uni-common-mt\">\r\n        <view class=\"uni-list\">\r\n          <view\r\n            class=\"uni-list-cell\"\r\n            v-for=\"(item, _) in items\"\r\n            style=\"align-items: center\"\r\n          >\r\n            <view class=\"uni-pd\">\r\n              <view class=\"uni-label\" style=\"width: 180px\">{{\r\n                item.label\r\n              }}</view>\r\n            </view>\r\n            <view class=\"uni-list-cell-db\">\r\n              <textarea\r\n                :auto-height=\"true\"\r\n                :disabled=\"true\"\r\n                placeholder=\"未获取\"\r\n                :value=\"item.value\"\r\n              />\r\n            </view>\r\n          </view>\r\n        </view>\r\n        <view class=\"uni-padding-wrap\">\r\n          <view class=\"uni-btn-v\">\r\n            <button type=\"primary\" @tap=\"getSystemInfoSync\">\r\n              同步获取设备系统信息\r\n            </button>\n            <button type=\"primary\" @tap=\"getSystemInfo\" style=\"margin-top: 20px;\">\n              异步获取设备系统信息\n            </button>\r\n          </view>\r\n        </view>\r\n      </view>\r\n    </view>\r\n    <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n<script>\r\ntype Item = {\r\n\tlabel : string,\r\n\tvalue : string,\r\n}\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttitle: 'getSystemInfo',\r\n\t\t\titems: [] as Item[],\r\n\t\t}\r\n\t},\r\n\tonUnload: function () {\r\n\t},\r\n\tmethods: {\r\n\t\tgetSystemInfo: function () {\n\t\t\tuni.getSystemInfo({\r\n\t\t\t\tsuccess: (res) => {\n          this.items = [] as Item[];\n          for(const key in res){\n            const value = res[key];\n            if(value != null){\n              const item = {\n              \tlabel: key,\n              \tvalue: \"\" + ((typeof value == \"object\")? JSON.stringify(value) : value)\n              } as Item;\n              this.items.push(item);\n            }\n          }\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t},\n    getSystemInfoSync: function () {\n      this.items = [] as Item[];\n      const res = uni.getSystemInfoSync()\n    \tfor(const key in res){\n    \t  const value = res[key];\n    \t  if(value != null){\n    \t    const item = {\n    \t    \tlabel: key,\n    \t    \tvalue: \"\" + ((typeof value == \"object\")? JSON.stringify(value) : value)\n    \t    } as Item;\n    \t    this.items.push(item);\n    \t  }\n    \t}\n    },\n    //自动化测试例专用\n    jest_getSystemInfo():GetSystemInfoResult{\n      return uni.getSystemInfoSync();\n    },\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.uni-pd {\r\n  padding-left: 30rpx;\r\n}\r\n</style>\r\n\n```"
	},
	"getDeviceInfo": {
		"name": "## uni.getDeviceInfo(options?) @getdeviceinfo",
		"description": "获取设备信息",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetDeviceInfoOptions](#getdeviceinfooptions-values) | 否 | 包含所有字段的过滤对象 | [options=包含所有字段的过滤对象\\] 过滤的字段对象, 不传参数默认为获取全部字段。 |\n#### GetDeviceInfoOptions 的属性值 @getdeviceinfooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| filter | Array\\<string\\> | 是 | - | 过滤字段的字符串数组,假如要获取指定字段,传入此数组。 |\n",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [GetDeviceInfoResult](#getdeviceinforesult-values) | \n\n#### GetDeviceInfoResult 的属性值 @getdeviceinforesult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| brand | string | 否 | - | 设备品牌 |\n| deviceBrand | string | 否 | - | 设备品牌 |\n| deviceId | string | 否 | - | 设备 id 。由 uni-app 框架生成并存储,清空 Storage 会导致改变 |\n| model | string | 否 | - | 设备型号\t |\n| deviceModel | string | 否 | - | 设备型号\t |\n| deviceType | string | 否 | - | 设备类型phone、pad、pc\t |\n| deviceOrientation | string | 否 | - | 设备方向 竖屏 portrait、横屏 landscape\t |\n| devicePixelRatio | string | 否 | - | 设备像素比\t |\n| system | string | 否 | - | 操作系统及版本\t |\n| platform | string | 否 | - | 客户端平台\t |\n| oaid | string | 否 | - | oaid标识 Android专有  |\n| isRoot | boolean | 否 | - | 是否root |\n| isSimulator | boolean | 否 | - | 是否是模拟器 |\n| isUSBDebugging | boolean | 否 | - | adb是否开启  |\n| idfa | string | 否 | - | idfa标识 iOS专有  |\n\n##### GetDeviceInfoResult 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| oaid | 5.0 | √ | √ | 9.0 | x | x |\n| isUSBDebugging | 5.0 | √ | √ | 9.0 | x | x |\n| idfa | 5.0 | x | x | 9.0 | √ | √ |\n",
		"compatibility": "### getDeviceInfo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | 3.9+ |\n",
		"tutorial": "\n### 参见\n[getDeviceInfo](https://uniapp.dcloud.net.cn/api/system/getDeviceInfo.html)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-device-info)\n"
	},
	"get-device-info": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-device-info/get-device-info.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n    <!-- #endif -->\r\n    <view>\r\n      <page-head :title=\"title\"></page-head>\r\n      <view class=\"uni-common-mt\">\r\n        <view class=\"uni-list\">\r\n          <view class=\"uni-list\">\r\n            <view\r\n              class=\"uni-list-cell\"\r\n              v-for=\"(item, _) in items\"\r\n              style=\"align-items: center\"\r\n            >\r\n              <view class=\"uni-pd\">\r\n                <view class=\"uni-label\" style=\"width: 180px\">{{\r\n                  item.label\r\n                }}</view>\r\n              </view>\r\n              <view class=\"uni-list-cell-db\">\r\n                <textarea\r\n                  :auto-height=\"true\"\r\n                  :disabled=\"true\"\r\n                  placeholder=\"未获取\"\r\n                  :value=\"item.value\"\r\n                />\r\n              </view>\r\n            </view>\r\n          </view>\r\n        </view>\r\n        <view class=\"uni-padding-wrap\">\r\n          <view class=\"uni-btn-v\">\r\n            <button type=\"primary\" @tap=\"getDeviceInfo\">获取设备信息</button>\r\n          </view>\r\n        </view>\r\n      </view>\r\n    </view>\r\n    <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n<script>\r\ntype Item = {\r\n\tlabel : string,\r\n\tvalue : string,\r\n}\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\ttitle: 'getDeviceInfo',\r\n\t\t\titems: [] as Item[],\r\n\t\t}\r\n\t},\r\n\tonUnload:function(){\r\n\t},\r\n\tmethods: {\r\n\t\tgetDeviceInfo: function () {\r\n\t\t\tconst res = uni.getDeviceInfo();\n      this.items = [] as Item[];\r\n      for(const key in res){\n        const value = res[key];\n        if(value != null){\n          const item = {\n          \tlabel: key,\n          \tvalue: \"\" + ((typeof value == \"object\")? JSON.stringify(value) : value)\n          } as Item;\n          this.items.push(item);\n        }\n      }\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.uni-pd {\r\n  padding-left: 30rpx;\r\n}\r\n</style>\r\n\n```"
	},
	"getWindowInfo": {
		"name": "## uni.getWindowInfo() @getwindowinfo",
		"description": "同步获取窗口信息",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [GetWindowInfoResult](#getwindowinforesult-values) | \n\n#### GetWindowInfoResult 的属性值 @getwindowinforesult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| pixelRatio | number | 是 | - | 设备像素比 |\n| screenWidth | number | 是 | - | 屏幕宽度 |\n| screenHeight | number | 是 | - | 屏幕高度 |\n| windowWidth | number | 是 | - | 可使用窗口宽度 |\n| windowHeight | number | 是 | - | 可使用窗口高度 |\n| statusBarHeight | number | 是 | - | 状态栏的高度 |\n| windowTop | number | 是 | - | 可使用窗口的顶部位置 |\n| windowBottom | number | 是 | - | 可使用窗口的底部位置 |\n| safeArea | [SafeArea](#safearea-values) | 是 | - | 在竖屏正方向下的安全区域 |\n| safeAreaInsets | [SafeAreaInsets](#safeareainsets-values) | 是 | - | 在竖屏正方向下的安全区域插入位置 |\n| screenTop | number | 是 | - | 窗口上边缘的 y 值 |\n\n##### SafeArea 的属性值 @safearea-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| left | number | 是 | - | 安全区域左上角横坐标 |\n| right | number | 是 | - | 安全区域右下角横坐标 |\n| top | number | 是 | - | 安全区域左上角纵坐标 |\n| bottom | number | 是 | - | 安全区域右下角纵坐标 |\n| width | number | 是 | - | 安全区域的宽度,单位逻辑像素 |\n| height | number | 是 | - | 安全区域的高度,单位逻辑像素 |\n\n##### SafeAreaInsets 的属性值 @safeareainsets-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| left | number | 是 | - | 安全区域左侧插入位置 |\n| right | number | 是 | - | 安全区域右侧插入位置 |\n| top | number | 是 | - | 安全区顶部插入位置 |\n| bottom | number | 是 | - | 安全区域底部插入位置 |\n",
		"compatibility": "### getWindowInfo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[getWindowInfo](http://uniapp.dcloud.io/api/system/getWindowInfo.html)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-window-info)\n"
	},
	"get-window-info": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-window-info/get-window-info.uvue) \n ```html\n<template>\r\n\t<view>\r\n\t\t<page-head :title=\"title\"></page-head>\r\n\t\t<view class=\"uni-common-mt\">\r\n\t\t\t<view class=\"uni-list\">\r\n\t\t\t\t<view class=\"uni-list-cell\" v-for=\"(item,_) in items\" style=\"align-items: center;\">\r\n\t\t\t\t\t<view class=\"uni-pd\">\r\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">{{item.label}}</view>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\r\n\t\t\t\t\t\t<textarea :auto-height=\"true\" :disabled=\"true\" placeholder=\"未获取\" :value=\"item.value\" />\r\n\t\t\t\t\t</view>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"uni-padding-wrap\">\r\n\t\t\t\t<view class=\"uni-btn-v\">\r\n\t\t\t\t\t<button type=\"primary\" @tap=\"getWindowInfo\">获取窗口信息</button>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n<script>\r\n\ttype Item = {\r\n\t\tlabel : string,\r\n\t\tvalue : string,\r\n\t}\r\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\ttitle: 'getWindowInfo',\r\n\t\t\t\titems: [] as Item[],\r\n\t\t\t}\r\n\t\t},\r\n\t\tonUnload: function () {\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tgetWindowInfo: function () {\r\n\t\t\t\tconst res = uni.getWindowInfo();\n        this.items = [] as Item[];\n\t\t\t\tfor(const key in res){\n\t\t\t\t  const value = res[key];\n          if(value != null){\n            const item = {\n            \tlabel: key,\n            \tvalue: \"\" + ((typeof value == \"object\")? JSON.stringify(value) : value)\n            } as Item;\n            this.items.push(item);\n          }\n\t\t\t\t}\n\t\t\t},\n      //自动化测试例专用\n      jest_getWindowInfo():GetWindowInfoResult{\n        return uni.getWindowInfo();\n      },\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.uni-pd {\r\n\t\tpadding-left: 30rpx;\r\n\t}\r\n</style>\n```"
	},
	"getAppBaseInfo": {
		"name": "## uni.getAppBaseInfo(options?) @getappbaseinfo",
		"description": "获取app基本信息",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetAppBaseInfoOptions](#getappbaseinfooptions-values) | 否 | 包含所有字段的过滤对象 | [options=包含所有字段的过滤对象\\]  过滤的字段对象, 不传参数默认为获取全部字段。 |\n#### GetAppBaseInfoOptions 的属性值 @getappbaseinfooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| filter | Array\\<string\\> | 是 | - | 过滤字段的字符串数组,假如要获取指定字段,传入此数组。 |\n",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [GetAppBaseInfoResult](#getappbaseinforesult-values) | \n\n#### GetAppBaseInfoResult 的属性值 @getappbaseinforesult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| appId | string | 否 | - | manifest.json 中应用appid,即DCloud appid。 |\n| appName | string | 否 | - | `manifest.json` 中应用名称。 |\n| appVersion | string | 否 | - | `manifest.json` 中应用版本名称。 |\n| appVersionCode | string | 否 | - | `manifest.json` 中应用版本名号。 |\n| appLanguage | string | 否 | - | 应用设置的语言en、zh-Hans、zh-Hant、fr、es |\n| language | string | 否 | - | 应用设置的语言 |\n| version | string | 否 | - | 引擎版本号。已废弃,仅为了向下兼容保留 |\n| isUniAppX | boolean | 否 | - | 是否uni-app x |\n| uniCompileVersion | string | 否 | - | uni 编译器版本 |\n| uniPlatform | string | 否 | - | uni-app 运行平台。如:`app`、`mp-weixin`、`web` |\n| uniRuntimeVersion | string | 否 | - | uni 运行时版本 |\n| uniCompileVersionCode | number | 否 | - | uni 编译器版本号 |\n| uniRuntimeVersionCode | number | 否 | - | uni 运行时版本号 |\n| packageName | string | 否 | - | Android的包名  |\n| signature | string | 否 | - | Android: 应用签名证书的SHA1值(全部为小写,中间不包含“:”)。 为了保证应用的安全性,请使用自己生成的证书(不要使用公共测试证书)。 iOS: 应用签名证书中绑定的Bundle ID(AppleID)的md5值(全部为小写)。  |\n\n##### GetAppBaseInfoResult 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| packageName | 4.4 | x | 3.97 | x | x | x |\n| signature | 4.4 | x | 3.97 | 9.0 | x | 3.97 |\n",
		"compatibility": "### getAppBaseInfo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | 3.9+ |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-app-base-info)\n"
	},
	"get-app-base-info": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-app-base-info/get-app-base-info.uvue) \n ```html\n<template>\r\n\t<view>\r\n\t\t<page-head :title=\"title\"></page-head>\r\n\t\t<view class=\"uni-common-mt\">\r\n\t\t\t<view class=\"uni-list\">\n\t\t\t\t<view class=\"uni-list-cell\" v-for=\"(item,_) in items\" style=\"align-items: center;\">\n\t\t\t\t\t<view class=\"uni-pd\">\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">{{item.label}}</view>\n\t\t\t\t\t</view>\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\n\t\t\t\t\t\t<textarea :auto-height=\"true\" :disabled=\"true\" placeholder=\"未获取\" :value=\"item.value\" />\n\t\t\t\t\t</view>\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"uni-padding-wrap\">\r\n\t\t\t\t<view class=\"uni-btn-v\">\r\n\t\t\t\t\t<button type=\"primary\" @tap=\"getAppBaseInfo\">获取App基础信息</button>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n<script>\n\ttype Item = {\n\t\tlabel : string,\n\t\tvalue : string,\n\t}\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\ttitle: 'getAppBaseInfo',\n\t\t\t\titems: [] as Item[],\r\n\t\t\t}\r\n\t\t},\r\n\t\tonUnload:function(){\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tgetAppBaseInfo: function () {\n\t\t\t\tconst res = uni.getAppBaseInfo();\n        this.items = [] as Item[];\n        for(const key in res){\n          const value = res[key];\n          if(value != null){\n            const item = {\n            \tlabel: key,\n            \tvalue: \"\" + ((typeof value == \"object\")? JSON.stringify(value) : value)\n            } as Item;\n            this.items.push(item);\n          }\n        }\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.uni-pd {\r\n\t\tpadding-left: 30rpx;\r\n\t}\r\n</style>\r\n\n```"
	},
	"getAppAuthorizeSetting": {
		"name": "## uni.getAppAuthorizeSetting() @getappauthorizesetting",
		"description": "获取 APP 授权设置。",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [GetAppAuthorizeSettingResult](#getappauthorizesettingresult-values) | \n\n#### GetAppAuthorizeSettingResult 的属性值 @getappauthorizesettingresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| cameraAuthorized | string | 是 | - | 允许 App 使用摄像头的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.CAMERA` 权限;iOS平台没有该值 |\n| locationAuthorized | string | 是 | - | 允许 App 使用定位的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.ACCESS_COARSE_LOCATION` 权限;iOS平台:表示没有在 `manifest.json -> App模块配置` 中配置 `Geolocation(定位)` 模块 |\n| locationAccuracy | string | 否 | - | 定位准确度。 - reduced: 模糊定位 - full: 精准定位 - unsupported: 不支持(包括用户拒绝定位权限和没有在 `manifest.json -> App模块配置` 中配置 `Geolocation(定位)` 模块) |\n| microphoneAuthorized | string | 是 | - | 允许 App 使用麦克风的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台:表示没有授予 `android.permission.RECORD_AUDIO` 权限;iOS平台没有该值 |\n| notificationAuthorized | string | 是 | - | 允许 App 通知的开关 - authorized: 已经获得授权,无需再次请求授权 - denied: 请求授权被拒绝,无法再次请求授权;(此情况需要引导用户打开系统设置,在设置页中打开权限) - not determined: 尚未请求授权,会在App下一次调用系统相应权限时请求;(仅 iOS 会出现。此种情况下引导用户打开系统设置,不展示开关) - config error: Android平台没有该值;iOS平台:表示没有在 `manifest.json -> App模块配置` 中配置 `Push(推送)` 模块 |\n",
		"compatibility": "### getAppAuthorizeSetting 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[getAppAuthorizeSetting](http://uniapp.dcloud.io/api/system/getappauthorizesetting)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-app-authorize-setting)\n"
	},
	"get-app-authorize-setting": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-app-authorize-setting/get-app-authorize-setting.uvue) \n ```html\n<template>\r\n\t<view>\r\n\t\t<page-head :title=\"title\"></page-head>\r\n\t\t<view class=\"uni-common-mt\">\r\n\t\t\t<view class=\"uni-list\">\r\n\t\t\t\t<view class=\"uni-list-cell\">\r\n\t\t\t\t\t<view class=\"uni-pd\">\r\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">是否授权使用摄像头</view>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\r\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"cameraAuthorized\"/>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t</view>\n\t\t\t\t<view class=\"uni-list-cell\">\n\t\t\t\t\t<view class=\"uni-pd\">\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">是否授权使用定位</view>\n\t\t\t\t\t</view>\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"locationAuthorized\"/>\n\t\t\t\t\t</view>\n\t\t\t\t</view>\n\t\t\t\t<view class=\"uni-list-cell\">\n\t\t\t\t\t<view class=\"uni-pd\">\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">定位准确度</view>\n\t\t\t\t\t</view>\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"locationAccuracy\"/>\n\t\t\t\t\t</view>\n\t\t\t\t</view>\n\t\t\t\t<view class=\"uni-list-cell\">\n\t\t\t\t\t<view class=\"uni-pd\">\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">是否授权使用麦克风</view>\n\t\t\t\t\t</view>\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"microphoneAuthorized\"/>\n\t\t\t\t\t</view>\n\t\t\t\t</view>\n\t\t\t\t<view class=\"uni-list-cell\">\n\t\t\t\t\t<view class=\"uni-pd\">\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">是否授权通知</view>\n\t\t\t\t\t</view>\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"notificationAuthorized\"/>\n\t\t\t\t\t</view>\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"uni-padding-wrap\">\r\n\t\t\t\t<view class=\"uni-btn-v\">\r\n\t\t\t\t\t<button type=\"primary\" @tap=\"getAppAuthorizeSetting\">获取App授权设置</button>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n<script>\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\ttitle: 'getAppAuthorizeSetting',\n\t\t\t\tcameraAuthorized:\"\",\n\t\t\t\tlocationAuthorized:\"\",\n\t\t\t\tlocationAccuracy:\"\",\n\t\t\t\tmicrophoneAuthorized:\"\",\n\t\t\t\tnotificationAuthorized:\"\"\r\n\t\t\t}\r\n\t\t},\r\n\t\tonUnload:function(){\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tgetAppAuthorizeSetting: function () {\n\t\t\t\tconst res = uni.getAppAuthorizeSetting();\n\t\t\t\tthis.cameraAuthorized = res.cameraAuthorized;\n\t\t\t\tthis.locationAuthorized = res.locationAuthorized;\n\t\t\t\tthis.locationAccuracy = res.locationAccuracy ?? \"unsupported\";\n\t\t\t\tthis.microphoneAuthorized = res.microphoneAuthorized;\n\t\t\t\tthis.notificationAuthorized = res.notificationAuthorized;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.uni-pd {\r\n\t\tpadding-left: 30rpx;\r\n\t}\r\n</style>\r\n\n```"
	},
	"getSystemSetting": {
		"name": "## uni.getSystemSetting() @getsystemsetting",
		"description": "获取系统设置",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [GetSystemSettingResult](#getsystemsettingresult-values) | \n\n#### GetSystemSettingResult 的属性值 @getsystemsettingresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| bluetoothEnabled | boolean | 否 | - | 蓝牙是否开启 |\n| bluetoothError | string | 否 | - | 蓝牙的报错信息 |\n| locationEnabled | boolean | 是 | - | 位置是否开启 |\n| wifiEnabled | boolean | 否 | - | wifi是否开启 |\n| wifiError | string | 否 | - | wifi的报错信息 |\n| deviceOrientation | string | 是 | - | 设备方向 |\n",
		"compatibility": "### getSystemSetting 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | 9.0 | √ | 3.9+ |\n",
		"tutorial": "\n### 参见\n[getSystemSetting](https://uniapp.dcloud.net.cn/api/system/getsystemsetting.html)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-system-setting)\n"
	},
	"get-system-setting": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-system-setting/get-system-setting.uvue) \n ```html\n<template>\r\n\t<view>\r\n\t\t<page-head :title=\"title\"></page-head>\r\n\t\t<view class=\"uni-common-mt\">\r\n\t\t\t<view class=\"uni-list\">\r\n\t\t\t\t<view class=\"uni-list-cell\">\r\n\t\t\t\t\t<view class=\"uni-pd\">\r\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">蓝牙的系统开关</view>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\r\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"bluetoothEnabled\"/>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t</view>\n\t\t\t\t<view class=\"uni-list-cell\">\n\t\t\t\t\t<view class=\"uni-pd\">\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">地理位置的系统开关</view>\n\t\t\t\t\t</view>\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"locationEnabled\"/>\n\t\t\t\t\t</view>\n\t\t\t\t</view>\n\t\t\t\t<view class=\"uni-list-cell\">\n\t\t\t\t\t<view class=\"uni-pd\">\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">Wi-Fi 的系统开关</view>\n\t\t\t\t\t</view>\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"wifiEnabled\"/>\n\t\t\t\t\t</view>\n\t\t\t\t</view>\n\t\t\t\t<view class=\"uni-list-cell\">\n\t\t\t\t\t<view class=\"uni-pd\">\n\t\t\t\t\t\t<view class=\"uni-label\" style=\"width:180px;\">设备方向</view>\n\t\t\t\t\t</view>\n\t\t\t\t\t<view class=\"uni-list-cell-db\">\n\t\t\t\t\t\t<input class=\"uni-input\" type=\"text\" :disabled=\"true\" placeholder=\"未获取\" :value=\"deviceOrientation\"/>\n\t\t\t\t\t</view>\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t\t<view class=\"uni-padding-wrap\">\r\n\t\t\t\t<view class=\"uni-btn-v\">\r\n\t\t\t\t\t<button type=\"primary\" @tap=\"getSystemSetting\">获取系统设置</button>\r\n\t\t\t\t</view>\r\n\t\t\t</view>\r\n\t\t</view>\r\n\t</view>\r\n</template>\r\n<script>\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\ttitle: 'getSystemSetting',\n\t\t\t\tbluetoothEnabled:\"\",\n\t\t\t\tlocationEnabled:\"\",\n\t\t\t\twifiEnabled:\"\",\n\t\t\t\tdeviceOrientation:\"\"\r\n\t\t\t}\r\n\t\t},\r\n\t\tonUnload:function(){\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tgetSystemSetting: function () {\n\t\t\t\tconst res = uni.getSystemSetting();\n\t\t\t\tthis.bluetoothEnabled = (res.bluetoothEnabled ?? false) ? \"开启\" : \"关闭\";\n\t\t\t\tthis.locationEnabled = res.locationEnabled ? \"开启\" : \"关闭\";\n\t\t\t\tthis.wifiEnabled = (res.wifiEnabled ?? false) ? \"开启\" : \"关闭\";\n\t\t\t\tthis.deviceOrientation = res.deviceOrientation\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n\t.uni-pd {\r\n\t\tpadding-left: 30rpx;\r\n\t}\r\n</style>\r\n\n```"
	},
	"installApk": {
		"name": "## uni.installApk(options) @installapk",
		"description": "安装apk",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [InstallApkOptions](#installapkoptions-values) | 是 | - | - |\n#### InstallApkOptions 的属性值 @installapkoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| filePath | string | 是 | - | apk文件地址 |\n| success | (res: [InstallApkSuccess](#installapksuccess-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (err: [InstallApkFail](#installapkfail-values)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### InstallApkSuccess 的属性值 @installapksuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | 安装成功消息 |\n\n##### InstallApkFail 的属性值 @installapkfail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | 错误码 - 1300002 找不到文件 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### installApk 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | 3.94+ | 3.94+ | x | x | x |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.install-apk)\n"
	},
	"install-apk": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/install-apk/install-apk.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n  <!-- #endif -->\r\n    <view>\r\n      <page-head :title=\"title\"></page-head>\r\n      <view class=\"uni-common-mt\">\r\n        <view class=\"uni-padding-wrap\">\r\n          <view class=\"uni-btn-v\">\r\n            <button type=\"primary\" @tap=\"installApk\">\r\n              installApk\r\n            </button>\r\n          </view>\r\n        </view>\r\n      </view>\r\n    </view>\r\n  <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n<script>\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'installApk'\r\n      }\r\n    },\r\n    onUnload: function () {\r\n    },\r\n    methods: {\r\n      installApk: function () {\r\n        uni.installApk({\r\n          filePath: \"/static/test-apk/test.apk\",\r\n          complete(res : any) {\n            console.log(res);\r\n          }\r\n        })\r\n      },\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n  .uni-pd {\r\n    padding-left: 30rpx;\r\n  }\r\n</style>\n\n```"
	},
	"getPushClientId": {
		"name": "## uni.getPushClientId(options) @getpushclientid",
		"description": "获取客户端唯一的推送标识",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetPushClientIdOptions](#getpushclientidoptions-values) | 是 | - | - |\n#### GetPushClientIdOptions 的属性值 @getpushclientidoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (result: [GetPushClientIdSuccess](#getpushclientidsuccess-values)) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetPushClientIdSuccess 的属性值 @getpushclientidsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| cid | string | 是 | - | 个推客户端推送id,对应uni-id-device表的push_clientid |\n| errMsg | string | 是 | - | 错误描述 |\n",
		"returnValue": "",
		"compatibility": "### getPushClientId 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.98 | 9.0 | x | x |\n",
		"tutorial": "\n### 参见\n[getPushClientId](http://uniapp.dcloud.io/api/plugins/push.html#getpushclientid)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.push.uni-push.getPushClientId)\n"
	},
	"onPushMessage": {
		"name": "## uni.onPushMessage(callback) @onpushmessage",
		"description": "启动监听推送消息事件",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnPushMessageCallbackResult](#onpushmessagecallbackresult-values)) => void | 是 | - | - |\n#### OnPushMessageCallbackResult 的属性值 @onpushmessagecallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| type | \"click\" \\\\| \"receive\" | 是 | - | 事件类型<br>- click 从系统推送服务点击消息启动应用事件<br>- receive 应用从推送服务器接收到推送消息事件 |\n| data | [UTSJSONObject](/uts/buildin-object-api/utsjsonobject.md) | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### onPushMessage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.98 | 9.0 | x | x |\n",
		"tutorial": "\n### 参见\n[onPushMessage](http://uniapp.dcloud.io/api/plugins/push.html#onpushmessage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.push.uni-push.onPushMessage)\n"
	},
	"offPushMessage": {
		"name": "## uni.offPushMessage(callback) @offpushmessage",
		"description": "关闭推送消息监听事件",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (result: [OnPushMessageCallbackResult](#onpushmessagecallbackresult-values)) => void | 是 | - | - |\n#### OnPushMessageCallbackResult 的属性值 @onpushmessagecallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| type | \"click\" \\\\| \"receive\" | 是 | - | 事件类型<br>- click 从系统推送服务点击消息启动应用事件<br>- receive 应用从推送服务器接收到推送消息事件 |\n| data | [UTSJSONObject](/uts/buildin-object-api/utsjsonobject.md) | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### offPushMessage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.98 | 9.0 | x | x |\n",
		"tutorial": "\n### 参见\n[offPushMessage](http://uniapp.dcloud.io/api/plugins/push.html#offpushmessage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.push.uni-push.offPushMessage)\n"
	},
	"getChannelManager": {
		"name": "## uni.getChannelManager() @getchannelmanager",
		"description": "获取通知渠道管理器,Android 8系统以上才可以设置通知渠道,Android 8系统以下返回null。",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [ChannelManager](#channelmanager-values) | \n\n#### ChannelManager 的方法 @channelmanager-values \n\n#### setPushChannel(options) @setpushchannel\n\n设置推送渠道\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SetPushChannelOptions](#setpushchanneloptions-values) | 是 | - | - |\n###### SetPushChannelOptions 的属性值 @setpushchanneloptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| soundName | string | 否 | null | 添加的声音文件,注意raw目录下必须要有 ,不传此字段将使用默认铃音。 |\n| channelId | string | 是 | - | 通知渠道id |\n| channelDesc | string | 是 | - | 通知渠道描述 |\n| enableLights | boolean | 否 | false | 呼吸灯闪烁 |\n| enableVibration | boolean | 否 | false | 震动 |\n| importance | number | 否 | 3 | 通知的重要性级别,可选范围IMPORTANCE_LOW:2、IMPORTANCE_DEFAULT:3、IMPORTANCE_HIGH:4 。 |\n| lockscreenVisibility | number | 否 | -1000 | 锁屏可见性,可选范围VISIBILITY_PRIVATE:0、VISIBILITY_PUBLIC:1、VISIBILITY_SECRET:-1、VISIBILITY_NO_OVERRIDE:-1000。 |\n\n\n##### setPushChannel 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.98 | 9.0 | x | x |\n\n\n#### getAllChannels() @getallchannels\n\n获取当前应用注册的所有的通知渠道。\n\n\n##### 返回值 \n\n| 类型 |\n| :- |\n| Array\\<string\\> | \n\n##### getAllChannels 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.98 | 9.0 | x | x |\n\n",
		"compatibility": "### getChannelManager 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | 3.98 | 3.98 | 9.0 | x | x |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.push.uni-push.getChannelManager)\n"
	},
	"createPushMessage": {
		"name": "## uni.createPushMessage(options) @createpushmessage",
		"description": "创建本地通知栏消息",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [CreatePushMessageOptions](#createpushmessageoptions-values) | 是 | - | - |\n#### CreatePushMessageOptions 的属性值 @createpushmessageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| cover | boolean | 否 | false | 是否覆盖上一次提示的消息 |\n| delay | number | 否 | 0 | 提示消息延迟显示的时间,单位为s |\n| icon | string | 否 | null | 推送消息的图标 |\n| sound | string | 否 | \"system\" | 推送消息的提示音 - system: 使用系统通知提示音(默认值) - none: 不使用提示音 |\n| title | string | 否 | App的名称 | 推送消息的标题 |\n| content | string | 是 | - | 消息显示的内容,在系统通知中心中显示的文本内容 |\n| payload | any | 否 | null | 消息承载的数据,可根据业务逻辑自定义数据格式 |\n| when | number | 否 | 当前时间 | 消息上显示的提示时间 |\n| channelId | string | 否 | \"DcloudChannelID\" | 渠道id |\n| category | string | 否 | null | 通知类别 |\n| success | (result: CreatePushMessageSuccess) => void | 否 | null | 接口调用成功的回调函数 |\n| fail | (result: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | null | 接口调用失败的回调函数 |\n| complete | (result: any) => void | 否 | null | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### CreatePushMessageOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| channelId | 4.4 | √ | 3.98 | 9.0 | x | x |\n| category | 4.4 | √ | 3.98 | 9.0 | x | x |\n",
		"returnValue": "",
		"compatibility": "### createPushMessage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.98 | 9.0 | x | x |\n",
		"tutorial": "\n### 参见\n[createPushMessage](http://uniapp.dcloud.io/api/plugins/push.html#createpushmessage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.push.uni-push.createPushMessage)\n"
	},
	"getBatteryInfo": {
		"name": "## uni.getBatteryInfo(options) @getbatteryinfo",
		"description": "获取电池电量信息\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-getbatteryinfo](https://ext.dcloud.net.cn/plugin?name=uni-getbatteryinfo)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetBatteryInfoOptions](#getbatteryinfooptions-values) | 是 | - | - |\n#### GetBatteryInfoOptions 的属性值 @getbatteryinfooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (res: [GetBatteryInfoSuccess](#getbatteryinfosuccess-values)) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n| fail | (res: UniError) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用成功的回调 |\n\n##### GetBatteryInfoSuccess 的属性值 @getbatteryinfosuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n| level | number | 是 | - | 设备电量,范围1 - 100 |\n| isCharging | boolean | 是 | - | 是否正在充电中 |\n",
		"returnValue": "",
		"compatibility": "### getBatteryInfo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.6.11 | 3.9.0 | 9.0 | 3.6.11 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-battery-info.getBatteryInfo)\n"
	},
	"getBatteryInfoSync": {
		"name": "## uni.getBatteryInfoSync() @getbatteryinfosync",
		"description": "获取电池电量信息\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-getbatteryinfo](https://ext.dcloud.net.cn/plugin?name=uni-getbatteryinfo)\n",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [GetBatteryInfoResult](#getbatteryinforesult-values) | \n\n#### GetBatteryInfoResult 的属性值 @getbatteryinforesult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| level | number | 是 | - | 设备电量,范围1 - 100 |\n| isCharging | boolean | 是 | - | 是否正在充电中 |\n",
		"compatibility": "### getBatteryInfoSync 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.6.11 | 3.9.0 | 9.0 | 3.6.11 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.get-battery-info.getBatteryInfoSync)\n"
	},
	"get-battery-info": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-battery-info/get-battery-info.uvue) \n ```html\n<template>\r\n\t<view>\r\n\t\t<text>当前电量:{{level}}%</text>\r\n\t\t<text>是否充电中:{{isCharging}}</text>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t\tlevel: 0,\r\n\t\t\t\tisCharging: false\r\n\t\t\t}\r\n\t\t},\r\n\t\tonLoad() {\r\n\t\t\tuni.getBatteryInfo({\r\n\t\t\t\tsuccess: res => {\r\n\t\t\t\t\tthis.level = res.level;\r\n\t\t\t\t\tthis.isCharging = res.isCharging;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n</script>\r\n<style>\r\n\r\n</style>\n```"
	},
	"startWifi": {
		"name": "## uni.startWifi(option) @startwifi",
		"description": "\r\n初始化Wi-Fi模块\r\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| option | [WifiOption](#wifioption-values) | 是 | - | Wifi 函数通用入参封装 |\n#### WifiOption 的属性值 @wifioption-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (res: [UniWifiResult](#uniwifiresult-values)) => void | 否 | - | - |\n| fail | (res: UniError) => void | 否 | - | - |\n| complete | (res: any) => void | 否 | - | - |\n\n##### UniWifiResult 的属性值 @uniwifiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | - |\n| errMsg | string | 是 | - | - |\n| wifi | [UniWifiInfo](#uniwifiinfo-values) | 否 | - | - |\n\n###### UniWifiInfo 的属性值 @uniwifiinfo-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SSID | string | 是 | - | - |\n| BSSID | string | 否 | - | - |\n| secure | boolean | 否 | - | - |\n| signalStrength | number | 否 | - | - |\n| frequency | number | 否 | - | - |\n",
		"returnValue": "",
		"compatibility": "### startWifi 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[startWifi](https://uniapp.dcloud.net.cn/api/system/wifi.html#startwifi)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.startWifi)\n"
	},
	"stopWifi": {
		"name": "## uni.stopWifi(option) @stopwifi",
		"description": "\r\n关闭 Wi-Fi 模块\r\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| option | [WifiOption](#wifioption-values) | 是 | - | Wifi 函数通用入参封装 |\n#### WifiOption 的属性值 @wifioption-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (res: [UniWifiResult](#uniwifiresult-values)) => void | 否 | - | - |\n| fail | (res: UniError) => void | 否 | - | - |\n| complete | (res: any) => void | 否 | - | - |\n\n##### UniWifiResult 的属性值 @uniwifiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | - |\n| errMsg | string | 是 | - | - |\n| wifi | [UniWifiInfo](#uniwifiinfo-values) | 否 | - | - |\n\n###### UniWifiInfo 的属性值 @uniwifiinfo-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SSID | string | 是 | - | - |\n| BSSID | string | 否 | - | - |\n| secure | boolean | 否 | - | - |\n| signalStrength | number | 否 | - | - |\n| frequency | number | 否 | - | - |\n",
		"returnValue": "",
		"compatibility": "### stopWifi 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[stopWifi](https://uniapp.dcloud.net.cn/api/system/wifi.html#stopwifi)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.stopWifi)\n"
	},
	"connectWifi": {
		"name": "## uni.connectWifi(option) @connectwifi",
		"description": "",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| option | [WifiConnectOption](#wificonnectoption-values) | 是 | - | Wifi 链接参数封装 |\n#### WifiConnectOption 的属性值 @wificonnectoption-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SSID | string | 否 | - | - |\n| BSSID | string | 否 | - | - |\n| password | string | 否 | - | - |\n| maunal | boolean | 否 | - | - |\n| partialInfo | boolean | 否 | - | - |\n| success | (res: [UniWifiResult](#uniwifiresult-values)) => void | 否 | - | - |\n| fail | (res: UniError) => void | 否 | - | - |\n| complete | (res: any) => void | 否 | - | - |\n\n##### UniWifiResult 的属性值 @uniwifiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | - |\n| errMsg | string | 是 | - | - |\n| wifi | [UniWifiInfo](#uniwifiinfo-values) | 否 | - | - |\n\n###### UniWifiInfo 的属性值 @uniwifiinfo-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SSID | string | 是 | - | - |\n| BSSID | string | 否 | - | - |\n| secure | boolean | 否 | - | - |\n| signalStrength | number | 否 | - | - |\n| frequency | number | 否 | - | - |\n",
		"returnValue": "",
		"compatibility": "### connectWifi 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| >=4.4 && <10.0 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[connectWifi](https://uniapp.dcloud.net.cn/api/system/wifi.html#connectWifi)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.connectWifi)\n"
	},
	"getWifiList": {
		"name": "## uni.getWifiList(option) @getwifilist",
		"description": "\r\n请求获取 Wi-Fi 列表。wifiList 数据会在 onGetWifiList 注册的回调中返回。\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| option | [WifiOption](#wifioption-values) | 是 | - | Wifi 函数通用入参封装 |\n#### WifiOption 的属性值 @wifioption-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (res: [UniWifiResult](#uniwifiresult-values)) => void | 否 | - | - |\n| fail | (res: UniError) => void | 否 | - | - |\n| complete | (res: any) => void | 否 | - | - |\n\n##### UniWifiResult 的属性值 @uniwifiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | - |\n| errMsg | string | 是 | - | - |\n| wifi | [UniWifiInfo](#uniwifiinfo-values) | 否 | - | - |\n\n###### UniWifiInfo 的属性值 @uniwifiinfo-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SSID | string | 是 | - | - |\n| BSSID | string | 否 | - | - |\n| secure | boolean | 否 | - | - |\n| signalStrength | number | 否 | - | - |\n| frequency | number | 否 | - | - |\n",
		"returnValue": "",
		"compatibility": "### getWifiList 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[getWifiList](https://uniapp.dcloud.net.cn/api/system/wifi.html#getWifiList)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.getWifiList)\n"
	},
	"onGetWifiList": {
		"name": "## uni.onGetWifiList(callback) @ongetwifilist",
		"description": "\r\n监听获取到 Wi-Fi 列表数据事件。\r\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (wifiInfo: any) => void | 是 | - | - |",
		"returnValue": "",
		"compatibility": "### onGetWifiList 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[onGetWifiList](https://uniapp.dcloud.net.cn/api/system/wifi.html#onGetWifiList)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.onGetWifiList)\n"
	},
	"offGetWifiList": {
		"name": "## uni.offGetWifiList(callback) @offgetwifilist",
		"description": "\r\n移除获取到 Wi-Fi 列表数据事件的监听函数。\r\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | () => void | 是 | - | - |",
		"returnValue": "",
		"compatibility": "### offGetWifiList 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[offGetWifiList](https://uniapp.dcloud.net.cn/api/system/wifi.html#offGetWifiList)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.offGetWifiList)\n"
	},
	"getConnectedWifi": {
		"name": "## uni.getConnectedWifi(option) @getconnectedwifi",
		"description": "\r\n获取已连接的 Wi-Fi 信息\r\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| option | [GetConnectedWifiOptions](#getconnectedwifioptions-values) | 是 | - | 获取当前链接的wifi信息 |\n#### GetConnectedWifiOptions 的属性值 @getconnectedwifioptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| partialInfo | boolean | 否 | - | - |\n| success | (res: [UniWifiResult](#uniwifiresult-values)) => void | 否 | - | - |\n| fail | (res: UniError) => void | 否 | - | - |\n| complete | (res: any) => void | 否 | - | - |\n\n##### UniWifiResult 的属性值 @uniwifiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | - |\n| errMsg | string | 是 | - | - |\n| wifi | [UniWifiInfo](#uniwifiinfo-values) | 否 | - | - |\n\n###### UniWifiInfo 的属性值 @uniwifiinfo-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SSID | string | 是 | - | - |\n| BSSID | string | 否 | - | - |\n| secure | boolean | 否 | - | - |\n| signalStrength | number | 否 | - | - |\n| frequency | number | 否 | - | - |\n",
		"returnValue": "",
		"compatibility": "### getConnectedWifi 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[getConnectedWifi](https://uniapp.dcloud.net.cn/api/system/wifi.html#getConnectedWifi)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.getConnectedWifi)\n"
	},
	"onWifiConnected": {
		"name": "## uni.onWifiConnected(callback) @onwificonnected",
		"description": "\r\n监听连接上 Wi-Fi 的事件\r\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (wifiInfo: [UniWifiResult](#uniwifiresult-values)) => void | 是 | - | - |\n#### UniWifiResult 的属性值 @uniwifiresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | - |\n| errSubject | string | 是 | - | - |\n| errMsg | string | 是 | - | - |\n| wifi | [UniWifiInfo](#uniwifiinfo-values) | 否 | - | - |\n\n##### UniWifiInfo 的属性值 @uniwifiinfo-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SSID | string | 是 | - | - |\n| BSSID | string | 否 | - | - |\n| secure | boolean | 否 | - | - |\n| signalStrength | number | 否 | - | - |\n| frequency | number | 否 | - | - |\n",
		"returnValue": "",
		"compatibility": "### onWifiConnected 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[onWifiConnected](https://uniapp.dcloud.net.cn/api/system/wifi.html#onWifiConnected)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.onWifiConnected)\n"
	},
	"onWifiConnectedWithPartialInfo": {
		"name": "## uni.onWifiConnectedWithPartialInfo(callback) @onwificonnectedwithpartialinfo",
		"description": "\r\n监听连接上 Wi-Fi 的事件。\r\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (wifiInfo: [UniWifiInfoWithPartialInfo](#uniwifiinfowithpartialinfo-values)) => void | 是 | - | - |\n#### UniWifiInfoWithPartialInfo 的属性值 @uniwifiinfowithpartialinfo-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| SSID | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### onWifiConnectedWithPartialInfo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[onWifiConnectedWithPartialInfo](https://uniapp.dcloud.net.cn/api/system/wifi.html#onWifiConnectedWithPartialInfo)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.onWifiConnectedWithPartialInfo)\n"
	},
	"offWifiConnected": {
		"name": "## uni.offWifiConnected(callback?) @offwificonnected",
		"description": "\r\n移除连接上 Wi-Fi 的事件的监听函数。\r\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-wifi](https://ext.dcloud.net.cn/plugin?name=uni-wifi)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | () => void | 否 | - | - |",
		"returnValue": "",
		"compatibility": "### offWifiConnected 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.0 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[offWifiConnected](https://uniapp.dcloud.net.cn/api/system/wifi.html#offWifiConnected)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.wifi.offWifiConnected)\n"
	},
	"onMemoryWarning": {
		"name": "## uni.onMemoryWarning(callback) @onmemorywarning",
		"description": "\n开启监听内存警告\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-memorywarning](https://ext.dcloud.net.cn/plugin?name=uni-memorywarning)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (res: [MemoryWarningCallbackResult](#memorywarningcallbackresult-values)) => void | 是 | - | uni.onMemoryWarning/uni.offMemoryWarning回调函数定义 |\n#### MemoryWarningCallbackResult 的属性值 @memorywarningcallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| level | number | 是 | - | 内存警告等级(仅安卓平台有效,iOS始终是0) |\n",
		"returnValue": "",
		"compatibility": "### onMemoryWarning 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.7 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[onMemoryWarning](https://uniapp.dcloud.net.cn/api/system/memory.html#onmemorywarning)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.memory.onMemoryWarning)\n"
	},
	"offMemoryWarning": {
		"name": "## uni.offMemoryWarning(callback?) @offmemorywarning",
		"description": "\n取消监听内存不足告警事件\n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-memorywarning](https://ext.dcloud.net.cn/plugin?name=uni-memorywarning)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (res: [MemoryWarningCallbackResult](#memorywarningcallbackresult-values)) => void | 否 | - | - |\n#### MemoryWarningCallbackResult 的属性值 @memorywarningcallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| level | number | 是 | - | 内存警告等级(仅安卓平台有效,iOS始终是0) |\n",
		"returnValue": "",
		"compatibility": "### offMemoryWarning 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.7 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[offMemoryWarning](https://uniapp.dcloud.net.cn/api/system/memory.html#offmemorywarning)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.memory.offMemoryWarning)\n"
	},
	"onUserCaptureScreen": {
		"name": "## uni.onUserCaptureScreen(callback?) @onusercapturescreen",
		"description": "\n开启截屏监听 \n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-usercapturescreen](https://ext.dcloud.net.cn/plugin?name=uni-usercapturescreen)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (res: [OnUserCaptureScreenCallbackResult](#onusercapturescreencallbackresult-values)) => void | 否 | - | - |\n#### OnUserCaptureScreenCallbackResult 的属性值 @onusercapturescreencallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| path | string | 否 | - | 截屏文件路径(仅Android返回) |\n",
		"returnValue": "",
		"compatibility": "### onUserCaptureScreen 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.7 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[onUserCaptureScreen](https://uniapp.dcloud.net.cn/api/system/capture-screen.html#onusercapturescreen)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.captureScreen.onUserCaptureScreen)\n"
	},
	"offUserCaptureScreen": {
		"name": "## uni.offUserCaptureScreen(callback?) @offusercapturescreen",
		"description": "\n关闭截屏监听 \n\n> 本 API 是 [uni ext api](https://uniapp.dcloud.net.cn/api/extapi.html),需下载插件:[uni-usercapturescreen](https://ext.dcloud.net.cn/plugin?name=uni-usercapturescreen)\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| callback | (res: [OnUserCaptureScreenCallbackResult](#onusercapturescreencallbackresult-values)) => void | 否 | - | - |\n#### OnUserCaptureScreenCallbackResult 的属性值 @onusercapturescreencallbackresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| path | string | 否 | - | 截屏文件路径(仅Android返回) |\n",
		"returnValue": "",
		"compatibility": "### offUserCaptureScreen 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 3.7.7 | 3.9.0 | 9.0 | 3.7.7 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[offUserCaptureScreen](https://uniapp.dcloud.net.cn/api/system/capture-screen.html#offusercapturescreen)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.captureScreen.offUserCaptureScreen)\n"
	},
	"chooseImage": {
		"name": "## uni.chooseImage(options) @chooseimage",
		"description": "从本地相册选择图片或使用相机拍照",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ChooseImageOptions](#chooseimageoptions-values) | 是 | - | - |\n#### ChooseImageOptions 的属性值 @chooseimageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| count | number | 否 | 9 | 最多可以选择的图片张数,app端不限制,微信小程序最多可支持20个。 |\n| sizeType | Array\\<string\\> | 否 | ['original','compressed'\\] | original 原图,compressed 压缩图,默认二者都有 |\n| sourceType | Array\\<string\\> | 否 | ['album','camera'\\] | album 从相册选图,camera 使用相机,默认二者都有 |\n| crop | [ChooseImageCropOptions](#chooseimagecropoptions-values) | 否 | - | 图像裁剪参数,设置后 sizeType 失效。 |\n| success | (callback: [ChooseImageSuccess](#chooseimagesuccess-values)) => void | 否 | - | 成功则返回图片的本地文件路径列表 tempFilePaths |\n| fail | (callback: [IMediaError](#imediaerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (callback: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ChooseImageCropOptions 的属性值 @chooseimagecropoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| width | number | 是 | - | 裁剪的宽度,单位为px,用于计算裁剪宽高比。 |\n| height | number | 是 | - | 裁剪的高度,单位为px,用于计算裁剪宽高比。 |\n| quality | number | 否 | 80 | 取值范围为1-100,数值越小,质量越低(仅对jpg格式有效)。默认值为80。 |\n| resize | boolean | 否 | - | 是否将width和height作为裁剪保存图片真实的像素值。默认值为true。注:设置为false时在裁剪编辑界面显示图片的像素值,设置为true时不显示。 |\n\n##### ChooseImageSuccess 的属性值 @chooseimagesuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errSubject | string | 是 | - | 调用API的名称 |\n| errMsg | string | 是 | - | 描述信息 |\n| tempFilePaths | Array\\<string\\> | 是 | - | 图片的本地文件路径列表 |\n| tempFiles | any | 是 | - | 图片的本地文件列表 |\n\n##### IMediaError 的属性值 @imediaerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 1101001 \\\\| 1101002 \\\\| 1101003 \\\\| 1101004 \\\\| 1101005 \\\\| 1101006 \\\\| 1101007 \\\\| 1101008 \\\\| 1101009 \\\\| 1101010 | 是 | - | 错误码<br>- 1101001 用户取消<br>- 1101002 urls至少包含一张图片地址<br>- 1101003 文件不存在<br>- 1101004 图片加载失败<br>- 1101005 未获取权限<br>- 1101006 图片或视频保存失败<br>- 1101007 图片裁剪失败<br>- 1101008 拍照或录像失败<br>- 1101009 图片压缩失败<br>- 1101010 其他错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### chooseImage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | - | - | - |\n",
		"tutorial": "\n### 参见\n[chooseImage](http://uniapp.dcloud.io/api/media/image?id=chooseimage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.media.choose-image)\n"
	},
	"choose-image": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/choose-image/choose-image.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex:1\">\r\n  <!-- #endif -->\r\n    <view>\r\n      <page-head :title=\"title\"></page-head>\r\n      <view class=\"uni-common-mt\">\r\n        <view class=\"uni-list\">\r\n          <view class=\"uni-list-cell cell-pd\">\r\n            <view class=\"uni-list-cell-left uni-label\">\r\n              图片来源\r\n            </view>\r\n            <view class=\"uni-list-cell-right\" @click=\"chooseImageSource\">\r\n              <text class=\"click-t\">{{sourceType[sourceTypeIndex]}}</text>\r\n            </view>\r\n          </view>\r\n\r\n          <view class=\"uni-list-cell cell-pd\">\r\n            <view class=\"uni-list-cell-left uni-label\">\r\n              图片质量\r\n            </view>\r\n            <view class=\"uni-list-cell-right\" @click=\"chooseImageType\">\r\n              <text class=\"click-t\">{{sizeType[sizeTypeIndex]}}</text>\r\n            </view>\r\n          </view>\r\n\r\n          <view class=\"uni-list-cell cell-pd\">\r\n            <view class=\"uni-list-cell-left uni-label\">\r\n              数量限制\r\n            </view>\r\n            <view class=\"uni-list-cell-right\">\r\n              <input class=\"click-t\" :value=\"countIndex+1\" type=\"number\" :maxlength=\"1\" @confirm=\"chooseImageCount\" confirm-type=\"done\" />\r\n            </view>\r\n          </view>\r\n          <view class=\"uni-list-cell cell-pd\">\r\n            <view class=\"uni-list-cell-left uni-label\">\r\n              图像裁剪\r\n            </view>\r\n            <view class=\"uni-list-cell-right\">\r\n              <switch :checked=\"isCrop\" @change=\"switchCrop\"></switch>\r\n            </view>\r\n          </view>\r\n          <view ref=\"cropOptionNode\" class=\"crop-option\" :style=\"{'height':isCrop?'200px':'0px'}\">\r\n            <view class=\"uni-list-cell cell-pd\">\r\n              <view class=\"uni-list-cell-left item_width\">\r\n                图片质量(%)\r\n              </view>\r\n              <view class=\"uni-list-cell-right\">\r\n                <input :value=\"cropPercent\" @confirm=\"cropPercentConfim\" type=\"number\" />\r\n              </view>\r\n            </view>\r\n            <view class=\"uni-list-cell cell-pd\">\r\n              <view class=\"uni-list-cell-left item_width\">\r\n                裁剪宽度(px)\r\n              </view>\r\n              <view class=\"uni-list-cell-right\">\r\n                <input :value=\"cropWidth\" @confirm=\"cropWidthConfim\" type=\"number\" />\r\n              </view>\r\n            </view>\r\n            <view class=\"uni-list-cell cell-pd\">\r\n              <view class=\"uni-list-cell-left item_width\">\r\n                裁剪高度(px)\r\n              </view>\r\n              <view class=\"uni-list-cell-right\">\r\n                <input :value=\"cropHeight\" @confirm=\"cropHeightConfim\" type=\"number\" />\r\n              </view>\r\n            </view>\r\n            <view class=\"uni-list-cell cell-pd\">\r\n              <view class=\"uni-list-cell-left item_width\">\r\n                保留原宽高\r\n              </view>\r\n              <view class=\"uni-list-cell-right\">\r\n                <switch :checked=\"cropResize\" @change=\"cropResizeChange\"></switch>\r\n              </view>\r\n            </view>\r\n          </view>\r\n        </view>\r\n\r\n        <view class=\"uni-list list-pd\" style=\"padding: 30rpx;\">\r\n          <view class=\"uni-flex\" style=\"margin-bottom: 20rpx;\">\r\n            <view class=\"uni-list-cell-left\">点击可预览选好的图片</view>\r\n            <view style=\"margin-left: auto;\">\r\n              <text class=\"click-t\">{{imageList.length}}/{{countIndex+1}}</text>\r\n            </view>\r\n          </view>\r\n          <view class=\"uni-flex\" style=\"flex-wrap: wrap;\">\r\n            <view v-for=\"(image,index) in imageList\" :key=\"index\" class=\"uni-uploader__input-box\" style=\"border: 0rpx;\">\r\n              <image style=\"width: 208rpx; height: 208rpx;\" :src=\"image\" :data-src=\"image\" @tap=\"previewImage(index)\"></image>\r\n              <image src=\"/static/plus.png\" class=\"image-remove\" @click=\"removeImage(index)\"></image>\r\n            </view>\r\n            <image class=\"uni-uploader__input-box\" @tap=\"chooseImage\" src=\"/static/plus.png\"></image>\r\n          </view>\r\n        </view>\r\n      </view>\r\n    </view>\r\n  <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n\r\n<script>\r\n  var sourceTypeArray = [\r\n    ['camera'],\r\n    ['album'],\r\n    ['camera', 'album']\r\n  ]\r\n  var sizeTypeArray = [\r\n    ['compressed'],\r\n    ['original'],\r\n    ['compressed', 'original']\r\n  ]\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'choose/previewImage',\r\n        imageList: [] as Array<string>,\r\n        sourceTypeIndex: 2,\r\n        sourceType: ['拍照', '相册', '拍照或相册'],\r\n        sizeTypeIndex: 2,\r\n        sizeType: ['压缩', '原图', '压缩或原图'],\r\n        countIndex: 8,\r\n        count: [1, 2, 3, 4, 5, 6, 7, 8, 9],\r\n        isCrop: false,\r\n        cropPercent: 80,\r\n        cropWidth: 100,\r\n        cropHeight: 100,\r\n        cropResize: false\r\n      }\r\n    },\r\n    onUnload() {\r\n      this.imageList = [];\r\n      this.sourceTypeIndex = 2\r\n      this.sourceType = ['拍照', '相册', '拍照或相册']\r\n      this.sizeTypeIndex = 2\r\n      this.sizeType = ['压缩', '原图', '压缩或原图']\r\n      this.countIndex = 8\r\n    },\r\n    methods: {\r\n      cropHeightConfim(e : InputConfirmEvent) {\r\n        let value = parseInt(e.detail.value)\r\n        if (value > 0) {\r\n          this.cropHeight = value\r\n        } else {\r\n          uni.showToast({\r\n            position: \"bottom\",\r\n            title: \"裁剪高度需要大于0\"\r\n          })\r\n        }\r\n      },\r\n      cropWidthConfim(e : InputConfirmEvent) {\r\n        let value = parseInt(e.detail.value)\r\n        if (value > 0) {\r\n          this.cropWidth = value\r\n        } else {\r\n          uni.showToast({\r\n            position: \"bottom\",\r\n            title: \"裁剪宽度需要大于0\"\r\n          })\r\n        }\r\n      },\r\n      cropPercentConfim(e : InputConfirmEvent) {\r\n        let value = parseInt(e.detail.value)\r\n        if (value > 0 && value <= 100) {\r\n          this.cropPercent = value\r\n        } else {\r\n          uni.showToast({\r\n            position: \"bottom\",\r\n            title: \"请输入0~100之间的值\"\r\n          })\r\n        }\r\n      },\r\n      cropResizeChange(e : SwitchChangeEvent) {\r\n        this.cropResize = e.detail.value\r\n      },\r\n      switchCrop(e : SwitchChangeEvent) {\r\n        this.isCrop = e.detail.value\r\n      },\r\n      removeImage(index : number) {\r\n        this.imageList.splice(index, 1)\r\n      },\r\n      chooseImageSource() {\r\n        uni.showActionSheet({\r\n          itemList: ['拍照', '相册', '拍照或相册'],\r\n          success: (e) => {\r\n            this.sourceTypeIndex = e.tapIndex!\r\n          }\r\n        })\r\n      },\r\n      chooseImageType() {\r\n        uni.showActionSheet({\r\n          itemList: ['压缩', '原图', '压缩或原图'],\r\n          success: (e) => {\r\n            this.sizeTypeIndex = e.tapIndex!\r\n          }\r\n        })\r\n      },\r\n      chooseImageCount(event : InputConfirmEvent) {\r\n        let count = parseInt(event.detail.value) - 1\r\n        if (count < 0) {\r\n          uni.showToast({\r\n            position: \"bottom\",\r\n            title: \"图片数量应该大于0\"\r\n          })\r\n          return\r\n        }\r\n        this.countIndex = count\r\n      },\r\n      chooseImage: function () {\r\n        // var cropOption:ChooseImageCropOptions|null = this.isCrop ? null : new ChooseImageCropOptions(  )\r\n        if (this.imageList.length >= 9) {\r\n          uni.showToast({\r\n            position: \"bottom\",\r\n            title: \"已经有9张图片了,请删除部分图片之后重新选择\"\r\n          })\r\n          return\r\n        }\r\n        uni.chooseImage({\r\n          sourceType: sourceTypeArray[this.sourceTypeIndex],\r\n          sizeType: sizeTypeArray[this.sizeTypeIndex],\r\n          crop: this.isCrop ? { \"quality\": this.cropPercent, \"width\": this.cropWidth, \"height\": this.cropHeight, \"resize\": this.cropResize } as ChooseImageCropOptions : null,\r\n          count: this.imageList.length + this.count[this.countIndex] > 9 ? 9 - this.imageList.length : this.count[this.countIndex],\r\n          success: (res) => {\r\n            this.imageList = this.imageList.concat(res.tempFilePaths);\r\n          },\r\n          fail: (err) => {\r\n            console.log(\"err: \", JSON.stringify(err));\r\n          }\r\n        })\r\n      },\r\n      previewImage: function (index : number) {\r\n        uni.previewImage({\r\n          current: index,\r\n          urls: this.imageList\r\n        })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n  .cell-pd {\r\n    padding: 22rpx 30rpx;\r\n  }\r\n\r\n  .click-t {\r\n    color: darkgray;\r\n  }\r\n\r\n  .list-pd {\r\n    margin-top: 50rpx;\r\n  }\r\n\r\n  .uni-uploader__input-box {\r\n    margin: 10rpx;\r\n    width: 208rpx;\r\n    height: 208rpx;\r\n    border: 2rpx solid #D9D9D9;\r\n  }\r\n\r\n  .uni-uploader__input {\r\n    position: absolute;\r\n    z-index: 1;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    opacity: 0;\r\n  }\r\n\r\n  .image-remove {\r\n    transform: rotate(45deg);\r\n    width: 50rpx;\r\n    height: 50rpx;\r\n    position: absolute;\r\n    top: 0;\r\n    right: 0;\r\n    border-radius: 25rpx;\r\n    background-color: rgba(200, 200, 200, 0.8);\r\n  }\r\n\r\n  .item_width {\r\n    width: 260rpx;\r\n  }\r\n\r\n  .crop-option {\r\n    border-top-color: lightgray;\r\n    border-width: 1rpx;\r\n    border-style: solid;\r\n    padding: 20rpx;\r\n    transition: height;\r\n    transition-duration: 300;\r\n  }\r\n</style>\r\n\n```"
	},
	"previewImage": {
		"name": "## uni.previewImage(options) @previewimage",
		"description": "预览图片",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [PreviewImageOptions](#previewimageoptions-values) | 是 | - | - |\n#### PreviewImageOptions 的属性值 @previewimageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| current | any | 否 | - | current 为当前显示图片的链接/索引值,不填或填写的值无效则为 urls 的第一张。 |\n| urls | Array\\<string.ImageURIString\\> | 是 | - | 需要预览的图片链接列表 |\n| indicator | string | 否 | - | 图片指示器样式 - default: 底部圆点指示器 - number: 顶部数字指示器 - none: 不显示指示器 |\n| loop | boolean | 否 | - | 是否可循环预览 |\n| success | (callback: [PreviewImageSuccess](#previewimagesuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (callback: [IMediaError](#imediaerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (callback: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### PreviewImageSuccess 的属性值 @previewimagesuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errSubject | string | 是 | - | 调用API的名称 |\n| errMsg | string | 是 | - | 描述信息 |\n\n##### IMediaError 的属性值 @imediaerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 1101001 \\\\| 1101002 \\\\| 1101003 \\\\| 1101004 \\\\| 1101005 \\\\| 1101006 \\\\| 1101007 \\\\| 1101008 \\\\| 1101009 \\\\| 1101010 | 是 | - | 错误码<br>- 1101001 用户取消<br>- 1101002 urls至少包含一张图片地址<br>- 1101003 文件不存在<br>- 1101004 图片加载失败<br>- 1101005 未获取权限<br>- 1101006 图片或视频保存失败<br>- 1101007 图片裁剪失败<br>- 1101008 拍照或录像失败<br>- 1101009 图片压缩失败<br>- 1101010 其他错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### previewImage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | - | - | - |\n",
		"tutorial": "\n### 参见\n[previewImage](http://uniapp.dcloud.io/api/media/image?id=previewimage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.media.preview-image.previewImage)\n"
	},
	"closePreviewImage": {
		"name": "## uni.closePreviewImage(options) @closepreviewimage",
		"description": "关闭图片预览",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ClosePreviewImageOptions](#closepreviewimageoptions-values) | 是 | - | - |\n#### ClosePreviewImageOptions 的属性值 @closepreviewimageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (callback: [ClosePreviewImageSuccess](#closepreviewimagesuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (callback: [IMediaError](#imediaerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (callback: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### ClosePreviewImageSuccess 的属性值 @closepreviewimagesuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | 错误信息 |\n\n##### IMediaError 的属性值 @imediaerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 1101001 \\\\| 1101002 \\\\| 1101003 \\\\| 1101004 \\\\| 1101005 \\\\| 1101006 \\\\| 1101007 \\\\| 1101008 \\\\| 1101009 \\\\| 1101010 | 是 | - | 错误码<br>- 1101001 用户取消<br>- 1101002 urls至少包含一张图片地址<br>- 1101003 文件不存在<br>- 1101004 图片加载失败<br>- 1101005 未获取权限<br>- 1101006 图片或视频保存失败<br>- 1101007 图片裁剪失败<br>- 1101008 拍照或录像失败<br>- 1101009 图片压缩失败<br>- 1101010 其他错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### closePreviewImage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | - | - | - |\n",
		"tutorial": "\n### 参见\n[closePreviewImage](http://uniapp.dcloud.io/api/media/image?id=closepreviewimage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.media.preview-image.closePreviewImage)\n"
	},
	"preview-image": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/preview-image/preview-image.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n    <!-- #endif -->\r\n    <view style=\"padding-left: 16rpx; padding-right: 16rpx\">\r\n      <view>\r\n        <text class=\"text-desc\">图片指示器样式</text>\r\n        <radio-group\r\n          class=\"cell-ct\"\r\n          style=\"background-color: white\"\r\n          @change=\"onIndicatorChanged\"\r\n        >\r\n          <view\r\n            class=\"indicator-it\"\r\n            v-for=\"(item, index) in indicator\"\r\n            :key=\"item.value\"\r\n          >\r\n            <radio :checked=\"index == 0\" :value=\"item.value\">{{\r\n              item.name\r\n            }}</radio>\r\n          </view>\r\n        </radio-group>\r\n      </view>\r\n      <view>\r\n        <checkbox-group\r\n          @change=\"onCheckboxChange\"\r\n          style=\"margin-top: 32rpx; margin-bottom: 32rpx; margin-left: 16rpx\"\r\n        >\r\n          <checkbox :checked=\"isLoop\" style=\"margin-right: 30rpx\"\r\n            >循环播放</checkbox\r\n          >\r\n        </checkbox-group>\r\n      </view>\r\n      <view style=\"background-color: white\">\r\n        <text class=\"text-desc\">点击图片开始预览</text>\r\n        <view class=\"cell-ct\" style=\"background-color: #eeeeee; padding: 16rpx\">\r\n          <view\r\n            class=\"cell cell-choose-image\"\r\n            v-for=\"(image, index) in imageList\"\r\n            :key=\"index\"\r\n          >\r\n            <image\r\n              style=\"width: 210rpx; height: 210rpx\"\r\n              mode=\"aspectFit\"\r\n              :src=\"image\"\r\n              @click=\"previewImage(index)\"\r\n            ></image>\r\n          </view>\r\n          <image\r\n            class=\"cell cell-choose-image\"\r\n            src=\"/static/plus.png\"\r\n            @click=\"chooseImage\"\r\n          >\r\n            <view></view>\r\n          </image>\r\n        </view>\r\n      </view>\r\n    </view>\r\n    <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n\r\n<script>\r\ntype ItemType = {\r\n\tvalue: string,\r\n\tname: string\r\n}\r\n\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\timageList: [\"https://web-assets.dcloud.net.cn/unidoc/zh/uni@2x.png\", \"/static/uni.png\"],\r\n\t\t\tindicator: [{\r\n\t\t\t\tvalue: \"default\",\r\n\t\t\t\tname: \"圆点\"\r\n\t\t\t}, {\r\n\t\t\t\tvalue: \"number\",\r\n\t\t\t\tname: \"数字\"\r\n\t\t\t}, {\r\n\t\t\t\tvalue: \"none\",\r\n\t\t\t\tname: \"不显示\"\r\n\t\t\t}] as ItemType[],\r\n\t\t\tcurrentIndicator: \"default\",\r\n\t\t\tisLoop: true\r\n\t\t}\r\n\t},\r\n\tmethods: {\r\n\t\tpreviewImage(index: number) {\r\n\t\t\tuni.previewImage({\r\n\t\t\t\turls: this.imageList,\r\n\t\t\t\tcurrent: index,\r\n\t\t\t\tindicator: this.currentIndicator,\r\n\t\t\t\tloop: this.isLoop\r\n\t\t\t})\r\n\t\t},\r\n\t\tchooseImage() {\r\n\t\t\tuni.chooseImage({\r\n\t\t\t\tsourceType: ['album'],\r\n\t\t\t\tsuccess: (e) => {\r\n\t\t\t\t\tthis.imageList = this.imageList.concat(e.tempFilePaths)\r\n\t\t\t\t},\r\n\t\t\t\tfail(_) {\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t},\r\n\t\tonIndicatorChanged(e: RadioGroupChangeEvent) {\r\n\t\t\tthis.currentIndicator = e.detail.value\r\n\t\t},\r\n\t\tonCheckboxChange(_: CheckboxGroupChangeEvent) {\r\n\t\t\tthis.isLoop = !this.isLoop\r\n\t\t}\r\n\t}\r\n}\r\n</script>\r\n\r\n<style>\r\n.text-desc {\r\n  margin-top: 32rpx;\r\n  margin-left: 16rpx;\r\n  margin-bottom: 32rpx;\r\n  font-weight: bold;\r\n}\r\n\r\n.cell-ct {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  flex-direction: row;\r\n}\r\n\r\n.cell {\r\n  margin-left: 14rpx;\r\n  width: 210rpx;\r\n  height: 210rpx;\r\n}\r\n\r\n.cell-choose-image {\r\n  border-width: 1px;\r\n  border-style: solid;\r\n  border-color: lightgray;\r\n}\r\n\r\n.indicator-it {\r\n  margin: 16rpx;\r\n}\r\n</style>\r\n\n```"
	},
	"saveImageToPhotosAlbum": {
		"name": "## uni.saveImageToPhotosAlbum(options) @saveimagetophotosalbum",
		"description": "保存图片到系统相册",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SaveImageToPhotosAlbumOptions](#saveimagetophotosalbumoptions-values) | 是 | - | - |\n#### SaveImageToPhotosAlbumOptions 的属性值 @saveimagetophotosalbumoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| filePath | string.ImageURIString | 是 | - | 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径 |\n| success | (callback: [SaveImageToPhotosAlbumSuccess](#saveimagetophotosalbumsuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (callback: [IMediaError](#imediaerror-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (callback: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### SaveImageToPhotosAlbumSuccess 的属性值 @saveimagetophotosalbumsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| path | string | 是 | - | 保存到相册的图片路径 |\n\n##### IMediaError 的属性值 @imediaerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 1101001 \\\\| 1101002 \\\\| 1101003 \\\\| 1101004 \\\\| 1101005 \\\\| 1101006 \\\\| 1101007 \\\\| 1101008 \\\\| 1101009 \\\\| 1101010 | 是 | - | 错误码<br>- 1101001 用户取消<br>- 1101002 urls至少包含一张图片地址<br>- 1101003 文件不存在<br>- 1101004 图片加载失败<br>- 1101005 未获取权限<br>- 1101006 图片或视频保存失败<br>- 1101007 图片裁剪失败<br>- 1101008 拍照或录像失败<br>- 1101009 图片压缩失败<br>- 1101010 其他错误 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### saveImageToPhotosAlbum 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9+ | - | - | - |\n",
		"tutorial": "\n### 参见\n[saveImageToPhotosAlbum](http://uniapp.dcloud.io/api/media/image?id=saveimagetophotosalbum)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.media.save-image-to-photos-album)\n"
	},
	"save-image-to-photos-album": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/save-image-to-photos-album/save-image-to-photos-album.uvue) \n ```html\n<template>\r\n\t<!-- #ifdef APP -->\r\n\t<scroll-view style=\"flex:1\">\r\n\t\t<!-- #endif -->\r\n\t\t<image src=\"/static/uni.png\" style=\"margin: 30rpx 200rpx;height:196px;width:196px;\"></image>\r\n\t\t<button style=\"margin: 30rpx;\" @click=\"saveImage\">将图片保存到手机相册</button>\r\n\t\t<!-- #ifdef APP -->\r\n\t</scroll-view>\r\n\t<!-- #endif -->\r\n</template>\r\n\r\n<script>\r\n\texport default {\r\n\t\tdata() {\r\n\t\t\treturn {\r\n\t\t\t}\r\n\t\t},\r\n\t\tmethods: {\r\n\t\t\tsaveImage() {\r\n\t\t\t\tuni.saveImageToPhotosAlbum({\r\n\t\t\t\t\tfilePath: \"/static/uni.png\",\r\n\t\t\t\t\tsuccess() {\r\n\t\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\t\tposition: \"center\",\r\n\t\t\t\t\t\t\ticon: \"none\",\r\n\t\t\t\t\t\t\ttitle: \"图片保存成功,请到手机相册查看\"\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t},\r\n\t\t\t\t\tfail(e) {\r\n\t\t\t\t\t\tuni.showModal({\r\n\t\t\t\t\t\t\tcontent: \"保存相册失败,errCode:\" + e.errCode + \",errMsg:\" + e.errMsg + \",errSubject:\" + e.errSubject,\r\n\t\t\t\t\t\t\tshowCancel: false\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n</script>\r\n\r\n<style>\r\n</style>\r\n\n```"
	},
	"getLocation": {
		"name": "## uni.getLocation(options) @getlocation",
		"description": "获取当前的地理位置、速度",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetLocationOptions](#getlocationoptions-values) | 是 | - | - |\n#### GetLocationOptions 的属性值 @getlocationoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| type | string | 否 | wgs84 | 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于uni.openLocation的坐标 |\n| altitude | boolean | 否 | false | 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度 |\n| geocode | boolean | 否 | false | 传入 true 会解析地址 |\n| highAccuracyExpireTime | number | 否 | 3000 | 高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果 |\n| isHighAccuracy | boolean | 否 | false | 开启高精度定位 |\n| success | (result: [GetLocationSuccess](#getlocationsuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (result: [IGetLocationFail](#igetlocationfail-values)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (result: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetLocationSuccess 的属性值 @getlocationsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| latitude | number | 是 | 0 | 纬度,浮点数,范围为-90~90,负数表示南纬 |\n| longitude | number | 是 | 0 | 经度,范围为-180~180,负数表示西经 |\n| speed | number | 是 | 0 | 速度,浮点数,单位m/s |\n| accuracy | number | 是 | - | 位置的精确度 |\n| altitude | number | 是 | 0 | 高度,单位 m |\n| verticalAccuracy | number | 是 | 0 | 垂直精度,单位 m(Android 无法获取,返回 0) |\n| horizontalAccuracy | number | 是 | 0 | 水平精度,单位 m |\n| address | any | 否 | null | 地址信息 |\n\n##### IGetLocationFail 的属性值 @igetlocationfail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 1505004 \\\\| 1505021 \\\\| 1505022 \\\\| 1505023 \\\\| 1505024 | 是 | - | 错误码<br>- 1505004  缺失权限<br>- 1505021  超时<br>- 1505022  不支持的定位类型<br>- 1505023  不支持逆地理编码<br>- 1505024  没有找到具体的定位引擎,请定位开关是否已打开 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n",
		"returnValue": "",
		"compatibility": "### getLocation 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | √ | 3.9.0 | x | x | x |\n",
		"tutorial": "\n### 参见\n[getLocation]([](http://uniapp.dcloud.io/api/location/location?id=getlocation))\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.location.get-location)\n"
	},
	"get-location": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-location/get-location.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head :title=\"title\"></page-head>\r\n    <view style=\"padding: 4px;\">\r\n    \t<text class=\"hello-text\">\r\n        真机运行标准基座仅包含系统定位,即system。\\n\r\n        部分手机因gms兼容不好可能导致无法定位。\\n\r\n        gcj国标、逆地理信息等功能需三方sdk定位。如果需要类似能力可以下载腾讯定位插件,打包自定义基座。参考示例:</text>\r\n    \t<u-link :href=\"'https://ext.dcloud.net.cn/plugin?id=14569'\" :text=\"'https://ext.dcloud.net.cn/plugin?id=14569'\" :inWhiteList=\"true\"></u-link>\r\n    </view>\r\n\r\n    <view class=\"uni-padding-wrap uni-common-mt\">\r\n      <view class=\"uni-list\">\r\n        <radio-group @change=\"radioChange\">\r\n          <radio class=\"uni-list-cell uni-list-cell-pd\" v-for=\"(item, index) in items\" :key=\"item.value\"\r\n            :class=\"index < items.length - 1 ? 'uni-list-cell-line': ''\" :value=\"item.value\"\r\n            :checked=\"index === current\">\r\n            {{item.name}}\r\n          </radio>\r\n        </radio-group>\r\n      </view>\r\n      <view class=\"uni-list-cell uni-list-cell-pd\">\r\n        <view class=\"uni-list-cell-db\">高度信息</view>\r\n        <switch :checked=\"altitudeSelect\" @change=\"altitudeChange\" />\r\n      </view>\r\n      <view class=\"uni-list-cell uni-list-cell-pd\">\r\n        <view class=\"uni-list-cell-db\">开启高精度定位</view>\r\n        <switch :checked=\"isHighAccuracySelect\" @change=\"highAccuracySelectChange\" />\r\n      </view>\r\n      <view class=\"uni-list-cell uni-list-cell-pd\">\r\n        <view class=\"uni-list-cell-db\">是否解析地址信息</view>\r\n        <switch :checked=\"geocodeSelect\" @change=\"geocodeChange\" />\r\n      </view>\r\n      <text>{{exeRet}}</text>\r\n      <view class=\"uni-btn-v\">\r\n        <button class=\"uni-btn\" type=\"default\" @tap=\"getLocationTap\">获取定位</button>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n<script lang=\"uts\">\r\n  type ItemType = {\r\n    value : string,\r\n    name : string,\r\n  }\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: 'get-location',\r\n        altitudeSelect: false,\r\n        isHighAccuracySelect: false,\r\n        geocodeSelect: false,\r\n        exeRet: '',\r\n        items: [\r\n        {\r\n          value: 'wgs84',\r\n          name: 'wgs84'\r\n        },\r\n        {\r\n          value: 'gcj02',\r\n          name: 'gcj02'\r\n        }\r\n        ] as ItemType[],\r\n        current: 0,\r\n      }\r\n    },\r\n    methods: {\r\n      altitudeChange: function (e : SwitchChangeEvent) {\r\n        this.altitudeSelect = e.detail.value\r\n      },\r\n      geocodeChange: function (e : SwitchChangeEvent) {\r\n        this.geocodeSelect = e.detail.value\r\n      },\r\n      highAccuracySelectChange: function (e : SwitchChangeEvent) {\r\n        this.isHighAccuracySelect = e.detail.value\r\n      },\r\n      radioChange(e : RadioGroupChangeEvent) {\r\n        for (let i = 0; i < this.items.length; i++) {\r\n          if (this.items[i].value === e.detail.value) {\r\n            this.current = i;\r\n            break;\r\n          }\r\n        }\r\n      },\r\n      getLocationTap: function () {\r\n        uni.showLoading({\r\n          title: '定位中'\r\n        })\r\n        uni.getLocation(({\r\n          type: this.items[this.current].value,\r\n          altitude: this.altitudeSelect,\r\n          isHighAccuracy: this.isHighAccuracySelect,\r\n          geocode: this.geocodeSelect,\r\n          success: (res : any) => {\r\n            uni.hideLoading()\r\n            console.log(res);\r\n            this.exeRet = JSON.stringify(res)\r\n          },\r\n          fail: (res : any) => {\r\n            uni.hideLoading()\r\n            console.log(res);\r\n            this.exeRet = JSON.stringify(res)\r\n          },\r\n          complete: (res : any) => {\r\n            uni.hideLoading()\r\n            console.log(res);\r\n            this.exeRet = JSON.stringify(res)\r\n          }\r\n        }));\r\n\r\n\r\n      }\r\n\r\n    }\r\n  }\r\n</script>\r\n<style>\r\n@import '@/common/uni-uvue.css';\r\n</style>\r\n\n```"
	},
	"setStorage": {
		"name": "## uni.setStorage(options) @setstorage",
		"description": "\r\nuni.setStorage函数定义\r\n将数据存储在本地storage存储中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。  \r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [SetStorageOptions](#setstorageoptions-values) | 是 | - | uni.setStorage参数定义 |\n#### SetStorageOptions 的属性值 @setstorageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| key | string | 是 | - | 本地存储中的指定的 key |\n| data | any | 是 | - | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 |\n| success | (res: SetStorageSuccess) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n",
		"returnValue": "",
		"compatibility": "### setStorage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[setStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#setstorage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.getStorageInfo)\n"
	},
	"setStorageSync": {
		"name": "## uni.setStorageSync(key, data) @setstoragesync",
		"description": "\r\nuni.setStorageSync函数定义\r\n将 data 存储在本地storage存储中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| key | string | 是 | - | 本地storage存储中的指定的 key |\n| data | any | 是 | - | 需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象 |",
		"returnValue": "",
		"compatibility": "### setStorageSync 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[setStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#setstoragesync)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.getStorageInfoSync)\n"
	},
	"getStorage": {
		"name": "## uni.getStorage(options) @getstorage",
		"description": "\r\nuni.getStorage函数定义\r\n从本地存储中异步获取指定 key 对应的内容。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetStorageOptions](#getstorageoptions-values) | 是 | - | uni.getStorage参数定义 |\n#### GetStorageOptions 的属性值 @getstorageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| key | string | 是 | - | 本地存储中的指定的 key |\n| success | (res: [GetStorageSuccess](#getstoragesuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetStorageSuccess 的属性值 @getstoragesuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| data | any | 否 | - | key 对应的内容 |\n",
		"returnValue": "",
		"compatibility": "### getStorage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[getStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.getStorage)\n"
	},
	"getStorageSync": {
		"name": "## uni.getStorageSync(key) @getstoragesync",
		"description": "\r\nuni.getStorageSync函数定义\r\n从本地存储中同步获取指定 key 对应的内容。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| key | string | 是 | - | 本地存储中的指定的 key |",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| any | 否 | \n",
		"compatibility": "### getStorageSync 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[getStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstoragesync)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.getStorageSync)\n"
	},
	"getStorageInfo": {
		"name": "## uni.getStorageInfo(options) @getstorageinfo",
		"description": "\r\nuni.getStorageInfo函数定义\r\n异步获取当前 storage 的相关信息。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetStorageInfoOptions](#getstorageinfooptions-values) | 是 | - | uni.getStorageInfo参数定义 |\n#### GetStorageInfoOptions 的属性值 @getstorageinfooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (res: [GetStorageInfoSuccess](#getstorageinfosuccess-values)) => void | 否 | - | 接口调用成功的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n##### GetStorageInfoSuccess 的属性值 @getstorageinfosuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| keys | Array\\<string\\> | 是 | - | 当前 storage 中所有的 key |\n| currentSize | number | 是 | - | 当前占用的空间大小, 单位:kb |\n| limitSize | number | 是 | - | 限制的空间大小, 单位:kb |\n",
		"returnValue": "",
		"compatibility": "### getStorageInfo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[getStorageInfo](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorageinfo)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.setStorage)\n"
	},
	"getStorageInfoSync": {
		"name": "## uni.getStorageInfoSync() @getstorageinfosync",
		"description": "\r\nuni.getStorageInfoSync函数定义\r\n同步获取当前 storage 的相关信息。\r\n\r\n",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [GetStorageInfoSuccess](#getstorageinfosuccess-values) | \n\n#### GetStorageInfoSuccess 的属性值 @getstorageinfosuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| keys | Array\\<string\\> | 是 | - | 当前 storage 中所有的 key |\n| currentSize | number | 是 | - | 当前占用的空间大小, 单位:kb |\n| limitSize | number | 是 | - | 限制的空间大小, 单位:kb |\n",
		"compatibility": "### getStorageInfoSync 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[getStorageInfoSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#getstorageinfosync)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.setStorageSync)\n"
	},
	"removeStorage": {
		"name": "## uni.removeStorage(options) @removestorage",
		"description": "\r\nuni.removeStorage函数定义\r\n从本地存储中异步移除指定 key。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [RemoveStorageOptions](#removestorageoptions-values) | 是 | - | uni.removeStorage参数定义 |\n#### RemoveStorageOptions 的属性值 @removestorageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| key | string | 是 | - | 本地存储中的指定的 key |\n| success | (res: RemoveStorageSuccess) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n",
		"returnValue": "",
		"compatibility": "### removeStorage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[removeStorage](hhttps://uniapp.dcloud.net.cn/api/storage/storage.html#removestorage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.removeStorage)\n"
	},
	"removeStorageSync": {
		"name": "## uni.removeStorageSync(key) @removestoragesync",
		"description": "\r\nuni.removeStorageSync函数定义\r\n从本地存储中同步移除指定 key。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| key | string | 是 | - | 本地存储中的指定的 key |",
		"returnValue": "",
		"compatibility": "### removeStorageSync 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[removeStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#removestoragesync)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.removeStorageSync)\n"
	},
	"clearStorage": {
		"name": "## uni.clearStorage(option?) @clearstorage",
		"description": "\r\nuni.clearStorage函数定义\r\n清除本地数据存储。\r\n",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| option | [ClearStorageOptions](#clearstorageoptions-values) | 否 | - | - |\n#### ClearStorageOptions 的属性值 @clearstorageoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | (res: ClearStorageSuccess) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n",
		"returnValue": "",
		"compatibility": "### clearStorage 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[clearStorage](https://uniapp.dcloud.net.cn/api/storage/storage.html#clearstorage)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.clearStorage)\n"
	},
	"clearStorageSync": {
		"name": "## uni.clearStorageSync() @clearstoragesync",
		"description": "\r\nuni.clearStorageSync函数定义\r\n清除本地数据存储。\r\n",
		"param": "",
		"returnValue": "",
		"compatibility": "### clearStorageSync 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | 2.0.3 | 3.9.0 | 9.0 | 2.0.3 | 3.9.0 |\n",
		"tutorial": "\n### 参见\n[clearStorageSync](https://uniapp.dcloud.net.cn/api/storage/storage.html#clearstoragesync)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.storage.storage.clearStorageSync)\n"
	},
	"storage": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/storage/storage.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n    <!-- #endif -->\r\n    <view>\r\n      <page-head :title=\"title\"></page-head>\r\n      <view class=\"uni-common-mt\">\r\n        <view class=\"uni-list\">\r\n          <view class=\"uni-list-cell uni-list-cell-line\">\r\n            <view class=\"uni-list-cell-left\">\r\n              <view class=\"uni-label\">key</view>\r\n            </view>\r\n            <view class=\"uni-list-cell-db\">\r\n              <input\r\n                class=\"uni-input\"\r\n                type=\"text\"\r\n                placeholder=\"请输入key\"\r\n                name=\"key\"\r\n                :value=\"key\"\r\n                @input=\"keyChange\"\r\n              />\r\n            </view>\r\n          </view>\r\n          <view class=\"uni-list-cell\">\r\n            <view class=\"uni-list-cell-left\">\r\n              <view class=\"uni-label\">value</view>\r\n            </view>\r\n            <view class=\"uni-list-cell-db\">\r\n              <input\r\n                class=\"uni-input\"\r\n                type=\"text\"\r\n                placeholder=\"请输入value\"\r\n                name=\"data\"\r\n                :value=\"data\"\r\n                @input=\"dataChange\"\r\n              />\r\n            </view>\r\n          </view>\r\n        </view>\r\n        <view class=\"uni-padding-wrap\">\r\n          <view class=\"uni-btn-v\">\r\n            <button class=\"uni-btn btn-getStorageInfoASync\" type=\"primary\" @tap=\"getStorageInfo\">\r\n              获取存储概述信息-异步\r\n            </button>\r\n            <button class=\"uni-btn btn-getStorageInfoSync\" @tap=\"getStorageInfoSync\">\r\n              获取存储概述信息-同步\r\n            </button>\r\n          </view>\r\n          <text>{{ storageInfo }}</text>\r\n          <view class=\"uni-flex uni-row\">\r\n            <button\r\n              type=\"default\"\r\n              style=\"width:325rpx\"\r\n              @tap=\"strMock\"\r\n            >\r\n              填充字符串\r\n            </button>\r\n            <button\r\n              type=\"default\"\r\n              style=\"width:325rpx\"\r\n              @tap=\"complexMock\"\r\n            >\r\n              填充复杂对象\r\n            </button>\r\n          </view>\r\n          <view class=\"uni-flex uni-row\">\r\n            <button\r\n              type=\"default\"\r\n              style=\"width:325rpx\"\r\n              @tap=\"numberMock\"\r\n            >\r\n              填充整型\r\n            </button>\r\n            <button\r\n              type=\"default\"\r\n              style=\"width:325rpx\"\r\n              @tap=\"floatMock\"\r\n            >\r\n              填充浮点型\r\n            </button>\r\n          </view>\r\n        </view>\r\n        <view class=\"uni-padding-wrap\">\r\n          <view class=\"uni-btn-v\">\r\n            <button\r\n              type=\"primary\"\r\n              class=\"uni-btn btn-setstorageAsync\"\r\n              @tap=\"setStorage\"\r\n            >\r\n              存储数据-异步\r\n            </button>\r\n            <button class=\"uni-btn btn-getstorageAsync\" @tap=\"getStorage\">读取数据-异步</button>\r\n            <button class=\"uni-btn btn-removeStorageInfoASync\" @tap=\"removeStorage\">移除数据-异步</button>\r\n            <button class=\"uni-btn btn-clearStorageInfoASync\" @tap=\"clearStorage\">清理数据-异步</button>\r\n          </view>\r\n\r\n          <view class=\"uni-btn-v\">\r\n            <button\r\n              type=\"primary\"\r\n              class=\"uni-btn btn-setstorageSync\"\r\n              @tap=\"setStorageSync\"\r\n            >\r\n              存储数据-同步\r\n            </button>\r\n            <button class=\"uni-btn btn-getstorageSync\" @tap=\"getStorageSync\">读取数据-同步</button>\r\n            <button class=\"uni-btn btn-removeStorageInfoSync\" @tap=\"removeStorageSync\">\r\n              移除数据-同步\r\n            </button>\r\n            <button class=\"uni-btn btn-clearStorageInfoSync\" @tap=\"clearStorageSync\">\r\n              清理数据-同步\r\n            </button>\r\n          </view>\r\n        </view>\r\n      </view>\r\n    </view>\r\n    <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n<script lang=\"uts\">\r\nexport default {\r\n  data() {\r\n    return {\r\n      title: 'get/set/clearStorage',\r\n      key: '',\r\n      data: '' as any,\r\n      apiGetData:'' as any|null,\r\n      storageInfo: '',\r\n    }\r\n  },\r\n  methods: {\r\n    getStorageInfo() {\r\n      uni.getStorageInfo({\r\n        success: (res) => {\r\n          this.apiGetData = res\r\n          this.storageInfo = JSON.stringify(res)\r\n        },\r\n      })\r\n    },\r\n    getStorageInfoSync() {\r\n      try {\r\n        const res = uni.getStorageInfoSync()\r\n        this.apiGetData = res\r\n        this.storageInfo = JSON.stringify(res)\r\n      } catch (e) {\r\n        // error\r\n        console.log(e)\r\n      }\r\n    },\r\n    strMock() {\r\n      this.key = 'key_' + Math.random()\r\n      this.data = '测试字符串数据,长度为16个字符'\r\n    },\r\n    complexMock() {\r\n      this.key = 'key_' + Math.random()\r\n      let jsonObj = {\r\n        name: '张三',\r\n        age: 12,\r\n        classMate: [\r\n          {\r\n            id: 1001,\r\n            name: '李四',\r\n          },\r\n          {\r\n            id: 1002,\r\n            name: 'jack ma',\r\n          },\r\n        ],\r\n      }\r\n      this.data = jsonObj\r\n    },\r\n    numberMock() {\r\n      this.key = 'key_' + Math.random()\r\n      this.data = 10011\r\n    },\r\n    floatMock() {\r\n      this.key = 'key_' + Math.random()\r\n      this.data = 3.1415926535893384626\r\n    },\r\n\r\n    keyChange: function (e: InputEvent) {\r\n      this.key = e.detail.value\r\n    },\r\n    dataChange: function (e: InputEvent) {\r\n      this.data = e.detail.value\r\n    },\r\n    getStorage: function () {\r\n      var key = this.key\r\n      if (key.length == 0) {\r\n        uni.showModal({\r\n          title: '读取数据失败',\r\n          content: 'key 不能为空',\r\n          showCancel: false,\r\n        })\r\n      } else {\r\n        let that = this\r\n        uni.getStorage({\r\n          key: key,\r\n          success: (res) => {\r\n            that.apiGetData = res.data\r\n\r\n            let desc:string = typeof this.apiGetData\r\n            if(\"object\" == desc){\r\n              desc = desc  + \": \" + JSON.stringify(this.apiGetData)\r\n            }else{\r\n              desc = desc  + \": \" + this.apiGetData\r\n            }\r\n\r\n            uni.showModal({\r\n              title: '读取数据成功',\r\n              content: desc,\r\n              showCancel: false,\r\n            })\r\n          },\r\n          fail: () => {\r\n            uni.showModal({\r\n              title: '读取数据失败',\r\n              content: '找不到 key 对应的数据',\r\n              showCancel: false,\r\n            })\r\n          },\r\n        })\r\n      }\r\n    },\r\n    getStorageSync: function () {\r\n      var key = this.key\r\n      if (key.length == 0) {\r\n        uni.showModal({\r\n          title: '读取数据失败',\r\n          content: 'key 不能为空',\r\n          showCancel: false,\r\n        })\r\n      } else {\r\n        this.apiGetData = uni.getStorageSync(key)\r\n\r\n        let desc:string = typeof this.apiGetData\r\n        if(\"object\" == desc){\r\n          desc = desc  + \": \" + JSON.stringify(this.apiGetData)\r\n        }else{\r\n          desc = desc  + \": \" + this.apiGetData\r\n        }\r\n\r\n        uni.showModal({\r\n          title: '读取数据成功',\r\n          content:  desc,\r\n          showCancel: false,\r\n        })\r\n      }\r\n    },\r\n    setStorage: function () {\r\n      var key = this.key\r\n      var data = this.data\r\n      if (key.length == 0) {\r\n        uni.showModal({\r\n          title: '保存数据失败',\r\n          content: 'key 不能为空',\r\n          showCancel: false,\r\n        })\r\n      } else {\r\n        uni.setStorage({\r\n          key: key,\r\n          data: data,\r\n          success: () => {\r\n            uni.showModal({\r\n              title: '存储数据成功',\r\n              showCancel: false,\r\n            })\r\n          },\r\n          fail: () => {\r\n            uni.showModal({\r\n              title: '储存数据失败!',\r\n              showCancel: false,\r\n            })\r\n          },\r\n        })\r\n      }\r\n    },\r\n    setStorageSync: function () {\r\n      var key = this.key\r\n      var data = this.data\r\n      if (key.length == 0) {\r\n        uni.showModal({\r\n          title: '保存数据失败',\r\n          content: 'key 不能为空',\r\n          showCancel: false,\r\n        })\r\n      } else {\r\n        uni.setStorageSync(key, data)\r\n        uni.showModal({\r\n          title: '存储数据成功',\r\n          showCancel: false,\r\n        })\r\n      }\r\n    },\r\n    removeStorage: function () {\r\n      uni.removeStorage({\r\n        key: this.key,\r\n        success: () => {\r\n          uni.showModal({\r\n            title: '移除数据成功',\r\n            showCancel: false,\r\n          })\r\n        },\r\n        fail: () => {\r\n          uni.showModal({\r\n            title: '移除数据失败',\r\n            showCancel: false,\r\n          })\r\n        },\r\n      })\r\n    },\r\n    removeStorageSync: function () {\r\n      uni.removeStorageSync(this.key)\r\n      uni.showModal({\r\n        title: '移除数据成功',\r\n        showCancel: false,\r\n      })\r\n    },\r\n    clearStorage: function () {\r\n      this.key = ''\r\n      this.data = ''\r\n      uni.clearStorage({\r\n        success: function (_) {\r\n          uni.showModal({\r\n            title: '清除数据成功',\r\n            showCancel: false,\r\n          })\r\n        },\r\n        fail: function (_) {\r\n          uni.showModal({\r\n            title: '清除数据失败',\r\n            showCancel: false,\r\n          })\r\n        },\r\n      })\r\n    },\r\n    clearStorageSync: function () {\r\n      this.key = ''\r\n      this.data = ''\r\n      uni.clearStorageSync()\r\n      uni.showModal({\r\n        title: '清除数据成功',\r\n        content: ' ',\r\n        showCancel: false,\r\n      })\r\n    },\r\n  },\r\n}\r\n</script>\r\n\r\n<style>\r\n</style>\r\n\n```"
	},
	"getFileSystemManager": {
		"name": "## uni.getFileSystemManager() @getfilesystemmanager",
		"description": "\r\n获取文件管理器",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [FileSystemManager](#filesystemmanager-values) | \n\n#### FileSystemManager 的方法 @filesystemmanager-values \n\n#### readFile(options) @readfile\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ReadFileOptions](#readfileoptions-values) | 是 | - | - |\n###### ReadFileOptions 的属性值 @readfileoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| encoding | string | 是 | - | base64 / utf-8 |\n| filePath | string | 是 | - | 文件路径,支持相对地址和绝对地址 |\n| success | (res: [ReadFileSuccessResult](#readfilesuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### ReadFileSuccessResult 的属性值 @readfilesuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| data | string | 是 | - | - |\n\n\n\n\n#### writeFile(options) @writefile\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [WriteFileOptions](#writefileoptions-values) | 是 | - | - |\n###### WriteFileOptions 的属性值 @writefileoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| filePath | string | 是 | - | 文件路径,只支持绝对地址 |\n| encoding | string | 是 | - | 指定写入文件的字符编码 支持:ascii base64 utf-8 |\n| data | string | 是 | - | 写入的文本内容 |\n| success | (res: [FileManagerSuccessResult](#filemanagersuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### FileManagerSuccessResult 的属性值 @filemanagersuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n\n\n\n\n#### unlink(options) @unlink\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [UnLinkOptions](#unlinkoptions-values) | 是 | - | - |\n###### UnLinkOptions 的属性值 @unlinkoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| filePath | string | 是 | - | 文件路径,只支持绝对地址 |\n| success | (res: [FileManagerSuccessResult](#filemanagersuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n\n\n\n#### mkdir(options) @mkdir\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [MkDirOptions](#mkdiroptions-values) | 是 | - | - |\n###### MkDirOptions 的属性值 @mkdiroptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| dirPath | string | 是 | - | 创建的目录路径 (本地路径) |\n| recursive | boolean | 是 | - | 是否在递归创建该目录的上级目录后再创建该目录。如果对应的上级目录已经存在,则不创建该上级目录。如 dirPath 为 a/b/c/d 且 recursive 为 true,将创建 a 目录,再在 a 目录下创建 b 目录,以此类推直至创建 a/b/c 目录下的 d 目录。 |\n| success | (res: [FileManagerSuccessResult](#filemanagersuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n\n\n\n#### rmdir(options) @rmdir\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [RmDirOptions](#rmdiroptions-values) | 是 | - | - |\n###### RmDirOptions 的属性值 @rmdiroptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| dirPath | string | 是 | - | 要删除的目录路径 (本地路径) |\n| recursive | boolean | 是 | - | 是否递归删除目录。如果为 true,则删除该目录和该目录下的所有子目录以及文件。 |\n| success | (res: [FileManagerSuccessResult](#filemanagersuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n\n\n\n#### readdir(options) @readdir\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [ReadDirOptions](#readdiroptions-values) | 是 | - | - |\n###### ReadDirOptions 的属性值 @readdiroptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| dirPath | string | 是 | - | 要读取的目录路径 (本地路径) |\n| success | (res: [ReadDirSuccessResult](#readdirsuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### ReadDirSuccessResult 的属性值 @readdirsuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| files | Array\\<string\\> | 是 | - | - |\n\n\n\n\n#### access(options) @access\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [AccessOptions](#accessoptions-values) | 是 | - | - |\n###### AccessOptions 的属性值 @accessoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| path | string | 是 | - | 要删除的目录路径 (本地路径) |\n| success | (res: [FileManagerSuccessResult](#filemanagersuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n\n\n\n#### rename(options) @rename\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [RenameOptions](#renameoptions-values) | 是 | - | - |\n###### RenameOptions 的属性值 @renameoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| oldPath | string | 是 | - | 源文件路径,支持本地路径 |\n| newPath | string | 是 | - | 新文件路径,支持本地路径 |\n| success | (res: [FileManagerSuccessResult](#filemanagersuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n\n\n\n#### copyFile(options) @copyfile\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [CopyFileOptions](#copyfileoptions-values) | 是 | - | - |\n###### CopyFileOptions 的属性值 @copyfileoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| srcPath | string | 是 | - | 源文件路径,支持本地路径 |\n| destPath | string | 是 | - | 新文件路径,支持本地路径 |\n| success | (res: [FileManagerSuccessResult](#filemanagersuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n\n\n\n#### getFileInfo(options) @getfileinfo\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [GetFileInfoOptions](#getfileinfooptions-values) | 是 | - | - |\n###### GetFileInfoOptions 的属性值 @getfileinfooptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| filePath | string | 是 | - | 要读取的文件路径 (本地路径) |\n| digestAlgorithm | string | 否 | - | md5 / sha1 |\n| success | (res: [GetFileInfoSuccessResult](#getfileinfosuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### GetFileInfoSuccessResult 的属性值 @getfileinfosuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| digest | string | 是 | - | - |\n| size | number | 是 | - | - |\n| errMsg | string | 是 | - | - |\n\n\n\n\n#### stat(options) @stat\n\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [StatOptions](#statoptions-values) | 是 | - | - |\n###### StatOptions 的属性值 @statoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| path | string | 是 | - | 文件/目录路径 (本地路径) |\n| recursive | boolean | 是 | - | 是否递归获取目录下的每个文件的 Stats 信息 |\n| success | (res: [StatSuccessResult](#statsuccessresult-values)) => void | 否 | - | 接口调用的回调函数 |\n| fail | (res: [UniError](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror)) => void | 否 | - | 接口调用失败的回调函数 |\n| complete | (res: any) => void | 否 | - | 接口调用结束的回调函数(调用成功、失败都会执行) |\n\n###### StatSuccessResult 的属性值 @statsuccessresult-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | - |\n| stats | Array\\<[FileStats](#filestats-values)\\> | 是 | - | - |\n\n###### FileStats 的属性值 @filestats-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| path | string | 是 | - | - |\n| stats | [Stats](#stats-values) | 是 | - | - |\n\n###### Stats 的属性值 @stats-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| ctors | Constructor | 是 | - | - |\n| mode | number | 是 | - | - |\n| size | number | 是 | - | - |\n| lastAccessedTime | number | 是 | - | - |\n| lastModifiedTime | number | 是 | - | - |\n| mIsFile | boolean | 是 | - | - |\n\n###### Stats 的方法 @stats-values \n\n##### isDirectory() @isdirectory\n\n\n###### 返回值 \n\n| 类型 |\n| :- |\n| boolean | \n\n\n\n##### isFile() @isfile\n\n\n###### 返回值 \n\n| 类型 |\n| :- |\n| boolean | \n\n\n\n##### toLog() @tolog\n\n\n###### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| any | 否 | \n\n\n\n##### toJSON() @tojson\n\n\n###### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| any | 否 | \n\n\n\n\n\n",
		"compatibility": "### getFileSystemManager 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4.4 | √ | 3.99 | x | x | x |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.file.filemanager.getFileSystemManager)\n",
		"example": "### 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-file-system-manager/get-file-system-manager.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex: 1\">\r\n  <!-- #endif -->\r\n    <text>显示简易操作日志,详细日志需真机运行查看</text><button size=\"mini\" @click=\"log=''\">清空日志</button>\r\n    <text style=\"margin: 2px; padding: 2px; border: 1px solid #000000;\" :value=\"log\" />\r\n    <button type=\"primary\" @tap=\"statFileInfoTest\" id=\"btn-stat-file\">递归获取目录files的Stats对象{{statFile}}</button>\r\n    <button type=\"primary\" @tap=\"mkdirTest\" id=\"btn-mkdir\">创建文件夹{{mkdirFile}}</button>\r\n    <button type=\"primary\" @tap=\"writeFileTest\" id=\"btn-write-file\">覆盖写入文件{{writeFile}}</button>\r\n    <button type=\"primary\" @tap=\"readDirTest\" id=\"btn-read-dir\">读取文件夹{{readDir}}</button>\r\n    <button type=\"primary\" @tap=\"readFileTest\" id=\"btn-read-file\">读取文件{{readFile}}</button>\r\n    <button type=\"primary\" @tap=\"copyFileTest\" id=\"btn-copy-file\">复制文件{{copyFromFile}}到{{copyToFile}}</button>\r\n    <button type=\"primary\" @tap=\"renameFileTest\"\r\n      id=\"btn-rename-file\">重命名文件{{renameFromFile}}到{{renameToFile}}</button>\r\n    <button type=\"primary\" @tap=\"accessFileTest\" id=\"btn-access-file\">判断文件{{accessFile}}是否存在</button>\r\n    <button type=\"primary\" @tap=\"getFileInfoTest\" id=\"btn-get-file-info\">获取文件信息{{getFileInfoFile}}</button>\r\n    <button type=\"primary\" @tap=\"unlinkTest\" id=\"btn-unlink-file\">删除文件{{unlinkFile}}</button>\r\n    <button type=\"primary\" @tap=\"copyStaticToFilesTest\" id=\"btn-copyStatic-file\">从static目录复制文件到a目录</button>\r\n    <button type=\"primary\" @tap=\"unlinkAllFileTest\" id=\"btn-clear-file\">删除文件夹{{rmDirFile}}下的所有文件</button>\r\n    <button type=\"primary\" @tap=\"rmdirTest\" id=\"btn-remove-dir\">删除文件夹{{rmDirFile}}</button>\r\n  <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n\r\n    data() {\r\n      return {\r\n        log: \"\",\r\n        /**\r\n         * 自动化测试需要关闭log\r\n         */\r\n        logAble:true,\r\n        fileListSuccess: [] as string[],\r\n        fileListComplete: [] as string[],\r\n        accessFileRet: '',\r\n        lastFailError: new UniError(\"uni-file-manager\", 1300000, \"mock error\"),\r\n        lastCompleteError: new UniError(\"uni-file-manager\", 1300000, \"mock error\"),\r\n        readDir: 'a',\r\n        readFileRet: \"\",\r\n        writeFileContent: \"中文 en.\\r\\n\\t换行\",\r\n        getFileInfoAlgorithm: \"md5\",\r\n        getFileInfoSize: -1,\r\n        getFileInfoDigest: \"\",\r\n        unlinkFile: 'a/1.txt',\r\n        accessFile: 'a/1.txt',\r\n        writeFile: 'a/1.txt',\r\n        copyFromFile: 'a/1.txt',\r\n        copyToFile: 'a/2.txt',\r\n        renameFromFile: 'a/2.txt',\r\n        renameToFile: 'a/3.txt',\r\n        getFileInfoFile: 'a/1.txt',\r\n        statFile: '',\r\n        rmDirFile: 'a',\r\n        mkdirFile: 'a',\r\n        readFile: 'a/1.txt',\r\n        recursiveVal: true,\r\n        done: false,\r\n        writeFileEncoding: \"utf-8\",\r\n        readFileEncoding: \"utf-8\",\r\n        statsRet: [] as Array<FileStats>,\r\n        /**\r\n         * 待测试的全局环境变量\r\n         */\r\n        basePath: uni.env.USER_DATA_PATH,\r\n        copyToBasePath: uni.env.USER_DATA_PATH,\r\n        globalTempPath: uni.env.CACHE_PATH,\r\n        globalRootPath: uni.env.SANDBOX_PATH,\r\n        globalUserDataPath: uni.env.USER_DATA_PATH\r\n      }\r\n    },\r\n    onLoad() {\r\n    },\r\n\r\n    methods: {\r\n\r\n      statFileInfoTest: function (_ : any) {\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.stat({\r\n          path: `${this.basePath}${this.statFile}`,\r\n          recursive: this.recursiveVal,\r\n          success: function (res : StatSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'statFileInfoTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('statFileInfoTest success', res)\r\n            this.statsRet = res.stats\r\n            console.log('this.statsRet', this.statsRet)\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'statFileInfoTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('statFileInfoTest fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            console.log(\"statFileInfoTest complete\", res)\r\n            this.done = true\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as StatOptions)\r\n      },\r\n\r\n      getFileInfoTest: function () {\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.getFileInfo({\r\n          filePath: `${this.basePath}${this.getFileInfoFile}`,\r\n          digestAlgorithm: this.getFileInfoAlgorithm,\r\n          success: function (res : GetFileInfoSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'getFileInfoTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n            this.getFileInfoSize = res.size\r\n            this.getFileInfoDigest = res.digest\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'getFileInfoTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            console.log(\"complete\", res)\r\n            this.done = true\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as GetFileInfoOptions)\r\n      },\r\n\r\n\r\n      copyFileTest: function () {\r\n\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.copyFile({\r\n          srcPath: `${this.basePath}${this.copyFromFile}`,\r\n          destPath: `${this.copyToBasePath}${this.copyToFile}`,\r\n          success: function (res : FileManagerSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'copyFileTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'copyFileTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            console.log(\"complete\", res)\r\n            this.done = true\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as CopyFileOptions)\r\n      },\r\n\r\n      renameFileTest: function () {\r\n\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.rename({\r\n          oldPath: `${this.basePath}${this.renameFromFile}`,\r\n          newPath: `${this.basePath}${this.renameToFile}`,\r\n          success: function (res : FileManagerSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'renameFileTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'renameFileTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            this.done = true\r\n            console.log(\"complete\", res)\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as RenameOptions)\r\n      },\r\n\r\n      readDirTest: function () {\r\n        let fileManager = uni.getFileSystemManager()\r\n        fileManager.readdir({\r\n          dirPath: `${this.basePath}${this.readDir}`,\r\n          success: function (res : ReadDirSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'readDirTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log(\"success\", res)\r\n            this.fileListSuccess = res.files\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'readDirTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            console.log(\"complete\", res)\r\n            this.done = true\r\n            if (res instanceof ReadDirSuccessResult) {\r\n              this.fileListComplete = res.files\r\n            }\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as ReadDirOptions)\r\n      },\r\n\r\n\r\n      writeFileTest: function (_ : any) {\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.writeFile({\r\n          filePath: `${this.basePath}${this.writeFile}`,\r\n          data: this.writeFileContent,\r\n          encoding: this.writeFileEncoding,\r\n          success: function (res : FileManagerSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'writeFileTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'writeFileTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail')\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            this.done = true\r\n            console.log(\"complete\")\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as WriteFileOptions)\r\n\r\n      },\r\n\r\n\r\n      readFileTest: function () {\r\n\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.readFile({\r\n          filePath: `${this.basePath}${this.readFile}`,\r\n          encoding: this.readFileEncoding,\r\n          success: function (res : ReadFileSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'readFileTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n            this.readFileRet = res.data\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'readFileTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            console.log(\"complete\", res)\r\n            this.done = true\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as ReadFileOptions)\r\n      },\r\n\r\n      rmdirTest: function () {\r\n        let fileManager = uni.getFileSystemManager()\r\n        fileManager.rmdir({\r\n          dirPath: `${this.basePath}${this.rmDirFile}`,\r\n          recursive: this.recursiveVal,\r\n          success: function (res : FileManagerSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'rmdirTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'rmdirTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            console.log(\"complete\", res)\r\n            this.done = true\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as RmDirOptions)\r\n      },\r\n\r\n      mkdirTest: function () {\r\n        // 准备测试数据\r\n\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.mkdir({\r\n          dirPath: `${this.basePath}${this.mkdirFile}`,\r\n          recursive: this.recursiveVal,\r\n          success: function (res : FileManagerSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'mkdirTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'mkdirTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n            this.done = true\r\n            console.log(\"complete\", res)\r\n          }\r\n        } as MkDirOptions)\r\n\r\n      },\r\n      accessFileTest: function () {\r\n        this.accessFileRet = ''\r\n        let fileManager = uni.getFileSystemManager()\r\n        fileManager.access({\r\n          path: `${this.basePath}${this.accessFile}`,\r\n          success: function (res : FileManagerSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'accessFileTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n            this.accessFileRet = res.errMsg\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'accessFileTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n            console.log(\"complete\", res)\r\n            this.done = true\r\n          }\r\n        } as AccessOptions)\r\n\r\n      },\r\n      unlinkTest: function () {\r\n\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.unlink({\r\n          filePath: `${this.basePath}${this.unlinkFile}`,\r\n          success: function (res : FileManagerSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'unlinkTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'unlinkTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n            console.log(\"complete\", res)\r\n            this.done = true\r\n          }\r\n        } as UnLinkOptions)\r\n      },\r\n      unlinkAllFileTest: function () {\r\n        let fileManager = uni.getFileSystemManager()\r\n        fileManager.readdir({\r\n          dirPath: `${this.basePath}${this.rmDirFile}`,\r\n          success: function (res : ReadDirSuccessResult) {\r\n            console.log(\"success to readdir\", res)\r\n            res.files.forEach(element => {\r\n              console.log(element)\r\n              fileManager.unlink({\r\n                filePath: `${this.basePath}${this.rmDirFile}/${element}`,\r\n                success: function (res : FileManagerSuccessResult) {\r\n                  if(this.logAble){\r\n                    this.log += 'unlinkAllFileTest success:' + JSON.stringify(res) + '\\n\\n'\r\n                  }\r\n                  console.log('success unlink', res)\r\n                },\r\n                fail: function (res : UniError) {\r\n                  if(this.logAble){\r\n                    this.log += 'unlinkAllFileTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n                  }\r\n                  console.log('fail unlink', res)\r\n                  this.lastFailError = res\r\n                },\r\n                complete: function (res : any) {\r\n                  if (res instanceof UniError) {\r\n                    this.lastCompleteError = res\r\n                  }\r\n                  console.log(\"complete unlink\", res)\r\n                  this.done = true\r\n                }\r\n              } as UnLinkOptions)\r\n            });\r\n          },\r\n          fail: function (res : UniError) {\r\n            this.log += 'unlinkAllFileTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            console.log('fail to readdir', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            console.log(\"complete readdir\", res)\r\n            this.done = true\r\n            if (res instanceof ReadDirSuccessResult) {\r\n              this.fileListComplete = res.files\r\n            }\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as ReadDirOptions)\r\n      },\r\n      copyStaticToFilesTest: function () {\r\n\r\n        let fileManager = uni.getFileSystemManager()\r\n\r\n        fileManager.copyFile({\r\n          srcPath: UTSAndroid.getResourcePath(\"static/list-mock/mock.json\"),\r\n          destPath: `${this.copyToBasePath}/a/mock.json`,\r\n          success: function (res : FileManagerSuccessResult) {\r\n            if(this.logAble){\r\n              this.log += 'copyFileTest success:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('success', res)\r\n          },\r\n          fail: function (res : UniError) {\r\n            if(this.logAble){\r\n              this.log += 'copyFileTest fail:' + JSON.stringify(res) + '\\n\\n'\r\n            }\r\n            console.log('fail', res)\r\n            this.lastFailError = res\r\n          },\r\n          complete: function (res : any) {\r\n            console.log(\"complete\", res)\r\n            this.done = true\r\n            if (res instanceof UniError) {\r\n              this.lastCompleteError = res\r\n            }\r\n          }\r\n        } as CopyFileOptions)\r\n      },\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n\r\n\r\n</style>\r\n\n```"
	},
	"getUniverifyManager": {
		"name": "## uni.getUniverifyManager() @getuniverifymanager",
		"description": "获取一键登录管理对象",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| [UniverifyManager](#univerifymanager-values) | \n\n#### UniverifyManager 的方法 @univerifymanager-values \n\n#### preLogin(options) @prelogin\n预登录\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [PreLoginOptions](#preloginoptions-values) | 是 | - | 预登录参数 |\n###### PreLoginOptions 的属性值 @preloginoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| success | () => void | 否 | - | - |\n| fail | (err: [PreLoginFail](#preloginfail-values)) => void | 否 | - | - |\n| complete | (res: any) => void | 否 | - | - |\n\n###### PreLoginFail 的属性值 @preloginfail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 1000 \\\\| 1001 \\\\| 1002 \\\\| 1004 \\\\| 4001 \\\\| 30004 \\\\| 30005 \\\\| 30006 | 是 | - | 1000 当前应用appid尚未开通uni一键登录<br>1001 应用所有者账号信息异常,请检查账号一键登录服务是否正常<br>1002 应用所有者账号信息异常,请检查账号余额是否充足<br>1004 uni一键登录应用不存在<br>4001 参数异常<br>30004 其他错误<br>30005 预登录失败<br>30006 一键登录失败 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n\n##### preLogin 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.99 | 9.0 | √ | x |\n\n\n#### login(options) @login\n登录\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| options | [LoginOptions](#loginoptions-values) | 是 | - | 登录参数 |\n###### LoginOptions 的属性值 @loginoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| univerifyStyle | [UniverifyStyle](#univerifystyle-values) | 否 | - | 登录页样式 |\n| success | (res: [LoginSuccess](#loginsuccess-values)) => void | 否 | - | - |\n| fail | (err: [LoginFail](#loginfail-values)) => void | 否 | - | - |\n| complete | (res: any) => void | 否 | - | - |\n\n###### UniverifyStyle 的属性值 @univerifystyle-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| fullScreen | boolean | 否 | - | 是否全屏 |\n| logoPath | string | 否 | - | logo路径 |\n| backgroundColor | string | 否 | - | 登录页背景色 |\n| loginBtnText | string | 否 | - | 登录按钮文字 |\n\n###### LoginSuccess 的属性值 @loginsuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| openId | string | 是 | - | 登录授权唯一标识 |\n| accessToken | string | 是 | - | token |\n\n###### LoginFail 的属性值 @loginfail-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 1000 \\\\| 1001 \\\\| 1002 \\\\| 1004 \\\\| 4001 \\\\| 30004 \\\\| 30005 \\\\| 30006 | 是 | - | 1000 当前应用appid尚未开通uni一键登录<br>1001 应用所有者账号信息异常,请检查账号一键登录服务是否正常<br>1002 应用所有者账号信息异常,请检查账号余额是否充足<br>1004 uni一键登录应用不存在<br>4001 参数异常<br>30004 其他错误<br>30005 预登录失败<br>30006 一键登录失败 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n\n##### login 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.99 | 9.0 | √ | x |\n\n\n#### close() @close\n关闭登录页\n\n\n##### close 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.99 | 9.0 | √ | x |\n\n\n#### isPreLoginValid() @ispreloginvalid\n预登录是否有效\n\n##### 返回值 \n\n| 类型 |\n| :- |\n| boolean | \n\n##### isPreLoginValid 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.99 | 9.0 | √ | x |\n\n",
		"compatibility": "### getUniverifyManager 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.99 | 9.0 | √ | x |\n",
		"tutorial": "\n### 参见\n[getUniverifyManager](https://uniapp.dcloud.net.cn/univerify.html#univerifymanager)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.uni-verify.getUniverifyManager)\n",
		"example": "### 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/get-univerify-manager/get-univerify-manager.uvue) \n ```html\n<template>\r\n  <view>\r\n    <page-head :title=\"title\"></page-head>\r\n    <view class=\"uni-padding-wrap uni-common-mt\">\r\n      <view class=\"uni-btn-v uni-common-mt\">\r\n        <button type=\"primary\" @click=\"verify(false)\">一键登录(半屏)</button>\r\n      </view>\r\n      <view class=\"uni-btn-v uni-common-mt\">\r\n        <button type=\"primary\" @click=\"verify(true)\">一键登录(全屏)</button>\r\n      </view>\r\n    </view>\r\n  </view>\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: '一键登录',\r\n        univerifyManager: null as UniverifyManager | null\r\n      }\r\n    },\r\n    onLoad() {\r\n      this.univerifyManager = uni.getUniverifyManager();\r\n      // 预登录\r\n      this.univerifyManager?.preLogin({\r\n        success: () => {\r\n          console.log(\"pre login success\");\r\n        },\r\n        fail: (err : PreLoginFail) => {\r\n          console.error(\"pre login fail => \" + JSON.stringify(err));\r\n          uni.showModal({\r\n            title: '预登录失败',\r\n            content: JSON.parseObject(err.cause?.cause?.message ?? \"\")?.getString(\"errorDesc\") ?? err.errMsg,\r\n            showCancel: false\r\n          });\r\n        }\r\n      } as PreLoginOptions);\r\n    },\r\n    methods: {\r\n      verify(fullScreen : boolean) {\r\n        // 校验预登录是否有效\r\n        const isPreLoginValid = this.univerifyManager?.isPreLoginValid() ?? false;\r\n        if (isPreLoginValid) {\r\n          // 预登录有效,执行登录\r\n          this.login(fullScreen);\r\n        } else {\r\n          // 预登录无效,执行预登录\r\n          this.univerifyManager?.preLogin({\r\n            success: () => {\r\n              console.log(\"pre login success\");\r\n              this.login(fullScreen);\r\n            },\r\n            fail: (err : PreLoginFail) => {\r\n              console.error(\"pre login fail => \" + JSON.stringify(err));\r\n              uni.showModal({\r\n                title: '预登录失败',\r\n                content: JSON.parseObject(err.cause?.cause?.message ?? \"\")?.getString(\"errorDesc\") ?? err.errMsg,\r\n                showCancel: false\r\n              });\r\n            }\r\n          } as PreLoginOptions);\r\n        }\r\n      },\r\n      login(fullScreen : boolean) {\r\n        this.univerifyManager?.login({\r\n          // 登录页样式\r\n          univerifyStyle: {\r\n            fullScreen: fullScreen,\r\n            backgroundColor: \"#FFFFFF\",\r\n            loginBtnText: \"一键登录\",\r\n            logoPath: \"/static/logo.png\"\r\n          } as UniverifyStyle,\r\n          success: (res : LoginSuccess) => {\r\n            console.log(\"login success => \" + JSON.stringify(res));\r\n            // 云函数取号\r\n            uniCloud.callFunction({\r\n              name: 'univerify',\r\n              data: {\r\n                access_token: res.accessToken, // 客户端一键登录接口返回的access_token\r\n                openid: res.openId // 客户端一键登录接口返回的openid\r\n              }\r\n            }).then(res => {\r\n              // 关闭登录页\r\n              this.univerifyManager?.close();\r\n              setTimeout(() => {\r\n                uni.showModal({\r\n                  title: '取号成功',\r\n                  content: res.result.getJSON(\"res\")?.getString(\"phoneNumber\"),\r\n                  showCancel: false\r\n                });\r\n              }, 100);\r\n            }).catch(err => {\r\n              console.error(JSON.stringify(err));\r\n              // 关闭登录页\r\n              this.univerifyManager?.close();\r\n              setTimeout(() => {\r\n                uni.showModal({\r\n                  title: '取号失败',\r\n                  content: (err as Error).message,\r\n                  showCancel: false\r\n                });\r\n              }, 100);\r\n            });\r\n          },\r\n          fail: (err : LoginFail) => {\r\n            console.error(\"login fail => \" + err);\r\n            uni.showModal({\r\n              title: '登录失败',\r\n              content: JSON.parseObject(err.cause?.cause?.message ?? \"\")?.getString(\"errorDesc\") ?? err.errMsg,\r\n              showCancel: false\r\n            });\r\n          }\r\n        } as LoginOptions);\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n\n```"
	},
	"getFacialRecognitionMetaInfo": {
		"name": "## uni.getFacialRecognitionMetaInfo() @getfacialrecognitionmetainfo",
		"description": "获取阿里云实人认证meta info",
		"param": "",
		"returnValue": "### 返回值 \n\n| 类型 |\n| :- |\n| string | \n",
		"compatibility": "### getFacialRecognitionMetaInfo 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | 3.9+ | 9.0 | √ | 3.9+ |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.facial-recognition-verify.getFacialRecognitionMetaInfo)\n"
	},
	"startFacialRecognitionVerify": {
		"name": "## uni.startFacialRecognitionVerify(faceStyle) @startfacialrecognitionverify",
		"description": "启动人脸识别",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| faceStyle | [StartFacialRecognitionVerifyOptions](#startfacialrecognitionverifyoptions-values) | 是 | - | - |\n#### StartFacialRecognitionVerifyOptions 的属性值 @startfacialrecognitionverifyoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| certifyId | string | 是 | - | certifyId 调用实人认证的id |\n| progressBarColor | string | 否 | - | 活体检测页面的进度条颜色。 |\n| screenOrientation | \"land\" \\\\| \"port\" | 否 | \"port\" | 认证界面UI朝向。 |\n| success | (res: [StartFacialRecognitionVerifySuccess](#startfacialrecognitionverifysuccess-values)) => void | 否 | - | 成功回调 |\n| fail | (res: [IFacialRecognitionVerifyError](#ifacialrecognitionverifyerror-values)) => void | 否 | - | 失败回调 |\n| complete | (res: any) => void | 否 | - | 完成回调 |\n\n##### StartFacialRecognitionVerifySuccess 的属性值 @startfacialrecognitionverifysuccess-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | number | 是 | - | 错误码 |\n| errSubject | string | 是 | - | 调用API的名称 |\n| errMsg | string | 是 | - | 错误的详细信息 |\n| cause | [SourceError](#sourceerror-values) | 否 | - | 错误来源 |\n\n###### SourceError 的属性值 @sourceerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| ctors | Constructor | 是 | - | - |\n| message | string | 是 | - | 源错误描述信息 |\n| name | string | 是 | - | - |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | - |\n\n##### IFacialRecognitionVerifyError 的属性值 @ifacialrecognitionverifyerror-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errCode | 10010 \\\\| 10012 \\\\| 10011 \\\\| 10013 \\\\| 10020 \\\\| 10001 \\\\| 10002 | 是 | - | 错误码<br>- 10001 certifyId 不能为空<br>- 10002 \"当前设备不支持\"<br>- 10010 刷脸异常<br>- 10012 网络异常<br>- 10011 验证中断<br>- 10013 刷脸验证失败<br>- 10020 设备设置时间异常 |\n| errSubject | string | 是 | - | 统一错误主题(模块)名称 |\n| data | any | 否 | - | 错误信息中包含的数据 |\n| cause | [Error](https://uniapp.dcloud.net.cn/tutorial/err-spec.html#unierror) | 否 | - | 源错误信息,可以包含多个错误,详见SourceError |\n| errMsg | string | 是 | - | - |\n\n##### StartFacialRecognitionVerifyOptions 兼容性 \n|  | 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- | :- |\n| screenOrientation | 5.0 | √ | 3.9+ | x | x | x |\n",
		"returnValue": "",
		"compatibility": "### startFacialRecognitionVerify 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 5.0 | √ | 3.9+ | 9.0 | √ | 3.9+ |\n",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.device.facial-recognition-verify.startFacialRecognitionVerify)\n"
	},
	"facial-recognition-verify": {
		"example": "## 示例 \n> [hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/pages/API/facial-recognition-verify/facial-recognition-verify.uvue) \n ```html\n<template>\r\n  <!-- #ifdef APP -->\r\n  <scroll-view style=\"flex:1\">\r\n  <!-- #endif -->\r\n    <view>\r\n      <page-head :title=\"title\"></page-head>\r\n      <view class=\"uni-padding-wrap uni-common-mt\">\r\n        <view class=\"uni-btn-v uni-common-mt\">\r\n          <input class=\"uni-input\" type=\"text\" v-model=\"realName\" name=\"real-name\"\r\n            placeholder=\"姓名\" />\r\n        </view>\r\n        <view class=\"uni-btn-v uni-common-mt\">\r\n          <input class=\"uni-input\" type=\"text\" v-model=\"idCard\" name=\"id-card\"\r\n            placeholder=\"身份证号\" />\r\n        </view>\r\n        <view class=\"uni-btn-v uni-common-mt\">\r\n          <button type=\"primary\" @click=\"facialRecognition\">开始人脸识别</button>\r\n        </view>\r\n      </view>\r\n    </view>\r\n  <!-- #ifdef APP -->\r\n  </scroll-view>\r\n  <!-- #endif -->\r\n</template>\r\n\r\n<script>\r\n  export default {\r\n    data() {\r\n      return {\r\n        title: '实人认证',\r\n        realName: '',\r\n        idCard: ''\r\n      }\r\n    },\r\n    onReady() {\r\n    },\r\n    methods: {\r\n      facialRecognition() {\r\n        const realName = this.realName.trim()\r\n        const idCard = this.idCard.trim()\r\n        if (realName == '' || idCard == '') {\r\n          uni.showModal({\r\n            title: '错误',\r\n            content: '姓名和身份证号不可为空',\r\n            showCancel: false\r\n          })\r\n          return\r\n        }\r\n        const testFacialCo = uniCloud.importObject('facial-recognition-co')\r\n        let metaInfo = uni.getFacialRecognitionMetaInfo();\r\n        testFacialCo.getCertifyId({\r\n          realName,\r\n          idCard,\r\n          metaInfo\r\n        })\r\n          .then((res : UTSJSONObject) : Promise<string> => {\r\n            const certifyId = res['certifyId'] as string\r\n            return new Promise((\r\n              resolve : (res : string) => void,\r\n              reject : (err : Error) => void\r\n            ) => {\r\n              uni.startFacialRecognitionVerify({\r\n                certifyId,\r\n                success() {\r\n                  resolve(certifyId)\r\n                },\r\n                fail(err) {\r\n                  reject(new Error(err.errMsg))\r\n                }\r\n              })\r\n            })\r\n          })\r\n          .then((certifyId : string) : Promise<UTSJSONObject> => {\r\n            return testFacialCo.getAuthResult(certifyId)\r\n          })\r\n          .then((res : UTSJSONObject) => {\r\n            console.log('res', res)\r\n          })\r\n          .catch((err : any | null) => {\r\n            console.error('error', err)\r\n          })\r\n      }\r\n    }\r\n  }\r\n</script>\r\n\r\n<style>\r\n</style>\r\n\n```"
	},
	"createWebviewContext": {
		"name": "## uni.createWebviewContext(webviewId, component?) @createwebviewcontext",
		"description": "创建 web-view 组件的上下文对象,用于操作 web-view 的行为。",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| webviewId | string.WebviewIdString | 是 | - | - |\n| component | ComponentPublicInstance | 否 | - | - |",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| [WebviewContext](#webviewcontext-values) | 否 | \n\n#### WebviewContext 的方法 @webviewcontext-values \n\n#### back() @back\n后退到 web-view 组件网页加载历史的上一页,如果不存在上一页则没有任何效果。\n\n\n\n\n#### forward() @forward\n前进到 web-view 组件网页加载历史的下一页,如果不存在下一页则没有任何效果。\n\n\n\n\n#### reload() @reload\n重新加载 web-view 组件当前页面。\n\n\n\n\n#### stop() @stop\n停止加载 web-view 组件当前网页,该方法不能阻止已经加载的 html 文档,但是能够阻止未完成的图片及延迟加载的资源。\n\n\n\n\n#### evalJS(js) @evaljs\n在网页中执行指定的js脚本,在 uvue 页面中可通过此方法向 web-view 组件加载的页面发送数据\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| js | string | 是 | - | - |\n\n\n",
		"compatibility": "",
		"tutorial": "\n### 参见\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.component.create-webview-context)\n"
	},
	"createVideoContext": {
		"name": "## uni.createVideoContext(videoId, component?) @createvideocontext",
		"description": "创建并返回 video 上下文 videoContext 对象",
		"param": "### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| videoId | string.VideoIdString | 是 | - | - |\n| component | ComponentPublicInstance | 否 | - | - |",
		"returnValue": "### 返回值 \n\n| 类型 | 必备 |\n| :- | :- |\n| [VideoContext](#videocontext-values) | 否 | \n\n#### VideoContext 的方法 @videocontext-values \n\n#### play() @play\n播放\n\n\n##### play 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9.0 | - | - | - |\n\n\n#### pause() @pause\n暂停\n\n\n##### pause 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9.0 | - | - | - |\n\n\n#### seek(position) @seek\n跳转到指定位置\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| position | number | 是 | - | 跳转到指定位置(秒) |\n\n##### seek 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9.0 | - | - | - |\n\n\n#### stop() @stop\n停止视频\n\n\n##### stop 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9.0 | - | - | - |\n\n\n#### sendDanmu(danmu) @senddanmu\n发送弹幕\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| danmu | [Danmu](#danmu-values) | 是 | - | text, color |\n###### Danmu 的属性值 @danmu-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| text | string | 否 | - | 弹幕文字 |\n| color | string | 否 | - | 弹幕颜色 |\n| time | number | 否 | - | 显示时刻 |\n\n\n##### sendDanmu 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9.0 | - | - | - |\n\n\n#### playbackRate(rate) @playbackrate\n设置倍速播放\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| rate | number | 是 | - | , 支持倍率 0.5/0.8/1.0/1.25/1.5 |\n\n##### playbackRate 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9.0 | - | - | - |\n\n\n#### requestFullScreen(direction) @requestfullscreen\n进入全屏\n##### 参数 \n\n| 名称 | 类型 | 必填 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| direction | [RequestFullScreenOptions](#requestfullscreenoptions-values) | 是 | - | , 0\\|正常竖向, 90\\|屏幕逆时针90度, -90\\|屏幕顺时针90度 |\n###### RequestFullScreenOptions 的属性值 @requestfullscreenoptions-values \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| direction | number | 否 | - | direction - 0: 正常竖向 - 90: 屏幕逆时针90度 - -90: 屏幕顺时针90度 |\n\n\n##### requestFullScreen 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9.0 | - | - | - |\n\n\n#### exitFullScreen() @exitfullscreen\n退出全屏\n\n\n##### exitFullScreen 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | 3.9.0 | - | - | - |\n\n",
		"compatibility": "### createVideoContext 兼容性 \n| 安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |\n| :- | :- | :- | :- | :- | :- |\n| 4.4 | √ | √ | - | - | - |\n",
		"tutorial": "\n### 参见\n[createVideoContext](http://uniapp.dcloud.io/api/media/video-context?id=createVideoContext)\n\n[相关 Bug](https://issues.dcloud.net.cn/?mid=api.component.create-video-context)\n"
	},
	"general_type": {
		"name": "## 通用类型\n",
		"param": "### GeneralCallbackResult \n\n| 名称 | 类型 | 必备 | 默认值 | 描述 |\n| :- | :- | :- | :- | :- |\n| errMsg | string | 是 | - | 错误信息 |\n"
	}
}