提交 ff9998f9 编写于 作者: Q qiang

Merge branch 'master' into dev

# uni-app
`uni-app` 是一个使用 `Vue.js` 开发**跨平台**应用的前端框架。
`uni-app` 是一个使用 `Vue.js` 开发小程序、H5、App的统一前端框架。官网地址:[https://uniapp.dcloud.io](https://uniapp.dcloud.io)
开发者通过编写 `Vue.js` 代码,`uni-app` 将其编译到 App(iOS/Android)、小程序(微信/支付宝/百度/字节跳动)、H5等多个平台,保证其正确运行并达到优秀体验。
开发者使用 `Vue` 语法编写代码,`uni-app` 框架将其编译到 小程序(微信/支付宝/百度/字节跳动/QQ)、App(iOS/Android)、H5等多个平台,保证其正确运行并达到优秀体验。
`uni-app`官网文档详见[https://uniapp.dcloud.io](https://uniapp.dcloud.io)
同时,`uni-app` 也是更优秀的小程序开发框架,拥有更高的性能(见[评测](https://juejin.im/post/5ca1736af265da30ae314248))、更丰富的周边生态(见[插件市场](https://ext.dcloud.net.cn/))。
## 扫码体验
一套代码编译到7个平台,难以置信吗?依次扫描7个二维码,亲自体验最全面的跨平台效果!
一套代码编译到7个平台,开发一次、多处运行,到底是梦想还是现实?依次扫描7个二维码,亲自体验最全面的跨平台效果!
<img src="http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/barcode-20190131.png"/>
......@@ -16,20 +16,32 @@
## 快速开始
`uni-app`支持通过 `HBuilderX`可视化界面、`vue-cli`命令行两种方式快速创建项目,详见[官网教程](https://uniapp.dcloud.io/quickstart)
`uni-app`支持通过`vue-cli`命令行、`HBuilderX`可视化界面两种方式快速创建项目:
- [vue-cli命令行方式](https://uniapp.dcloud.io/quickstart?id=_2-通过vue-cli命令行):不限IDE,适合对node熟悉的开发者。
- [HBuilderX可视化界面](https://uniapp.dcloud.io/quickstart?id=_1-通过-hbuilderx-可视化界面):专用IDE,内置相关环境,开箱即用,开发效率更高。
## 项目案例
网友已分享的项目案例,参考[uniapp.dcloud.io/case](https://uniapp.dcloud.io/case)
案例[uniapp.dcloud.io/case](https://uniapp.dcloud.io/case)
欢迎广大开发者踊跃提交自己的应用案例,[uni-app案例征集](https://github.com/dcloudio/uni-app/issues/6)
## 需求墙
`uni-app`计划支持的功能点,会在需求墙上进行展示,并允许开发者对需求进行投票,投票越多的需求,研发优先级越高,[前往投票](https://dev.dcloud.net.cn/wish/)
`uni-app`计划支持的功能点,会在需求墙上进行展示,并允许开发者对需求进行投票,[前往投票](https://dev.dcloud.net.cn/wish/)
## 论坛
由于`uni-app`有几十万开发者,50多个QQ、微信群,官方已无法维护更多交流群。请开发者到官方论坛交流:[https://ask.dcloud.net.cn/explore/](https://ask.dcloud.net.cn/explore/) 。论坛提供了比issus更专业的工具服务。
## 插件市场
`uni-app`有丰富的插件生态,众多开发者提交了各种组件、sdk、项目模板,详见:[https://ext.dcloud.net.cn/](https://ext.dcloud.net.cn/)
## 更多资料
- 开发资源汇总: [awesome-uni-app](https://github.com/aben1188/awesome-uni-app/blob/master/README.md)
- 评测:[深入测试一周,主流多端框架大比武](https://mp.weixin.qq.com/s/jIDEHfuMnED6HTfNgjsW4w)
- 微信小程序转换uni-app指南及转换器:[https://ask.dcloud.net.cn/article/35786](https://ask.dcloud.net.cn/article/35786)
- vue h5项目转换uni-app指南:[https://ask.dcloud.net.cn/article/36174](https://ask.dcloud.net.cn/article/36174)
- mpvue 项目(组件)迁移指南、示例及资源汇总: [https://ask.dcloud.net.cn/article/34945](https://ask.dcloud.net.cn/article/34945)
<p style="width: 100%;text-align: center;font-size: 140px;height: 40px;margin-top: 1.2em!important;">404</p>
<p style="width: 100%;text-align: center;font-size: 40px;">Not Found</p>
\ No newline at end of file
```uni-app``` 是一个使用 [Vue.js](https://vuejs.org/) 开发所有前端应用的框架,开发者编写一套代码,可编译到iOS、Android、H5、以及各种小程序等多个平台。
即使不跨端,```uni-app```同时也是更好的小程序开发框架。详见[评测](https://ask.dcloud.net.cn/article/35947)
<div class="quick">
<h3 id="快速体验"><a href="/README?id=%e5%bf%ab%e9%80%9f%e4%bd%93%e9%aa%8c" data-id="快速体验" class="anchor"><span>快速体验</span></a></h3>
<p>一套代码编到7个平台,难以置信吗?眼见为实,扫描7个二维码,亲自体验最全面的跨平台效果!</p>
<div class="flex-img-group-view">
<a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
<div class="barcode-img-box">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/uni-android.png" width="160"/>
</div>
<b>Android版</b>
</a>
<a href="https://itunes.apple.com/cn/app/hello-uni-app/id1417078253?mt=8" target="_blank" class="clear-style barcode-view">
<div class="barcode-img-box">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/uni-ios.png" width="160"/>
</div>
<b>iOS版</b>
</a>
<a href="https://uniapp.dcloud.io/h5/" target="_blank" class="clear-style barcode-view">
<div class="barcode-img-box">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/uni-h5.png" width="160"/>
</div>
<b>H5版</b>
</a>
<a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
<div class="barcode-img-box"><img src="//img.cdn.aliyun.dcloud.net.cn/guide/uniapp/gh_33446d7f7a26_430.jpg" width="160"/></div>
<b>微信小程序版</b>
</a>
<a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
<div class="barcode-img-box"><img src="https://img-cdn-qiniu.dcloud.net.cn/img/alipay1.png" width="160"/></div>
<b>支付宝小程序版</b>
</a>
<a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
<div class="barcode-img-box"><img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/baidu-uniapp.png" width="160"/></div>
<b>百度小程序版</b>
</a>
<a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
<div class="barcode-img-box">
<img src="http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/mp-toutiao.png" width="160"/>
</div>
<b>头条小程序版</b>
</a>
</div>
<p>
<em>注:Appstore、百度、头条平台不能提交简单demo,故补充了一些其他功能。</em></br>
</p>
</div>
### uni-app视频介绍
我们精心准备了一个简单的十分钟介绍视频,方便你快速了解```uni-app```的主要特征:
<video id="video" onplay="videoPlay()" preload="none" controls="controls" width="100%" poster="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/poster.png" src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/uni-app20190127.mp4"></video>
### 为什么要选择uni-app?
```uni-app```在跨端数量、扩展能力、性能体验、周边生态、学习成本、开发成本等6大关键指标上拥有更强的优势。
<!-- ![](https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/uni20190418.png) -->
<div class="uniapp-home-content">
<div class="uniapp-home-content-item">
<div class="uniapp-home-content-item-image">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/12x.png">
</div>
<div class="uniapp-home-content-item-header">
<h5 class="uniapp-home-content-item-title">跨端数量更多</h5>
<p class="uniapp-home-content-item-text">一套代码,可发布到IOS、Android、小程序、H5等多个平台。</p>
</div>
</div>
<div class="uniapp-home-content-item">
<div class="uniapp-home-content-item-image">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/22x.png">
</div>
<div class="uniapp-home-content-item-header">
<h5 class="uniapp-home-content-item-title">平台能力不受限</h5>
<p class="uniapp-home-content-item-text">在跨端的同时,通过条件编译+平台特有API调用,可以优雅的为某平台写个性化代码,调用专有能力而不影响其他平台。</p>
<p class="uniapp-home-content-item-text">支持原生代码混写和原生sdk集成。</p>
</div>
</div>
<div class="uniapp-home-content-item">
<div class="uniapp-home-content-item-image">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/32x.png">
</div>
<div class="uniapp-home-content-item-header">
<h5 class="uniapp-home-content-item-title">性能体验优秀</h5>
<p class="uniapp-home-content-item-text">体验更好的Hybrid框架,加载新页面速度更快。</p>
<p class="uniapp-home-content-item-text">App端支持weex原生渲染,可支撑更流畅的用户体验。</p>
<p class="uniapp-home-content-item-text">小程序端的性能优于市场其他框架。<a href="https://ask.dcloud.net.cn/article/35947">评测</a></p>
</div>
</div>
<div class="uniapp-home-content-item">
<div class="uniapp-home-content-item-image">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/42x.png">
</div>
<div class="uniapp-home-content-item-header">
<h5 class="uniapp-home-content-item-title">周边生态丰富</h5>
<p class="uniapp-home-content-item-text">丰富的<a href="https://ext.dcloud.net.cn/?orderBy=WeekDownload">插件市场</a>,各种轮子拿来即用。</p>
<p class="uniapp-home-content-item-text">支持NPM、支持小程序组件和SDK、兼容mpvue组件和项目、兼容weex组件。</p>
<p class="uniapp-home-content-item-text">微信生态的各种sdk可直接用于跨平台App。</p>
</div>
</div>
<div class="uniapp-home-content-item">
<div class="uniapp-home-content-item-image">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/52x.png">
</div>
<div class="uniapp-home-content-item-header">
<h5 class="uniapp-home-content-item-title">学习成本低</h5>
<p class="uniapp-home-content-item-text">基于通用的前端技术栈,采用vue语法+微信小程序api,无额外学习成本。</p>
</div>
</div>
<div class="uniapp-home-content-item">
<div class="uniapp-home-content-item-image">
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/62x.png">
</div>
<div class="uniapp-home-content-item-header">
<h5 class="uniapp-home-content-item-title">开发成本低</h5>
<p class="uniapp-home-content-item-text">不止开发成本,招聘、管理、测试各方面成本都大幅下降。</p>
<p class="uniapp-home-content-item-text">HBuilderX是高效开发神器,熟练掌握后研发效率至少翻倍(即便只开发一个平台)。</p>
</div>
</div>
</div>
<!-- ```uni-app``` 使用```Vue.js```的语法 + 微信小程序的API,均为通用技术。
有一定 ```Vue.js``` 和微信小程序开发经验的开发者可快速上手 ```uni-app``` ,开发出兼容多端的应用。
```uni-app```提供了条件编译机制,在跨端的同时,可以优雅的为某平台写个性化代码、调用专有能力而不影响其他平台。
```uni-app```打包到App时使用了5+和weex双引擎,丰富5+的能力和高效的weex渲染都可以在```uni-app```中可以使用。同时支持以sdk方式嵌入原生项目中混合开发。生成的App性能体验优秀且扩展能力丰富。
```uni-app```支持将小程序生态丰富的组件和js sdk引用到App开发中,大幅强化了跨平台开发的三方生态,开发者可直接使用大量原sdk厂商维护的高质量sdk。
```uni-app```被DCloud定义为**终极跨平台开发框架**,其在跨端数量、扩展能力、性能体验、周边生态、学习成本、开发成本等6大关键指标上拥有极强的竞争优势。
- 对于技术人员而言:不用学那么多的平台开发技术、研究那么多前端框架,学会基于vue的```uni-app```就够了。
- 对于公司而言:更低成本,覆盖更多用户,```uni-app```是高效利器。 -->
### 功能框架
从下面```uni-app```功能框架图可看出,```uni-app```在跨平台的过程中,不牺牲平台特色,可优雅的调用平台专有能力,真正做到海纳百川、各取所长。
![](https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/uni0124.png)
### 一套代码,运行到多个平台
```uni-app```实现了一套代码,同时运行到多个平台;如下图所示,一套代码,同时运行到iOS模拟器、Android模拟器、H5、微信开发者工具、支付宝小程序Studio、百度开发者工具、字节跳动开发者工具(底部7个终端选项卡代表7个终端模拟器):
![](http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/dev1x7.png)
实际运行效果如下(点击图片可放大):
![](http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/run1x7.png)
* [介绍](README.md)
* [框架](collocation/pages.md)
* [组件](component/README.md)
* [API](api/README.md)
* 其它规范
- [App扩展规范HTML5 Plus](http://www.html5plus.org/doc/h5p.html)
- [微信小程序](https://developers.weixin.qq.com/miniprogram/dev/framework/)
- [支付宝小程序](https://docs.alipay.com/mini/developer/getting-started)
- [百度小程序](https://smartprogram.baidu.com/docs/develop/tutorial/codedir/)
- [头条小程序](https://developer.toutiao.com/docs/framework/)
- [QQ小程序](https://q.qq.com/wiki/develop/miniprogram/frame/)
- [Weex](https://weex.apache.org/cn/guide/)
<ul class="nav-href">
<li class="ext-link"><a href="//ext.dcloud.net.cn/" target="__blank">插件市场</a></li>
<li><a href="//dev.dcloud.net.cn/wish/?channel=uniapp" target="__blank">需求墙</a></li>
<li><a href="//dev.dcloud.net.cn/sponsor/?channel=uniapp" target="__blank" style="color:#FF6600!important;"><img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/heart.png" class="heart">赞助我们</a></li>
</ul>
<div class="github">
<a href="//github.com/dcloudio/uni-app" target="_blank">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/github.svg">
</a>
</div>
\ No newline at end of file
* [什么是 uni-app](README.md)
* [快速上手](quickstart.md)
* [如何学习](resource.md)
* [框架简介](frame.md)
* [使用 Vue.js 注意事项](use.md)
* [使用 Weex/nvue 注意事项](use-weex.md)
* [使用 HTML5+ 注意事项](use-html5plus.md)
* [条件编译](platform.md)
* [uni-app 跨端开发注意事项](matter.md)
* [高效开发技巧](snippet.md)
* [性能优化建议](performance.md)
* [开放生态](ecosystem.md)
* [运营服务](cloud.md)
* [案例](case.md)
* [开源项目资源汇总](casecode.md)
* [从其他项目转uni-app](translate.md)
* [选型评估指南](select.md)
* [常见问题](faq.md)
* [更新日志](//uniapp.dcloud.io/release)
<!-- * [更新日志](//update.dcloud.net.cn/hbuilderx/changelog/2.1.1.20190716.html) -->
<!-- <li><a id="update-hock" href="javascript:;" target="__blank">更新日志</a></li> -->
<li class="show-sponsor-in-phone show-last"><a href="//ext.dcloud.net.cn/" target="__blank">插件市场</a></li>
<li class="show-sponsor-in-phone"><a href="//dev.dcloud.net.cn/wish/?channel=uniapp" target="__blank">需求墙</a></li>
<li class="show-sponsor-in-phone"><a href="//dev.dcloud.net.cn/sponsor/?channel=uniapp" target="__blank">赞助我们</a></li>
<div class="contact-box">
<a href="//ask.dcloud.net.cn/explore/" target="_blank" class="contact-item">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/d@2x.png" width="20" height="20"/>
<div class="contact-smg">
<div>论坛</div>
</div>
</a>
<div class="contact-item">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/git-1.png" width="20" height="20"/>
<div class="contact-smg">
<div>
代码仓库:<a href="https://gitee.com/dcloud/uni-app" target="_blank">码云</a><a href="http://github.com/dcloudio/uni-app" target="_blank">GitHub</a>
</div>
</div>
</div>
<div class="contact-item">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/qq@2x.png" width="20" height="20"/>
<div class="contact-smg">
<div>官方QQ交流群</div>
<div>群26:147867597 &nbsp;<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=28a1a9a3e8f1866ee6a5f2b1caba05039e30d3ae1461e64b2ec31c095fcab951">点此加入</a></div>
<div>群35:713420817(2000人已满)</div>
<div>群34:530305531(2000人已满)</div>
<div>群33:498071674(2000人已满)</div>
<div>群32:166188631(500人已满)</div>
<div>群31:567471669(500人已满)</div>
<div>群30:371046920(500人已满)</div>
<div>群29:202965481(500人已满)</div>
<div>群28:166188776(2000人已满 </div>
<div>群27:811363410(2000人已满 </div>
<!-- <div>群26:147867597(2000人已满)</div> -->
<div>群25:165297000(500人已满)</div>
<div>群24:672494800(500人已满)</div>
<div>群23:599958679(500人已满)</div>
<div>群22:687186952(1000人已满)</div>
<div>群21:717019120(2000人已满)</div>
<div>群20:165796402(500人已满)</div>
<div>群19:165657124(1000人已满)</div>
<div>群18:698592271(500人已满)</div>
<div>群17:951348804(1000人已满)</div>
<div>群16:719211033(1000人已满)</div>
<div>群15:516984120(500人已满)</div>
<div>群14:465953250(500人已满)</div>
<div>群13:699478442(500人已满)</div>
<div>群12:884860657(500人已满)</div>
<div>群11:296811328(1000人已满)</div>
<div>群10:959059626(2000人已满)</div>
<div>群9:775128777(500人已满)</div>
<div>群8:695442854(500人已满)</div>
<div>群7:942061423(500人已满)</div>
<div>群6:697264024(2000人已满)</div>
<div>群5:731951419(500人已满)</div>
<div>群4:942702595(1000人已满)</div>
<div>群3:773794803(1000人已满) </div>
<div>群2:901474938(1000人已满) </div>
<div>群1:531031261(1000人已满)</div>
</div>
</div>
<div class="contact-item">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/weixin@2x.png" width="20" height="20"/>
<div class="contact-smg">
<div>关注微信公众号</div>
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/weixin.jpg" width="90" height="90"/>
</div>
</div>
</div>
\ No newline at end of file
此差异已折叠。
* 基础
* [日志打印](api/log.md)
* [uni.base64ToArrayBuffer](api/base64ToArrayBuffer?id=base64toarraybuffer)
* [uni.arrayBufferToBase64](api/arrayBufferToBase64?id=arraybuffertobase64)
* [定时器](api/timer.md)
* [生命周期](api/lifetime.md)
* 网络
* [发起请求](api/request/request.md)
* [上传、下载](api/request/network-file.md)
* [WebSocket](api/request/websocket.md)
* [SocketTask](api/request/socket-task.md)
* [mDNS](api/request/mDNS.md)
* [UDP 通信](api/request/UDP.md)
* 路由与页面跳转
* [uni.navigateTo](/api/router?id=navigateto)
* [uni.redirectTo](/api/router?id=redirectto)
* [uni.reLaunch](/api/router?id=relaunch)
* [uni.switchTab](/api/router?id=switchtab)
* [uni.navigateBack](/api/router?id=navigateback)
* [窗口动画](/api/router?id=animation)
* 数据缓存
* [uni.setStorage](/api/storage/storage?id=setstorage)
* [uni.setStorageSync](/api/storage/storage?id=setStorageSync)
* [uni.getStorage](/api/storage/storage?id=getStorage)
* [uni.getStorageSync](/api/storage/storage?id=getStorageSync)
* [uni.getStorageInfo](/api/storage/storage?id=getStorageInfo)
* [uni.getStorageInfoSync](/api/storage/storage?id=getStorageInfoSync)
* [uni.removeStorage](/api/storage/storage?id=removeStorage)
* [uni.removeStorageSync](/api/storage/storage?id=removeStorageSync)
* [uni.clearStorage](/api/storage/storage?id=clearStorage)
* [uni.clearStorageSync](/api/storage/storage?id=clearstoragesync)
* 位置
* [获取位置](api/location/location.md)
* [查看位置](api/location/open-location.md)
* [地图组件控制](api/location/map.md)
* 媒体
* [图片](api/media/image.md)
* [录音管理](api/media/record-manager.md)
* [背景音频播放管理](api/media/background-audio-manager.md)
* [音频组件控制](api/media/audio-context.md)
* [视频](api/media/video.md)
* [视频组件控制](api/media/video-context.md)
* [相机组件控制](api/media/camera-context.md)
* [直播组件控制](api/media/live-player-context.md)
* [富文本](api/media/editor-context.md)
* 设备
* [系统信息](api/system/info.md)
* [内存](api/system/memory.md)
* [网络状态](api/system/network.md)
* [加速度计](api/system/accelerometer.md)
* [罗盘](api/system/compass.md)
* [陀螺仪](api/system/gyroscope.md)
* [拨打电话](api/system/phone.md)
* [扫码](api/system/barcode.md)
* [剪贴板](api/system/clipboard.md)
* [屏幕](api/system/brightness.md)
* [用户截屏事件](api/system/capture-screen.md)
* [振动](api/system/vibrate.md)
* [手机联系人](api/system/contact.md)
* [蓝牙](api/system/bluetooth.md)
* [低功耗蓝牙](api/system/ble.md)
* [iBeacon](api/system/ibeacon.md)
* [Wi-Fi](api/system/wifi.md)
* [电量](api/system/batteryInfo.md)
* [NFC](api/system/nfc.md)
* [设备方向](api/system/deviceMotion.md)
* [Worker](api/worder.md)
* 键盘
* [uni.hideKeyboard](/api/key?id=hidekeyboard)
* 界面
* [交互反馈](api/ui/prompt.md)
* [设置导航条](api/ui/navigationbar.md)
* [设置TabBar](api/ui/tabbar.md)
* [背景](api/ui/bgcolor.md)
* [动画](api/ui/animation?id=unicreateanimationobject)
* [滚动](api/ui/scroll)
* [窗口](api/ui/window.md)
* [字体](api/ui/font.md)
* [下拉刷新](api/ui/pulldown.md)
* [节点信息](api/ui/nodes-info.md)
* [节点布局相交状态](api/ui/intersection-observer.md)
* [自定义组件](api/ui/nextTick.md)
* [菜单](api/ui/menuButton.md)
* 页面和窗体
* [页面](api/window/window.md)
* [页面通讯](api/window/communication.md)
* [subNVue原生子窗体](api/window/subNVues.md)
* 文件
* [uni.saveFile](/api/file/file?id=savefile)
* [uni.getSavedFileList](/api/file/file?id=getSavedFileList)
* [uni.getSavedFileInfo](/api/file/file?id=getSavedFileInfo)
* [uni.removeSavedFile](/api/file/file?id=removeSavedFile)
* [uni.getFileInfo](/api/file/file?id=getFileInfo)
* [uni.openDocument](/api/file/file?id=openDocument)
* [uni.getFileSystemManager](/api/file/getFileSystemManager)
* 绘画
* [uni.createOffscreenCanvas](api/canvas/createOffscreenCanvas.md)
* [uni.createCanvasContext](api/canvas/createCanvasContext.md)
* [uni.canvasToTempFilePath](api/canvas/canvasToTempFilePath.md)
* [uni.canvasPutImageData](api/canvas/canvasPutImageData.md)
* [uni.canvasGetImageData](api/canvas/canvasGetImageData.md)
* [CanvasContext](api/canvas/CanvasContext.md)
* [CanvasGradient](api/canvas/CanvasGradient.md)
* 第三方服务
* [获取服务供应商](api/plugins/provider.md)
* [登录](api/plugins/login.md)
* [分享](api/plugins/share.md)
* [支付](api/plugins/payment.md)
* [推送](api/plugins/push.md)
* [语音](api/plugins/voice.md)
* 平台扩展
* [App原生插件](api/extend/native-plugin.md)
* 其他
* [授权](api/other/authorize.md)
* [设置](api/other/setting.md)
* [收货地址](api/other/choose-address.md)
* [获取发票抬头](api/other/invoice-title.md)
* [小程序跳转](api/other/open-miniprogram.md)
* [账号信息](api/other/getAccountInfoSync.md)
* [生物认证(指纹及人脸识别)](api/other/authentication.md)
* [运动(计步器)](api/other/sport.md)
* [统计](api/other/report.md)
* [卡券](api/other/card.md)
* [模板消息](api/other/template.md)
* [小程序更新](api/other/update.md)
* [调试](api/other/set-enable-debug.md)
* [获取第三方平台数据](api/other/get-extconfig.md)
* [广告](api/other/advertisement.md)
<li></li>
<div class="contact-box">
<a href="//ask.dcloud.net.cn/explore/" target="_blank" class="contact-item">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/d@2x.png" width="20" height="20"/>
<div class="contact-smg">
<div>论坛</div>
</div>
</a>
<div class="contact-item">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/git-1.png" width="20" height="20"/>
<div class="contact-smg">
<div>
代码仓库:<a href="https://gitee.com/dcloud/uni-app" target="_blank">码云</a><a href="http://github.com/dcloudio/uni-app" target="_blank">GitHub</a>
</div>
</div>
</div>
<div class="contact-item">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/qq@2x.png" width="20" height="20"/>
<div class="contact-smg">
<div>官方QQ交流群</div>
<div>群26:147867597 &nbsp;<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=28a1a9a3e8f1866ee6a5f2b1caba05039e30d3ae1461e64b2ec31c095fcab951">点此加入</a></div>
<div>群35:713420817(2000人已满)</div>
<div>群34:530305531(2000人已满)</div>
<div>群33:498071674(2000人已满)</div>
<div>群32:166188631(500人已满)</div>
<div>群31:567471669(500人已满)</div>
<div>群30:371046920(500人已满)</div>
<div>群29:202965481(500人已满)</div>
<div>群28:166188776(2000人已满 </div>
<div>群27:811363410(2000人已满 </div>
<!-- <div>群26:147867597(2000人已满)</div> -->
<div>群25:165297000(500人已满)</div>
<div>群24:672494800(500人已满)</div>
<div>群23:599958679(500人已满)</div>
<div>群22:687186952(1000人已满)</div>
<div>群21:717019120(2000人已满)</div>
<div>群20:165796402(500人已满)</div>
<div>群19:165657124(1000人已满)</div>
<div>群18:698592271(500人已满)</div>
<div>群17:951348804(1000人已满)</div>
<div>群16:719211033(1000人已满)</div>
<div>群15:516984120(500人已满)</div>
<div>群14:465953250(500人已满)</div>
<div>群13:699478442(500人已满)</div>
<div>群12:884860657(500人已满)</div>
<div>群11:296811328(1000人已满)</div>
<div>群10:959059626(2000人已满)</div>
<div>群9:775128777(500人已满)</div>
<div>群8:695442854(500人已满)</div>
<div>群7:942061423(500人已满)</div>
<div>群6:697264024(2000人已满)</div>
<div>群5:731951419(500人已满)</div>
<div>群4:942702595(1000人已满)</div>
<div>群3:773794803(1000人已满) </div>
<div>群2:901474938(1000人已满) </div>
<div>群1:531031261(1000人已满)</div>
</div>
</div>
<div class="contact-item">
<img src="//img-cdn-qiniu.dcloud.net.cn/uniapp/doc/weixin@2x.png" width="20" height="20"/>
<div class="contact-smg">
<div>关注微信公众号</div>
<img src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/doc/weixin.jpg" width="90" height="90"/>
</div>
</div>
</div>
\ No newline at end of file
## uni.arrayBufferToBase64(arrayBuffer)
将 ArrayBuffer 对象转成 Base64 字符串
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|x|x|x|
**参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|arrayBuffer|ArrayBuffer|是|要转换成 Base64 字符串的 ArrayBuffer 对象|
**示例**
```javascript
const arrayBuffer = new Uint8Array([55, 55, 55])
const base64 = uni.arrayBufferToBase64(arrayBuffer)
```
\ No newline at end of file
## uni.base64ToArrayBuffer(base64)
将 Base64 字符串转成 ArrayBuffer 对象
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|x|x|x|
**参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|base64|String|是|要转化成 ArrayBuffer 对象的 Base64 字符串|
**示例**
```javascript
const base64 = 'test'
const arrayBuffer = uni.base64ToArrayBuffer(base64)
```
\ No newline at end of file
此差异已折叠。
### CanvasGradient.addColorStop(stop,color)
创建一个颜色的渐变点。
- 小于最小 stop 的部分会按最小 stop 的 color 来渲染,大于最大 stop 的部分会按最大 stop 的 color 来渲染。
- 需要使用 ```addColorStop()``` 来指定渐变点,至少要两个。
#### 参数
|参数|类型 |定义 |
|---|---|--- |
|stop |Number(0-1)|表示渐变点在起点和终点中的位置 |
|color |Color |渐变点的颜色|
**示例代码**
```javascript
const ctx = uni.createCanvasContext('myCanvas')
// Create circular gradient
const grd = ctx.createLinearGradient(30, 10, 120, 10)
grd.addColorStop(0, 'red')
grd.addColorStop(0.16, 'orange')
grd.addColorStop(0.33, 'yellow')
grd.addColorStop(0.5, 'green')
grd.addColorStop(0.66, 'cyan')
grd.addColorStop(0.83, 'blue')
grd.addColorStop(1, 'purple')
// Fill with gradient
ctx.setFillStyle(grd)
ctx.fillRect(10, 10, 150, 80)
ctx.draw()
```
![uniapp](//img-cdn-qiniu.dcloud.net.cn/uniapp/images/color-stop.png?t=201859)
#### uni.canvasGetImageData(OBJECT,this)
返回一个数组,用来描述 canvas 区域隐含的像素数据,在自定义组件下,第二个参数传入自定义组件实例 this,以操作组件内 `<canvas>` 组件。
**OBJECT参数说明:**
|参数|类型|必填|说明|
|---|---|---|---|
|canvasId|String|是|画布标识,传入 ```<canvas />``` 的 canvas-id|
|x|Number|是|将要被提取的图像数据矩形区域的左上角 x 坐标|
|y|Number|是|将要被提取的图像数据矩形区域的左上角 y 坐标|
|width|Number|是|将要被提取的图像数据矩形区域的宽度|
|height|Number|是|将要被提取的图像数据矩形区域的高度|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success回调返回参数:**
|参数|类型|说明|
|---|---|---|
|errMsg|String||
|width|Number|图像数据矩形的宽度|
|height|Number|图像数据矩形的高度|
|data|Uint8ClampedArray|图像像素点数据,一维数组,每四项表示一个像素点的rgba|
**示例代码**
```javascript
uni.canvasGetImageData({
canvasId: 'myCanvas',
x: 0,
y: 0,
width: 100,
height: 100,
success(res) {
console.log(res.width) // 100
console.log(res.height) // 100
console.log(res.data instanceof Uint8ClampedArray) // true
console.log(res.data.length) // 100 * 100 * 4
}
})
```
#### uni.canvasPutImageData(OBJECT,this)
将像素数据绘制到画布的方法,在自定义组件下,第二个参数传入自定义组件实例 this,以操作组件内 `<canvas>` 组件
**OBJECT参数说明:**
|参数|类型|必填|说明|最低版本|
|---|---|---|---|--|
|canvasId|String|是|画布标识,传入 ```<canvas />``` 的 canvas-id||
|data|Uint8ClampedArray|是|图像像素点数据,一维数组,每四项表示一个像素点的rgba||
|x|Number|是|源图像数据在目标画布中的位置偏移量(x 轴方向的偏移量)||
|y|Number|是|源图像数据在目标画布中的位置偏移量(y 轴方向的偏移量)||
|width|Number|是|源图像数据矩形区域的宽度||
|height|Number|否|源图像数据矩形区域的高度||
|success|Function|否|接口调用成功的回调函数||
|fail|Function|否|接口调用失败的回调函数||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**示例代码**
```javascript
const data = new Uint8ClampedArray([255, 0, 0, 1])
uni.canvasPutImageData({
canvasId: 'myCanvas',
x: 0,
y: 0,
width: 1,
data: data,
success(res) {}
})
```
#### uni.canvasToTempFilePath(OBJECT, this)
把当前画布指定区域的内容导出生成指定大小的图片,并返回文件路径。在自定义组件下,第二个参数传入自定义组件实例 this,以操作组件内 `<canvas>` 组件。
**OBJECT参数说明:**
|参数 |类型 |必填 |说明 |
|---|---|---|---|---|
|x |Number |否 |画布x轴起点(默认0)|
|y |Number |否 |画布y轴起点(默认0)|
|width |Number |否 |画布宽度(默认为canvas宽度-x)|
|height |Number |否 |画布高度(默认为canvas高度-y)|
|destWidth |Number |否 |输出图片宽度(默认为 width * 屏幕像素密度)|
|destHeight |Number |否 |输出图片高度(默认为 height * 屏幕像素密度)|
|canvasId |String |是 |画布标识,传入 ``<canvas/>`` 的 canvas-id|
|fileType |String |否 |目标文件的类型,只支持 'jpg' 或 'png'。默认为 'png'|
|quality |Number |否 |图片的质量,取值范围为 (0, 1],不在范围内时当作1.0处理|
|success |Function |否 |接口调用成功的回调函数|
|fail |Function |否 |接口调用失败的回调函数|
|complete |Function |否 |接口调用结束的回调函数(调用成功、失败都会执行) |
**示例代码**
```javascript
uni.canvasToTempFilePath({
x: 100,
y: 200,
width: 50,
height: 50,
destWidth: 100,
destHeight: 100,
canvasId: 'myCanvas',
success: function(res) {
// 在H5平台下,tempFilePath 为 base64
console.log(res.tempFilePath)
}
})
```
#### uni.createCanvasContext(canvasId, this)
#### 定义
创建 ```canvas``` 绘图上下文(指定 canvasId)。在自定义组件下,第二个参数传入组件实例this,以操作组件内 ```<canvas/>``` 组件
**Tip:** 需要指定 canvasId,该绘图上下文只作用于对应的 ```<canvas/>```
#### 参数
|参数|类型|说明|
|----|----|-----|
|canvasId|String |画布表示,传入定义在 ```<canvas/>``` 的 canvas-id |
|componentInstance|Object |自定义组件实例 this ,表示在这个自定义组件下查找拥有 canvas-id 的 ```<canvas/>``` ,如果省略,则不在任何自定义组件内查找 |
#### 返回值
[CanvasContext](/api/canvas/CanvasContext.md)
\ No newline at end of file
#### uni.createOffscreenCanvas()
创建离屏 canvas 实例
仅微信小程序平台支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.createOffscreenCanvas.html)
### uni.requireNativePlugin(PluginName)
引入 App 原生插件。
平台差异说明:
* 5+App
自 HXuilderX1.4 版本起,``uni-app`` 支持引入原生插件,使用方式如下:
```javascript
const PluginName = uni.requireNativePlugin(PluginName); // PluginName 为原生插件名称
```
不管是vue文件还是nvue文件,都是这个API。
下面以原生插件 [DCloud-RichAlert](https://ext.dcloud.net.cn/plugin?id=36) 为例,介绍如何使用此API。
1.``uni-app`` 项目工程中添加插件:从 [http://ext.dcloud.net.cn/plugin?id=36](http://ext.dcloud.net.cn/plugin?id=36) 下载 DCloud-RichAlert.zip ,解压到 ``uni-app`` 项目根目录下的 ``nativeplugins`` 目录(如不存在则创建),添加后目录结构为:![ uni-app](https://img-cdn-qiniu.dcloud.net.cn/uploads/article/20181226/10cd9e6a19769b9543e0a0eda2c66696.png)
2. 在页面引入原生插件,``uni.requireNativePlugin`` 使用后返回一个对象:
```javascript
const dcRichAlert = uni.requireNativePlugin('DCloud-RichAlert')
```
3. 使用原生插件
```javascript
dcRichAlert.show({
position: 'bottom',
title: "提示信息",
titleColor: '#FF0000',
content: "<a href='https://uniapp.dcloud.io/' value='Hello uni-app'>uni-app</a> 是一个使用 Vue.js 开发跨平台应用的前端框架!\n免费的\n免费的\n免费的\n重要的事情说三遍",
contentAlign: 'left',
checkBox: {
title: '不再提示',
isSelected: true
},
buttons: [{
title: '取消'
}, {
title: ''
}, {
title: '确认',
titleColor: '#3F51B5'
}]
}, result => {
console.log(result)
});
```
**注意事项:**
1. 插件来源为 [插件市场](http://ext.dcloud.net.cn/?cat1=5),或自己开发的插件,Android插件开发参考:[https://ask.dcloud.net.cn/article/35416](https://ask.dcloud.net.cn/article/35416),iOS插件开发参考:[https://ask.dcloud.net.cn/article/35415](https://ask.dcloud.net.cn/article/35415)
2. 不支持真机运行原生插件,仅支持云端打包运行或使用自定义基座运行;
3. 如果插件需要传递文件路径,则需要传手机文件的绝对路径,可使用 5+ [IO模块](http://www.html5plus.org/doc/zh_cn/io.html) 的相关 API 得到文件的绝对路径。
\ No newline at end of file
#### uni.saveFile(OBJECT)
保存文件到本地。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|
**注意:saveFile 会把临时文件移动,因此调用成功后传入的 tempFilePath 将不可用。**
**OBJECT 参数说明:**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|tempFilePath|String|是|需要保存的文件的临时路径|
|success|Function|否|返回文件的保存路径,res = {savedFilePath: '文件的保存路径'}|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数说明:**
|参数|说明|
|:-|:-|
|savedFilePath|文件的保存路径|
**示例代码:**
```javascript
uni.chooseImage({
success: function (res) {
var tempFilePaths = res.tempFilePaths;
uni.saveFile({
tempFilePath: tempFilePaths[0],
success: function (res) {
var savedFilePath = res.savedFilePath;
}
});
}
});
```
#### uni.getSavedFileList(OBJECT)
获取本地已保存的文件列表。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
**OBJECT 参数说明:**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|success|Function|否|接口调用成功的回调函数,返回结果见 success 返回参数说明|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数说明:**
|参数|类型|说明|
|:-|:-|:-|
|errMsg|String|接口调用结果|
|fileList|Array&lt;Object&gt;|文件列表|
**fileList 中的项目说明:**
|键|类型|说明|
|:-|:-|:-|
|filePath|String|文件的本地路径|
|createTime|Number|文件的保存时的时间戳,从 `1970/01/01 08:00:00` 到该时刻的秒数。|
|size|String|文件大小,以字节为单位。|
**示例代码:**
```javascript
uni.getSavedFileList({
success: function (res) {
console.log(res.fileList);
}
});
```
#### uni.getSavedFileInfo(OBJECT)
获取本地文件的文件信息。此接口只能用于获取已保存到本地的文件。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
**OBJECT 参数说明:**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|filePath|String|是|文件路径|
|success|Function|否|接口调用成功的回调函数,返回结果见 success 返回参数说明|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数说明:**
|参数|类型|说明|
|:-|:-|:-|
|errMsg|String|接口调用结果|
|size|Number|文件大小,以字节为单位。|
|createTime|Number|文件保存时的时间戳,从 `1970/01/01 08:00:00` 到该时刻的秒数。|
**示例代码:**
```javascript
uni.getSavedFileInfo({
filePath: 'unifile://somefile', //仅做示例用,非真正的文件路径
success: function (res) {
console.log(res.size);
console.log(res.createTime);
}
});
```
#### uni.removeSavedFile(OBJECT)
删除本地存储的文件。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
**OBJECT 参数说明:**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|filePath|String|是|需要删除的文件路径|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例代码:**
```javascript
uni.getSavedFileList({
success: function (res) {
if (res.fileList.length > 0) {
uni.removeSavedFile({
filePath: res.fileList[0].filePath,
complete: function (res) {
console.log(res);
}
});
}
}
});
```
#### uni.getFileInfo(OBJECT)
获取文件信息
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
**OBJECT 参数说明:**
|参数名|类型|默认值|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|:-|
|filePath|String||是|本地文件路径||
|digestAlgorithm|String|md5|否|计算文件摘要的算法,可取值 md5、sha1。|微信小程序|
|success|Function||否|接口调用成功的回调函数||
|fail|Function||否|接口调用失败的回调函数||
|complete|Function||否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**success 返回参数说明:**
|参数|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|errMsg|String|接口调用结果||
|size|Number|文件大小,以字节为单位。||
|digest|String|按照传入的 digestAlgorithm 计算得出的的文件摘要|微信小程序|
#### uni.openDocument(OBJECT)
新开页面打开文档,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|x|
**OBJECT 参数说明:**
|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|
|filePath|String|是|文件路径,可通过 downFile 获得||
|fileType|String|否|文件类型,指定文件类型打开文件,有效值 doc, xls, ppt, pdf, docx, xlsx, pptx|微信小程序|
|success|String|否|接口调用成功的回调函数||
|fail|String|否|接口调用失败的回调函数|微信小程序|
|complete|String|否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**示例代码:**
```javascript
uni.downloadFile({
url: 'https://example.com/somefile.pdf',
success: function (res) {
var filePath = res.tempFilePath;
uni.openDocument({
filePath: filePath,
success: function (res) {
console.log('打开文档成功');
}
});
}
});
```
**平台差异**
|平台|打开方式|
|:-|:-|
|小程序|在小程序的入口应用内打开|
|5+App iOS|在当前应用内打开|
|5+App Android|调用系统相关应用打开,无相关应用则不能打开|
|H5|使用浏览器打开,当前浏览器不支持则不能打开|
**Tips**
App端有更强大的plus.io API可用。[https://www.html5plus.org/doc/zh_cn/io.html](https://www.html5plus.org/doc/zh_cn/io.html)
\ No newline at end of file
#### uni.getFileSystemManager()
获取全局唯一的文件管理器
仅微信小程序平台支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.getFileSystemManager.html)
\ No newline at end of file
#### uni.hideKeyboard()
隐藏软键盘
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|x|x|
隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。
### 应用生命周期
``uni-app`` 支持如下应用生命周期函数:
|函数名|说明|
|:-|:-|
|onLaunch|当``uni-app`` 初始化完成时触发(全局只触发一次)|
|onShow|当 ``uni-app`` 启动,或从后台进入前台显示|
|onHide|当 ``uni-app`` 从前台进入后台|
|onUniNViewMessage|对 ``nvue`` 页面发送的数据进行监听,可参考 [nvue 向 vue 通讯](/use-weex?id=nvue-向-vue-通讯)|
**注意**
- 应用生命周期仅可在``App.vue``中监听,在其它页面监听无效。
- onlaunch里进行页面跳转,如遇白屏报错,请参考[https://ask.dcloud.net.cn/article/35942](https://ask.dcloud.net.cn/article/35942)
### 页面生命周期
``uni-app`` 支持如下页面生命周期函数:
|函数名|说明|平台差异说明|最低版本|
|:-|:-|:-|:-|
|onLoad|监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参),参考[示例](/api/router?id=navigateto)|||
|onShow|监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面|||
|onReady|监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发|||
|onHide|监听页面隐藏|||
|onUnload|监听页面卸载|||
|onResize|监听窗口尺寸变化|5+App、微信小程序||
|onPullDownRefresh|监听用户下拉动作,一般用于下拉刷新,参考[示例](api/ui/pulldown)|||
|onReachBottom|页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。如使用scroll-view导致页面级没有滚动,则触底事件不会被触发|||
|onTabItemTap|点击 tab 时触发,参数为Object,具体见下方注意事项|微信小程序、百度小程序、H5、5+App(自定义组件模式)||
|onShareAppMessage|用户点击右上角分享|微信小程序、百度小程序、头条小程序、支付宝小程序||
|onPageScroll|监听页面滚动,参数为Object|||
|onNavigationBarButtonTap|监听原生标题栏按钮点击事件,参数为Object|5+ App、H5||
|onBackPress|监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ;详细说明及使用:[onBackPress 详解](http://ask.dcloud.net.cn/article/35120)|5+App、H5||
|onNavigationBarSearchInputChanged|监听原生标题栏搜索输入框输入内容变化事件|5+App、H5|1.6.0|
|onNavigationBarSearchInputConfirmed|监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。|5+App、H5|1.6.0|
|onNavigationBarSearchInputClicked|监听原生标题栏搜索输入框点击事件|5+App、H5|1.6.0|
``onPageScroll`` 参数说明:
|属性|类型|说明|
|---|---|---|
|scrollTop|Number|页面在垂直方向已滚动的距离(单位px)|
``onTabItemTap`` 参数说明:
|属性|类型|说明|
|---|---|---|
|index|String|被点击tabItem的序号,从0开始|
|pagePath|String|被点击tabItem的页面路径|
|text|String|被点击tabItem的按钮文字|
**注意**
- onTabItemTap常用于点击当前tabitem,滚动或刷新当前页面。如果是点击不同的tabitem,一定会触发页面切换。
- 如果想在App端实现点击某个tabitem不跳转页面,不能使用onTabItemTap,可以使用[plus.nativeObj.view](http://www.html5plus.org/doc/zh_cn/nativeobj.html)放一个区块盖住原先的tabitem,并拦截点击事件。
- onTabItemTap在App端,从HBuilderX 1.9 的自定义组件编译模式开始支持。
``onNavigationBarButtonTap`` 参数说明:
|属性|类型|说明|
|---|---|---|
|index|Number|原生标题栏按钮数组的下标|
`onBackPress` 回调参数对象说明:
|属性|类型|说明|
|---|---|---|
|from|String|触发返回行为的来源:'backbutton'——左上角导航栏按钮及安卓返回键;'navigateBack'——uni.navigateBack() 方法。|
```javascript
export default {
data() {
return {};
},
onBackPress(options) {
console.log('from:' + options.from)
}
}
```
**注意**
- nvue 页面支持的生命周期参考:[nvue 生命周期介绍](/use-weex?id=生命周期)
\ No newline at end of file
### uni.getLocation(OBJECT)
获取当前的地理位置、速度。
在微信小程序中,当用户离开应用后,此接口无法调用;当用户点击“显示在聊天顶部”时,此接口可继续调用。
**OBJECT 参数说明**
|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-:|
|type|String|否|默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 ``uni.openLocation`` 的坐标||
|altitude|Boolean|否|传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度|App和头条小程序不支持|
|geocode|Boolean|否|默认false,是否解析地址信息|仅App平台支持|
|success|Function|是|接口调用成功的回调函数,返回内容详见返回参数说明。||
|fail|Function|否|接口调用失败的回调函数||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**success 返回参数说明**
|参数|说明|
|:-|:-|
|latitude|纬度,浮点数,范围为-90~90,负数表示南纬|
|longitude|经度,浮点数,范围为-180~180,负数表示西经|
|speed|速度,浮点数,单位m/s|
|accuracy|位置的精确度|
|altitude|高度,单位 m|
|verticalAccuracy|垂直精度,单位 m(Android 无法获取,返回 0)|
|horizontalAccuracy|水平精度,单位 m|
|[address](/api/location/location?id=address)|地址信息|
**address 地址信息说明**
|属性|类型|描述|说明|
|:-|:-|:-|:-|
|country|String|国家|如“中国”,如果无法获取此信息则返回undefined|
|province|String|省份名称|如“北京市”,如果无法获取此信息则返回undefined|
|city|String|城市名称|如“北京市”,如果无法获取此信息则返回undefined|
|district|String|区(县)名称|如“朝阳区”,如果无法获取此信息则返回undefined|
|street|String|街道信息|如“酒仙桥路”,如果无法获取此信息则返回undefined|
|streetNum|String|获取街道门牌号信息|如“3号”,如果无法获取此信息则返回undefined|
|poiName|String|POI信息|如“电子城.国际电子总部”,如果无法获取此信息则返回undefined|
|postalCode|String|邮政编码|如“100016”,如果无法获取此信息则返回undefined|
|cityCode|String|城市代码|如“010”,如果无法获取此信息则返回undefined|
**示例**
```javascript
uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log('当前位置的经度:' + res.longitude);
console.log('当前位置的纬度:' + res.latitude);
}
});
```
**注意**
- H5:在较新的手机浏览器上,H5 端获取定位信息,要求部署在 **https** 服务上,本地预览(localhost)仍然可以使用 http 协议。
- H5:无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
- H5:微信公众号可使用微信js sdk,[详见](https://ask.dcloud.net.cn/article/35380)
- App:Android由于谷歌服务被墙,想在国产手机上正常定位,需要向高德等三方服务商申请SDK资质,获取AppKey。云打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南。离线打包自行在原生工程中配置。
- App:``<map>`` 组件默认为国测局坐标gcj02,调用 ``uni.getLocation`` 返回结果传递给 ``<map>`` 组件时,需指定 type 为 gcj02。
- App:持续定位方案:iOS端可以申请持续定位权限,[参考](https://ask.dcloud.net.cn/article/12569)。Android如果进程被杀,代码无法执行。可以使用[unipush](https://ask.dcloud.net.cn/article/35622),通过服务器激活App,执行透传消息,让App启动然后采集位置。Android上,即使自己写原生插件做后台进程,也很容易被杀,unipush是更合适的方案
- 小程序:api默认不返回详细地址中文描述。需要中文地址有2种方式:1、使用高德地图小程序sdk,在app和微信上都可以获得中文地址,[参考](http://ask.dcloud.net.cn/article/35070)。2、只考虑app,使用``plus.geolocation``也可以获取中文地址
### uni.chooseLocation(OBJECT)
打开地图选择位置。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
**OBJECT 参数说明**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|keyword|String|否|搜索关键字,仅App平台支持|
|success|Function|是|接口调用成功的回调函数,返回内容详见返回参数说明。|
|fail|Function|否|接口调用失败的回调函数(获取定位失败、用户取消等情况下触发)|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**注意**
- keyword参数,HBuilderX 2.1.4 以后版本支持
- 因平台差异,如果SDK配置百度地图,需要设置keyword,才能显示相关地点
**success 返回参数说明**
|参数|说明|
|:-|:-|
|name|位置名称|
|address|详细地址|
|latitude|纬度,浮点数,范围为-90~90,负数表示南纬|
|longitude|经度,浮点数,范围为-180~180,负数表示西经|
**示例**
```javascript
uni.chooseLocation({
success: function (res) {
console.log('位置名称:' + res.name);
console.log('详细地址:' + res.address);
console.log('纬度:' + res.latitude);
console.log('经度:' + res.longitude);
}
});
```
**注意**
- 不同端,使用地图选择时基于的底层地图引擎不一样,如微信小程序和H5是腾讯地图,App是高德地图,详见地图map组件的使用注意事项
- 微信内置浏览器中可使用微信js sdk,[详见](https://ask.dcloud.net.cn/article/35380)
- chooseLocation属于封装型API,开发者若觉得不够灵活,可自行基于原始的map组件进行封装
- HBuilderX 1.9.2的Android平台chooseLocation失效,请更新到更高版本。
\ No newline at end of file
### uni.createMapContext(mapId,this)
创建并返回 map 上下文 ``mapContext`` 对象。在自定义组件下,第二个参数传入组件实例this,以操作组件内 ``<map>`` 组件。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
mapContext
``mapContext`` 通过 mapId 跟一个 ``<map>`` 组件绑定,通过它可以操作对应的 ``<map>`` 组件。
**mapContext 对象的方法列表**
|方法|参数|说明|平台差异说明|最低版本|
|:-|:-|:-|:-|:-|
|getCenterLocation|OBJECT|获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 [uni.openLocation](api/location/location?id=getlocation)|||
|moveToLocation||将地图中心移动到当前定位点,需要配合map组件的show-location使用|||
|translateMarker|OBJECT|平移marker,带动画|||
|includePoints|OBJECT|缩放视野展示所有经纬度|||
|getRegion|OBJECT|获取当前地图的视野范围|||
|getScale|OBJECT|获取当前地图的缩放级别|||
|$getAppMap||获取原生地图对象 [plus.maps.Map](https://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.Map)|5+App自定义组件模式|1.9.3|
`$getAppMap()` 注意事项:
- 在页面中,必须在 `onReady` 中调用。
- 在组件中,必须在 `mounted` 中调用。
- `uni-app`中使用原生地图无需提供占位div,得到`$getAppMap()`后直接js使用即可。
**getCenterLocation 的 OBJECT 参数列表**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|success|Function|否|接口调用成功的回调函数 ,res = { longitude: "经度", latitude: "纬度"}|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**translateMarker 的 OBJECT 参数列表**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|markerId|Number|是|指定 marker|
|destination|Object|是|指定 marker 移动到的目标点|
|autoRotate|Boolean|是|移动过程中是否自动旋转 marker|
|rotate|Number|是|marker 的旋转角度|
|duration|Number|否|动画持续时长,默认值1000ms,平移与旋转分别计算|
|animationEnd|Function|否| 动画结束回调函数|
|fail|Function|否| 接口调用失败的回调函数|
**includePoints 的 OBJECT 参数列表**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|points|Array|是|要显示在可视区域内的坐标点列表,[{latitude, longitude}]|
|padding|Array|否|坐标点形成的矩形边缘到地图边缘的距离,单位像素。格式为[上,右,下,左],安卓上只能识别数组第一项,上下左右的padding一致。开发者工具暂不支持padding参数。|
**getRegion 的 OBJECT 参数列表**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|success|Function|否|接口调用成功的回调函数,res = {southwest, northeast},西南角与东北角的经纬度|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**getScale 的 OBJECT 参数列表**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|success|Function|否|接口调用成功的回调函数,res = {scale}|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**Tips**
- 如果想在App端实现更多地图功能,可通过`$getAppMap()`获取原生地图对象`plus.maps.Map`,然后参考[文档](https://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.Map)实现更多功能。
- H5 端获取定位信息,需要部署在 **https** 服务上,本地预览(localhost)仍然可以使用 http 协议。
- 无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
- App 端使用地图组件需要向高德或百度等三方服务商申请SDK资质,获取AppKey,打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南。
- ``<map>`` 组件默认为国测局坐标,调用 ``uni.getLocation`` 返回结果传递给 ``<map>`` 组件时,需指定 type 为 gcj02。
### uni.openLocation(OBJECT)
使用应用内置地图查看位置。
**OBJECT 参数说明**
|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|
|latitude|Float|是|纬度,范围为-90~90,负数表示南纬,使用 gcj02 国测局坐标系||
|longitude|Float|是|经度,范围为-180~180,负数表示西经,使用 gcj02 国测局坐标系||
|scale|Int|否|缩放比例,范围5~18,默认为18|微信小程序|
|name|String|否|位置名||
|address|String|否|地址的详细说明||
|success|Function|否|接口调用成功的回调函数||
|fail|Function|否|接口调用失败的回调函数||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**示例**
```javascript
uni.getLocation({
type: 'gcj02', //返回可以用于uni.openLocation的经纬度
success: function (res) {
const latitude = res.latitude;
const longitude = res.longitude;
uni.openLocation({
latitude: latitude,
longitude: longitude,
success: function () {
console.log('success');
}
});
}
});
```
**Tips**
- 本API是一个非原子的封装界面,开发者如有定制需求,可自己做页面实现类似功能。
- H5 端获取定位信息,需要部署在 **https** 服务上,本地预览(localhost)仍然可以使用 http 协议。
- 无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
- ``<map>`` 组件默认为国测局坐标,调用 ``uni.getLocation`` 返回结果传递给 ``<map>`` 组件时,需指定 type 为 gcj02。
- App 端使用地图组件需要向高德或百度等三方服务商申请SDK资质,获取AppKey,打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南。
- iOS端 如需使用第三方地图进行导航,需要在 manifest.json 文件内增加 ``urlschemewhitelist`` 节点,在线打包即可
```json
{
"app-plus": {
"distribute": {
"ios": {
"urlschemewhitelist": [
"baidumap",
"iosamap",
"qqmap"
]
}
}
}
}
```
- 点击返回也会进入 `fail` 回调中
\ No newline at end of file
## console
向控制台打印日志信息。
### debug
向控制台打印 debug 日志
注:App 端自定义组件模式下,debug 方法等同于 log 方法。
### log
向控制台打印 log 日志
### info
向控制台打印 info 日志
### warn
向控制台打印 warn 日志
### error
向控制台打印 error 日志
注意:
- 不同平台对于 console 方法的支持存在差异,建议在开发过程中只使用文档中提到的方法。
- HBuilderX中有2个重要的代码块,敲`clog`:可直接输出`console.log()`;敲`clogv`:可输出`console.log(": " + );`,并且出现双光标,方便把变量名称和值同时打印出来。
- HBuilderX 1.9.7 以上的自定义组件模式,支持打印对象信息到控制台。老版本可使用`clogj`代码块将json对象转为字符串打印出来。
\ No newline at end of file
### uni.createInnerAudioContext()
创建并返回内部 audio 上下文 `innerAudioContext` 对象。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|√|
**innerAudioContext 对象的属性列表**
|属性|类型|说明|只读|平台差异说明|
|:-|:-|:-|:-|:-|
|src|String|音频的数据链接,用于直接播放。|否||
|startTime|Number|开始播放的位置(单位:s),默认 0|否||
|autoplay|Boolean|是否自动开始播放,默认 false|否||
|loop|Boolean|是否循环播放,默认 false|否||
|obeyMuteSwitch|Boolean|是否遵循系统静音开关,当此参数为 false 时,即使用户打开了静音开关,也能继续发出声音,默认值 true|否|微信小程序、百度小程序、头条小程序|
|duration|Number|当前音频的长度(单位:s),只有在当前有合法的 src 时返回|是||
|currentTime|Number|当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回,时间不取整,保留小数点后 6 位|是||
|paused|Boolean|当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放|是||
|buffered|Number|音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。|是||
|volume|Number|音量。范围 0~1。|否|&nbsp;|
**innerAudioContext 对象的方法列表**
|方法|参数|说明|
|:-|:-|:-|
|play||播放|
|pause||暂停|
|stop||停止|
|seek|position|跳转到指定位置,单位 s|
|destroy||销毁当前实例|
|onCanplay|callback|音频进入可以播放状态,但不保证后面可以流畅播放|
|onPlay|callback|音频播放事件|
|onPause|callback|音频暂停事件|
|onStop|callback|音频停止事件|
|onEnded|callback|音频自然播放结束事件|
|onTimeUpdate|callback|音频播放进度更新事件|
|onError|callback|音频播放错误事件|
|onWaiting|callback|音频加载中事件,当音频因为数据不足,需要停下来加载时会触发|
|onSeeking|callback|音频进行 seek 操作事件|
|onSeeked|callback|音频完成 seek 操作事件|
|offCanplay|callback|取消监听 onCanplay 事件|
|offPlay|callback|取消监听 onPlay 事件|
|offPause|callback|取消监听 onPause 事件|
|offStop|callback|取消监听 onStop 事件|
|offEnded|callback|取消监听 onEnded 事件|
|offTimeUpdate|callback|取消监听 onTimeUpdate 事件|
|offError|callback|取消监听 onError 事件|
|offWaiting|callback|取消监听 onWaiting 事件|
|offSeeking|callback|取消监听 onSeeking 事件|
|offSeeked|callback|取消监听 onSeeked 事件|
errCode 说明
|errCode|说明|
|:-|:-|
|10001|系统错误|
|10002|网络错误|
|10003|文件错误|
|10004|格式错误|
|-1|未知错误|
**支持格式**
|格式|iOS|Android|
|:-|:-|:-|
|flac |x|√|
|m4a |√|√|
|ogg |x|√|
|ape |x|√|
|amr |x|√|
|wma |x|√|
|wav |√|√|
|mp3 |√|√|
|mp4 |x|√|
|aac |√|√|
|aiff |√|x|
|caf |√|x|
**示例**
```javascript
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.src = 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/audio/music.mp3';
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
```
\ No newline at end of file
### uni.getBackgroundAudioManager()
获取**全局唯一**的背景音频管理器 ``backgroundAudioManager``
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|x|√|x|
**backgroundAudioManager 对象的属性列表**
|属性|类型|说明|只读|
|:-|:-|:-|:-|
|duration|Number|当前音频的长度(单位:s),只有在当前有合法的 src 时返回|是|
|currentTime|Number|当前音频的播放位置(单位:s),只有在当前有合法的 src 时返回|是|
|paused|Boolean|当前是是否暂停或停止状态,true 表示暂停或停止,false 表示正在播放|是|
|src|String|音频的数据源,默认为空字符串,**当设置了新的 src 时,会自动开始播放,**目前支持的格式有 m4a, aac, mp3, wav|否|
|startTime|Number|音频开始播放的位置(单位:s)|否|
|buffered|Number|音频缓冲的时间点,仅保证当前播放时间点到此时间点内容已缓冲。|是|
|title|String|音频标题,用于做原生音频播放器音频标题。原生音频播放器中的分享功能,分享出去的卡片标题,也将使用该值。|否|
|epname|String|专辑名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。|否|
|singer|String|歌手名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。|否|
|coverImgUrl|String|封面图url,用于做原生音频播放器背景图。原生音频播放器中的分享功能,分享出去的卡片配图及背景也将使用该图。|否|
|webUrl|String|页面链接,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。|否|
|protocol|String|音频协议。默认值为 'http',设置 'hls' 可以支持播放 HLS 协议的直播音频|否|
**backgroundAudioManager 对象的方法列表**
|方法|参数|说明|
|:-|:-|:-|
|play||播放|
|pause||暂停|
|stop||停止|
|seek|position|跳转到指定位置,单位 s|
|onCanplay|callback|背景音频进入可以播放状态,但不保证后面可以流畅播放|
|onPlay|callback|背景音频播放事件|
|onPause|callback|背景音频暂停事件|
|onStop|callback|背景音频停止事件|
|onEnded|callback|背景音频自然播放结束事件|
|onTimeUpdate|callback|背景音频播放进度更新事件|
|onPrev|callback|用户在系统音乐播放面板点击上一曲事件(iOS only)|
|onNext|callback|用户在系统音乐播放面板点击下一曲事件(iOS only)|
|onError|callback|背景音频播放错误事件|
|onWaiting|callback|音频加载中事件,当音频因为数据不足,需要停下来加载时会触发|
errCode 说明
|errCode|说明|
|:-|:-|
|10001|系统错误|
|10002|网络错误|
|10003|文件错误|
|10004|格式错误|
|-1|未知错误|
**示例**
```javascript
const bgAudioMannager = uni.getBackgroundAudioManager();
bgAudioMannager.title = '致爱丽丝';
bgAudioMannager.singer = '暂无';
bgAudioMannager.coverImgUrl = 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/audio/music.jpg';
bgAudioMannager.src = 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/audio/music.mp3';
```
Tips:
* ios应用背景播放需在manifest.json -> app-plus -> distribute -> ios 节点添加 ``"UIBackgroundModes":["audio"]`` 才能保证音乐可以后台播放(打包成ipa生效)。
\ No newline at end of file
### uni.createCameraContext()
创建并返回 camera 上下文 cameraContext 对象。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
**cameraContext 对象的方法列表**
|方法|参数|说明|
|:-|:-|:-|
|takePhoto|Object|拍照,可指定质量,成功则返回图片路径。|
|startRecord|Object|开始录像|
|stopRecord|Object|结束录像,成功则返回封面与视频。|
|onCameraFrame|Function|获取 Camera 实时帧数据。仅`微信小程序平台`支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/CameraContext.onCameraFrame.html)|
**takePhoto 的 Object 参数列表:**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|quality|String|否|成像质量,值为high(高质量)、normal(普通质量)、low(低质量),默认normal。|
|success|Function|否|接口调用成功的回调函数 ,返回照片文件的临时路径,res = { tempImagePath }。|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**startRecord 的 Object 参数列表:**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**stopRecord 的 Object 参数列表:**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|success|Function|否|接口调用成功的回调函数 ,返回封面与视频的临时路径,res = { tempThumbPath, tempVideoPath }。|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**注意**
- App下实现OCR等证件识别等需求,可在插件市场获取原生插件,[https://ext.dcloud.net.cn/plugin?id=135](https://ext.dcloud.net.cn/plugin?id=135)
- 微信小程序下实现OCR等证件识别等需求,插件市场也有封装,搜索 [ocr](https://ext.dcloud.net.cn/search?q=ocr) 可见。
\ No newline at end of file
## editorContext
editorContext 实例,可通过 [uni.createSelectorQuery](/api/ui/nodes-info?id=createselectorquery) 获取。
`editorContext` 通过 `id` 跟一个 [`<editor>`](/component/editor) 组件绑定,操作对应的 [`<editor>`](/component/editor) 组件。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|x|x|x|
## editorContext.format(name, value)
修改样式
| 参数 | 类型 | 说明 |
| --- | --- | --- |
|name|String|属性|
|value|String|值|
**支持设置的样式列表**
| name | value |
| --- | --- |
| bold | |
| italic | |
| underline | |
| strike | |
| ins | |
| script | sub / super |
| header | H1 / H2 / h3 / H4 / h5 / H6 |
| align | left / center / right / justify |
| direction | rtl |
| indent | -1 / +1 |
| list | ordered / bullet / check |
| color | hex color |
| backgroundColor | hex color |
| margin/marginTop/marginBottom/marginLeft/marginRight | css style |
| padding/paddingTop/paddingBottom/paddingLeft/paddingRight | css style |
| font/fontSize/fontStyle/fontVariant/fontWeight/fontFamily | css style |
| lineHeight | css style |
| letterSpacing | css style |
| textDecoration | css style |
对已经应用样式的选区设置会取消样式。css style 表示 css 中规定的允许值。
## editorContext.insertDivider(OBJECT)
插入分割线
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
## editorContext.insertImage(OBJECT)
插入图片
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| src | String | | 是 | 图片地址 |
| alt | String | | 否 | 图像无法显示时的替代文本 |
| data | Object | | 否 | data 被序列化为 name=value;name1=value2 的格式挂在属性 data-custom 上 |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
## editorContext.insertText(OBJECT)
覆盖当前选区,设置一段文本
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| text | String | | 否 | 文本内容 |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
# editorContext.setContents(OBJECT)
初始化编辑器内容,hmlt和delta同时存在时仅delta生效
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| html | String | | 否 | 带标签的HTML内容 |
| delta | Object | | 否 | 表示内容的delta对象 |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
## editorContext.getContents(OBJECT)
获取编辑器内容
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
## editorContext.clear(OBJECT)
清空编辑器内容
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
## editorContext.removeFormat(OBJECT)
清除当前选区的样式
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
## editorContext.undo(OBJECT)
撤销
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
## editorContext.redo(OBJECT)
恢复
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
\ No newline at end of file
### uni.chooseImage(OBJECT)
从本地相册选择图片或使用相机拍照。另外选择和上传非图像、视频文件参考:[https://ask.dcloud.net.cn/article/35547](https://ask.dcloud.net.cn/article/35547)
**OBJECT 参数说明**
|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|
|count|Number|否|最多可以选择的图片张数,默认9|见下方说明|
|sizeType|Array&lt;String&gt;|否|original 原图,compressed 压缩图,默认二者都有|5+App、微信小程序、支付宝小程序、百度小程序|
|sourceType|Array&lt;String&gt;|否|album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项||
|success|Function|是|成功则返回图片的本地文件路径列表 tempFilePaths||
|fail|Function|否|接口调用失败的回调函数|小程序、5+App|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**Tips**
- count 值在 H5 平台的表现,基于浏览器本身的规范。目前测试的结果来看,只能限制单选/多选,并不能限制数量。并且,在实际的手机浏览器很少有能够支持多选的。
**注:文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 [uni.saveFile](api/file/file?id=savefile),在应用下次启动时才能访问得到。**
**success 返回参数说明**
|参数|类型|说明|
|:-|:-|:-|
|tempFilePaths|Array&lt;String&gt;|图片的本地文件路径列表|
|tempFiles|Array&lt;Object&gt;|图片的本地文件列表,每一项是一个 File 对象|
**File 对象结构如下**
|参数|类型|说明|
|:-|:-|:-|
|path|String|本地文件路径|
|size|Number|本地文件大小,单位:B|
**示例**
```javascript
uni.chooseImage({
count: 6, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: function (res) {
console.log(JSON.stringify(res.tempFilePaths));
}
});
```
### uni.previewImage(OBJECT) @unipreviewimageobject
预览图片。
**OBJECT 参数说明**
|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|
|current|String/Number|详见下方说明|详见下方说明||
|urls|Array&lt;String&gt;|是|需要预览的图片链接列表||
|indicator|String|否|图片指示器样式,可取值:"default" - 底部圆点指示器; "number" - 顶部数字指示器; "none" - 不显示指示器。|5+App|
|loop|Boolean|否|是否可循环预览,默认值为 false|5+App|
|longPressActions|Object|否|长按图片显示操作菜单,如不填默认为**保存相册**,1.9.5 起支持。|5+App|
|success|Function|否|接口调用成功的回调函数||
|fail|Function|否|接口调用失败的回调函数||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**current 参数说明**
> 1.9.5+ 支持传图片在 urls 中的索引值
current 为当前显示图片的链接/索引值,不填或填写的值无效则为 urls 的第一张。**App平台在 1.9.5至1.9.8之间,current为必填。不填会报错**
注意,当 urls 中有重复的图片链接时:
- 传链接,预览结果始终显示该链接在 urls 中第一次出现的位置。
- 传索引值,在微信/百度/头条小程序平台,会过滤掉传入的 urls 中该索引值之前与其对应图片链接重复的值。其它平台会保留原始的 urls 不会做去重处理。
举例说明:
一组图片 `[A, B1, C, B2, D]`,其中 B1 与 B2 的图片链接是一样的。
- 传 B2 的链接,预览的结果是 B1,前一张是 A,下一张是 C。
- 传 B2 的索引值 3,预览的结果是 B2,前一张是 C,下一张是 D。此时在微信/百度/头条小程序平台,最终传入的 urls 是 `[A, C, B2, D]`,过滤掉了与 B2 重复的 B1。
**longPressActions 参数说明**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|itemList|Array&lt;String&gt;|是|按钮的文字数组|
|itemColor|String|否|按钮的文字颜色,字符串格式,默认为"#000000"|
|success|Function|否|接口调用成功的回调函数,详见返回参数说明|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数说明**
|参数|类型|说明|
|:-|:-|:-|
|index|Number|用户长按图片的索引值|
|tapIndex|Number|用户点击按钮列表的索引值|
**示例**
```javascript
// 从相册选择6张图
uni.chooseImage({
count: 6,
sizeType: ['original', 'compressed'],
sourceType: ['album'],
success: function(res) {
// 预览图片
uni.previewImage({
urls: res.tempFilePaths,
longPressActions: {
itemList: ['发送给朋友', '保存图片', '收藏'],
success: function(data) {
console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
},
fail: function(err) {
console.log(err.errMsg);
}
}
});
}
});
```
### uni.getImageInfo(OBJECT)
获取图片信息。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|√|√|x|
**OBJECT 参数说明**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|src|String|是|图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数说明**
|参数名|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|width|Number|图片宽度,单位px||
|height|Number|图片高度,单位px||
|path|String|返回图片的本地路径||
|orientation|String|返回图片的方向,有效值见下表|小程序|
|type|String|返回图片的格式|小程序|
**orientation 参数说明**
|枚举值|说明|
|:-|:-|
|up|默认|
|down|180度旋转|
|left|逆时针旋转90度|
|right|顺时针旋转90度|
|up-mirrored|同up,但水平翻转|
|down-mirrored|同down,但水平翻转|
|left-mirrored|同left,但垂直翻转|
|right-mirrored|同right,但垂直翻转|
**示例**
```javascript
uni.chooseImage({
count: 1,
sourceType: ['album'],
success: function (res) {
uni.getImageInfo({
src: res.tempFilePaths[0],
success: function (image) {
console.log(image.width);
console.log(image.height);
}
});
}
});
```
### uni.saveImageToPhotosAlbum(OBJECT)
保存图片到系统相册。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|x|√|√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|filePath|String|是|图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数说明**
|参数名|类型|说明|
|:-|:-|:-|
|errMsg|String|调用结果|
**示例代码:**
```javascript
uni.chooseImage({
count: 1,
sourceType: ['camera'],
success: function (res) {
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePaths[0],
success: function () {
console.log('save success');
}
});
}
});
```
# uni.compressImage(OBJECT)
压缩图片接口,可选压缩质量
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序
|:-:|:-:|:-:|:-:|:-:|:-:|
|1.9.7+ [自定义组件编译模式](https://ask.dcloud.net.cn/article/35843)|x|√|√|x|x|
**OBJECT 参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| :- | :- | :- | :- | :- |
| src | String | | 是 | 图片路径,图片的路径,可以是相对路径、临时文件路径、存储文件路径 |
| quality | Number | 80 | 否 | 压缩质量,范围0~100,数值越小,质量越低,压缩率越高(仅对jpg有效) |
| success | Function | | 否 | 接口调用成功的回调函数 |
| fail | Function | | 否 | 接口调用失败的回调函数 |
| complete | Function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
**success 返回参数说明**
| 属性 | 类型 | 说明 |
| :- | :- | :- |
| tempFilePath | String | 压缩后图片的临时文件路径 |
**示例代码:**
```js
uni.compressImage({
src: '/static/logo.jpg',
quality: 80,
success: res => {
console.log(res.tempFilePath)
}
})
```
# wx.chooseMessageFile(OBJECT)
从客户端会话选择文件。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|x|x|
### uni.createLivePlayerContext(livePlayerId, this)
创建 live-player 上下文 livePlayerContext 对象。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|见下|x|√|x|√|x|
App平台的直播,不使用此API,而使用`plus.video.createLivePusher`[详见](https://ask.dcloud.net.cn/article/13416)
**参数说明**
|参数|说明|平台差异说明|
|:-:|:-:|:-:|
|livePlayerId|``<live-player>`` 组件 id||
|this|在自定义组件下,当前组件实例的 this,以操作组件内 ``<live-player>`` 组件|微信小程序|
**livePlayerContext 对象的方法列表:**
|方法|参数|说明|
|:-|:-|:-|
|play|Object|播放|
|stop|Object|停止|
|mute|Object|静音|
|pause|Object|暂停|
|resume|Object|恢复|
|requestFullScreen|Object|进入全屏|
|exitFullScreen|Object|退出全屏|
**requestFullScreen 的 Object 参数列表:**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|direction|Number|是|设置全屏时的方向,有效值为 0(正常竖向), 90(屏幕逆时针90度), -90(屏幕顺时针90度)。|
|success|Function|否|接口调用成功的回调函数。|
|fail|Function|否|接口调用失败的回调函数。|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)。|
**其他方法的 Object 参数列表:**
|参数|类型|必填|说明|
|:-|:-|:-|:-|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
### uni.getRecorderManager()
获取**全局唯一**的录音管理器 ``recorderManager``
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|x|√|√|
**recorderManager 对象的方法列表**
|方法|参数|说明|平台差异说明|
|:-|:-|:-|:-|
|start|options|开始录音||
|pause||暂停录音||
|resume||继续录音||
|stop||停止录音||
|onStart|callback|录音开始事件||
|onPause|callback|录音暂停事件||
|onStop|callback|录音停止事件,会回调文件地址||
|onFrameRecorded|callback|已录制完指定帧大小的文件,会回调录音分片结果数据。如果设置了 frameSize ,则会回调此事件|5+App 暂不支持|
|onError|callback|录音错误事件, 会回调错误信息|&nbsp;|
**start(options) 说明**
|属性|类型|必填|说明|
|:-|:-|:-|:-|
|duration|Number|否|指定录音的时长,单位 ms ,如果传入了合法的 duration ,在到达指定的 duration 后会自动停止录音,最大值 600000(10 分钟),默认值 60000(1 分钟)|
|sampleRate|Number|否|采样率,有效值 8000/16000/44100|
|numberOfChannels|Number|否|录音通道数,有效值 1/2|
|encodeBitRate|Number|否|编码码率,有效值见下表格|
|format|String|否|音频格式,有效值 aac/mp3|
|frameSize|String|否|指定帧大小,单位 KB。传入 frameSize 后,每录制指定帧大小的内容后,会回调录制的文件内容,不指定则不会回调。暂仅支持 mp3 格式。|
其中,采样率和码率有一定要求,具体有效值如下:
|采样率|编码码率|
|:-|:-|
|8000|16000 ~ 48000|
|11025|16000 ~ 48000|
|12000|24000 ~ 64000|
|16000|24000 ~ 96000|
|22050|32000 ~ 128000|
|24000|32000 ~ 128000|
|32000|48000 ~ 192000|
|44100|64000 ~ 320000|
|48000|64000 ~ 320000|
**onStop(callback) 回调结果说明**
|属性|类型|说明|
|:-|:-|:-|
|tempFilePath|String|录音文件的临时路径|
**onFrameRecorded(callback) 回调结果说明**
|属性|类型|说明|
|:-|:-|:-|
|frameBuffer|ArrayBuffer|录音分片结果数据|
|isLastFrame|Boolean|当前帧是否正常录音结束前的最后一帧|
**onError(callback) 回调结果说明**
|属性|类型|说明|
|:-|:-|:-|
|errMsg|String|错误信息|
**示例**
```html
<template>
<view>
<button @tap="startRecord">开始录音</button>
<button @tap="endRecord">停止录音</button>
<button @tap="playVoice">播放录音</button>
</view>
</template>
```
```javascript
const recorderManager = uni.getRecorderManager();
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
export default {
data: {
text: 'uni-app',
voicePath: ''
},
onLoad() {
let self = this;
recorderManager.onStop(function (res) {
console.log('recorder stop' + JSON.stringify(res));
self.voicePath = res.tempFilePath;
});
},
methods: {
startRecord() {
console.log('开始录音');
recorderManager.start();
},
endRecord() {
console.log('录音结束');
recorderManager.stop();
},
playVoice() {
console.log('播放录音');
if (this.voicePath) {
innerAudioContext.src = this.voicePath;
innerAudioContext.play();
}
}
}
}
```
\ No newline at end of file
### uni.createVideoContext(videoId, this)
创建并返回 video 上下文 videoContext 对象。在自定义组件下,第二个参数传入组件实例this,以操作组件内 ``<video>`` 组件。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|x|
**videoContext 对象的方法列表**
|方法|参数|说明|
|:-|:-|:-|
|play|无|播放|
|pause|无|暂停|
|seek|position|跳转到指定位置,单位 s|
|stop||停止视频,仅`微信小程序平台`支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/VideoContext.stop.html)|
|sendDanmu|danmu|发送弹幕,danmu 包含两个属性 text, color|
|playbackRate|rate|设置倍速播放,支持的倍率有 0.5/0.8/1.0/1.25/1.5|
|requestFullScreen|无|进入全屏,可传入{direction}参数,详见 video 组件文档|
|exitFullScreen|无|退出全屏|
|showStatusBar|无|显示状态栏,仅在iOS全屏下有效|
|hideStatusBar|无|隐藏状态栏,仅在iOS全屏下有效|
**示例**
```html
<template>
<view>
<view class="page-body">
<view class="page-section">
<video id="myVideo" src="http://img.cdn.qiniu.dcloud.net.cn/wap2appvsnative.mp4" @error="videoErrorCallback" :danmu-list="danmuList"
enable-danmu danmu-btn controls></video>
<view class="uni-list">
<view class="uni-list-cell">
<view>
<view class="uni-label">弹幕内容</view>
</view>
<view class="uni-list-cell-db">
<input @blur="bindInputBlur" class="uni-input" type="text" placeholder="在此处输入弹幕内容" />
</view>
</view>
</view>
<view class="btn-area">
<button @tap="bindSendDanmu" class="page-body-button" formType="submit">发送弹幕</button>
</view>
</view>
</view>
</view>
</template>
```
```javascript
export default {
data() {
return {
title: 'video',
src: '',
inputValue: '',
danmuList: [{
text: '第 1s 出现的弹幕',
color: '#ff0000',
time: 1
},
{
text: '第 3s 出现的弹幕',
color: '#ff00ff',
time: 3
}
]
}
},
onReady: function (res) {
this.videoContext = uni.createVideoContext('myVideo')
},
methods: {
bindInputBlur: function (e) {
this.inputValue = e.target.value
},
bindButtonTap: function () {
var that = this
uni.chooseVideo({
sourceType: ['album', 'camera'],
maxDuration: 60,
camera: ['front', 'back'],
success: function (res) {
this.src = res.tempFilePath
}
})
},
bindSendDanmu: function () {
this.videoContext.sendDanmu({
text: this.inputValue,
color: this.getRandomColor()
})
},
videoErrorCallback: function (e) {
console.log('视频错误信息:')
console.log(e.target.errMsg)
},
getRandomColor: function () {
const rgb = []
for (let i = 0; i < 3; ++i) {
let color = Math.floor(Math.random() * 256).toString(16)
color = color.length == 1 ? '0' + color : color
rgb.push(color)
}
return '#' + rgb.join('')
}
}
}
```
\ No newline at end of file
### uni.chooseVideo(OBJECT)
拍摄视频或从手机相册中选视频,返回视频的临时文件路径。另外选择和上传非图像、视频文件参考:[https://ask.dcloud.net.cn/article/35547](https://ask.dcloud.net.cn/article/35547)
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|√|√|x|√|√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|
|sourceType|Array&lt;String&gt;|否|album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']||
|compressed|Boolean|否|是否压缩所选的视频源文件,默认值为 true,需要压缩。|微信小程序、百度小程序、头条小程序|
|maxDuration|Number|否|拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。|APP平台 1.9.7+(iOS支持,Android取决于ROM的拍照组件是否实现此功能,如果没实现此功能则忽略此属性。) 微信小程序、百度小程序|
|camera|String|否|'front'、'back',默认'back'|APP、微信小程序|
|success|Function|否|接口调用成功,返回视频文件的临时文件路径,详见返回参数说明。||
|fail|Function|否|接口调用失败的回调函数||
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**success 返回参数说明**
|参数|说明|平台差异说明说明|
|:-|:-|:-|
|tempFilePath|选定视频的临时文件路径||
|duration|选定视频的时间长度,单位为 s|5+App不支持|
|size|选定视频的数据量大小||
|height|返回选定视频的高|5+App不支持|
|width|返回选定视频的宽|5+App不支持|
**注意:**
* 文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 [uni.saveFile](api/file/file?id=savefile),在应用下次启动时才能访问得到。
* camera 部分 Android 手机下由于系统 ROM 不支持无法生效,打开拍摄界面后可操作切换
* App下如需进一步压缩视频大小,可以在插件市场搜索[视频压缩](http://ext.dcloud.net.cn/search?q=%E8%A7%86%E9%A2%91%E5%8E%8B%E7%BC%A9)插件
**示例**
```html
<template>
<view>
<text>hello</text>
<button @tap="test">click me</button>
<video :src="src"></video>
</view>
</template>
```
```javascript
export default {
data: {
src: ''
},
methods: {
test: function () {
var self = this;
uni.chooseVideo({
count: 1,
sourceType: ['camera', 'album'],
success: function (res) {
self.src = res.tempFilePath;
}
});
}
}
}
```
### uni.saveVideoToPhotosAlbum(OBJECT)
保存视频到系统相册。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|x|√|√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|filePath|String|是|视频文件路径,可以是临时文件路径也可以是永久文件路径|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数说明**
|参数名|类型|说明|
|:-|:-|:-|
|errMsg|String|调用结果|
**示例**
```html
<template>
<view>
<text>hello</text>
<button @tap="test">click me</button>
<video :src="src"></video>
</view>
</template>
```
```javascript
export default {
data: {
src: ''
},
methods: {
test: function () {
var self = this;
uni.chooseVideo({
count: 1,
sourceType: ['camera'],
success: function (res) {
self.src = res.tempFilePath;
uni.saveVideoToPhotosAlbum({
filePath: res.tempFilePath,
success: function () {
console.log('save success');
}
});
}
});
}
}
}
```
\ No newline at end of file
#### 广告
仅微信小程序平台、App平台支持
微信小程序平台实现参考:[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.createRewardedVideoAd.html)
App平台实现参考:[DCloud广告联盟](http://ask.dcloud.net.cn/article/13084)
\ No newline at end of file
#### 生物认证
生物认证,又称活体检测。它包含指纹识别、人脸识别这两部分。即通过人体身体特征来进行身份认证识别。
各平台开发方式暂未统一,使用时需注意用[条件编译](https://uniapp.dcloud.io/platform)调用不同平台的代码。
##### 微信小程序
支持指纹和人脸识别两部分,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.startSoterAuthentication.html)
##### App平台
- 指纹:html5plus已经内置指纹API,[规范详情](http://www.html5plus.org/doc/zh_cn/fingerprint.html)。在插件市场有一个封装好的微信和App的指纹识别插件:[https://ext.dcloud.net.cn/plugin?id=358](https://ext.dcloud.net.cn/plugin?id=358)
- 人脸识别:app引擎未内置,需要安装原生插件,详见[插件市场人脸识别插件](https://ext.dcloud.net.cn/search?q=%E4%BA%BA%E8%84%B8%E8%AF%86%E5%88%AB)
##### 支付宝小程序
只支持人脸识别,[规范详情](https://docs.alipay.com/mini/api/alipay-face-verify)
##### 百度小程序
只支持人脸识别,[规范详情](https://smartprogram.baidu.com/docs/develop/api/ai_face/#swan-ai-faceDetect/)
\ No newline at end of file
### uni.authorize(OBJECT)
提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|√|
**OBJECT 参数说明**
|参数|类型|必填|说明|
|---|---|---|---|
|scope|String|是|需要获取权限的 scope,详见 scope 列表。|
|success|Function|否|接口调用成功的回调函数|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
##### scope 列表
|scope|对应接口|描述 |平台差异说明|
|---|---|---|---|
|scope.userInfo |[uni.getUserInfo](/api/plugins/login?id=getuserinfo) |用户信息||
|scope.userLocation|[uni.getLocation](/api/location/location?id=getlocation), [uni.chooseLocation](/api/location/location?id=chooselocation) |地理位置||
|scope.address |[uni.chooseAddress](/api/other/choose-address) |收货地址||
|scope.invoiceTitle|[uni.chooseInvoiceTitle](/api/other/invoice-title) |发票抬头||
|scope.record |[uni.getRecorderManager](/api/media/record-manager?id=getrecordermanager) |录音功能||
|scope.writePhotosAlbum |[uni.saveImageToPhotosAlbum](/api/media/image?id=saveimagetophotosalbum), [uni.saveVideoToPhotosAlbum](/api/media/video?id=savevideotophotosalbum) |保存到相册||
|scope.camera |[``<camera />``](/component/camera) 组件 |摄像头 |微信小程序|
|scope.invoice |[wx.chooseInvoice](https://developers.weixin.qq.com/miniprogram/dev/api/wx.chooseInvoice.html) |获取发票|微信小程序|
|scope.werun |[wx.getWeRunData](https://developers.weixin.qq.com/miniprogram/dev/api/wx.getWeRunData.html) |微信运动步数 |微信小程序|
**代码示例**
```javascript
uni.authorize({
scope: 'scope.userLocation',
success() {
uni.getLocation()
}
})
```
\ No newline at end of file
#### 卡券
仅微信小程序、支付宝小程序支持,各平台开发方式暂未统一,使用时需注意用[条件编译](https://uniapp.dcloud.io/platform)调用不同平台的代码。
- 微信小程序:[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.openCard.html)
- 支付宝小程序:[规范详情](https://docs.alipay.com/mini/api/card-voucher-ticket)
\ No newline at end of file
### uni.chooseAddress(OBJECT)
获取用户收货地址。调起用户编辑收货地址原生界面,并在编辑完成后返回用户选择的地址,需要用户授权 scope.address。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|√|
**OBJECT参数说明**
| 属性 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| success | function|否 | 接口调用成功的回调函数 |
| fail | function|否 | 接口调用失败的回调函数 |
| complete | function|否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
**success返回参数说明**
| 属性 | 类型 | 说明 |平台差异说明|
| --- | --- | --- |---|
| userName | string | 收货人姓名 ||
| postalCode | string | 邮编 ||
| provinceName | string | 国标收货地址第一级地址 ||
| cityName | string | 国标收货地址第一级地址 ||
| detailInfo | string | 详细收货地址信息 ||
| nationalCode | string | 收货地址国家码 ||
| telNumber | string | 收货人手机号码 ||
| errMsg | string | 错误信息 |微信小程序|
**示例代码**
```js
uni.chooseAddress({
success(res) {
console.log(res.userName)
console.log(res.postalCode)
console.log(res.provinceName)
console.log(res.cityName)
console.log(res.countyName)
console.log(res.detailInfo)
console.log(res.nationalCode)
console.log(res.telNumber)
}
})
```
\ No newline at end of file
### uni.getExtConfig(OBJECT)
获取第三方平台自定义的数据字段。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
**OBJECT参数说明**
| 属性 | 类型 | 默认值 | 必填 | 说明 |
| --- | --- | --- | --- | --- |
| success | function | | 否 | 接口调用成功的回调函数 |
| fail | function | | 否 | 接口调用失败的回调函数 |
| complete | function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
**success 回调参数说明**
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| extConfig | Object | 第三方平台自定义的数据 |
**Tips**
* 本接口暂时无法通过 `uni.canIUse`判断是否兼容,开发者需要自行判断 `uni.getExtConfig` 是否存在来兼容。
**示例代码**
```
if (uni.getExtConfig) {
uni.getExtConfig({
success(res) {
console.log(res.extConfig)
}
})
}
```
### uni.getExtConfigSync()
``uni.getExtConfig`` 的同步版本。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
**返回值(Object)**
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| extConfig | Object | 第三方平台自定义的数据 |
**Tips**
* 本接口暂时无法通过 `uni.canIUse`判断是否兼容,开发者需要自行判断 `uni.getExtConfigSync` 是否存在来兼容。
**代码示例**
```
const extConfig = uni.getExtConfigSync ? uni.getExtConfigSync() : {}
console.log(extConfig)
```
\ No newline at end of file
#### wx.getAccountInfoSync()
获取当前帐号信息,可以返回小程序的Appid。如果使用了微信小程序的云端插件,还可以反馈插件的id和版本
仅微信小程序平台支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.getAccountInfoSync.html)
\ No newline at end of file
### uni.chooseInvoiceTitle(OBJECT)
选择用户的发票抬头,需要用户授权 scope.invoiceTitle。
在微信小程序中,当前当前小程序必须关联一个公众号,且这个公众号是完成了[微信认证](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1496554031_RD4xe)的,才能调用 chooseInvoiceTitle。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
**OBJECT参数说明**
|属性|类型|必填|说明|
|:-|:-|:-|:-|:-|
|success|function|否|接口调用成功的回调函数|
|fail|function|否|接口调用失败的回调函数|
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success返回参数说明**
|属性|类型|说明|平台差异说明|
|:-|:-|:-|:-|
|type|string|抬头类型(0:单位,1:个人)||
|title|string|抬头名称||
|taxNumber|string|抬头税号||
|companyAddress|string|单位地址||
|telephone|string|手机号码||
|bankName|string|银行名称||
|bankAccount|string|银行账号||
|errMsg|string|错误信息|微信小程序|
**示例代码**
```js
uni.chooseInvoiceTitle({
success(res) {
console.log(res.type);
console.log(res.title);
console.log(res.taxNumber);
console.log(res.companyAddress);
console.log(res.telephone);
console.log(res.bankName);
console.log(res.bankAccount);
}
})
```
\ No newline at end of file
### uni.navigateToMiniProgram(OBJECT)
打开另一个小程序。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|√|x|
**OBJECT 参数说明**
|属性|类型|默认值|必填|说明|平台差异说明|
|:-|:-|:-|:-|:-|:-|
|appId|string||是|要打开的小程序 appId(百度小程序则填写App Key)||
|path|string||否|打开的页面路径,如果为空则打开首页||
|extraData|object||否|需要传递给目标小程序的数据,目标小程序可在 ``App.vue ```onLaunch``onShow` 中获取到这份数据。||
|envVersion|string|release|否|要打开的小程序版本,有效值: develop(开发版),trial(体验版),release(正式版)。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。|支付宝小程序、微信小程序|
|success|function||否|接口调用成功的回调函数||
|fail|function||否|接口调用失败的回调函数||
|complete|function||否|接口调用结束的回调函数(调用成功、失败都会执行)|&nbsp;|
**示例代码**
```js
uni.navigateToMiniProgram({
appId: '',
path: 'pages/index/index?id=123',
extraData: {
'data1': 'test'
},
success(res) {
// 打开成功
}
})
```
### uni.navigateBackMiniProgram(OBJECT)
跳转回上一个小程序,只有当另一个小程序跳转到当前小程序时才会能调用成功。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|√|√|x|
**OBJECT参数说明**
|属性|类型|必填|说明|
|:-|:-|:-|:-|
|extraData|Object|否|需要返回给上一个小程序的数据,上一个小程序可在 ``App.vue ```onShow` 中获取到这份数据|
|success|function|否|接口调用成功的回调函数|
|fail|function|否|接口调用失败的回调函数|
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**示例代码**
```js
uni.navigateBackMiniProgram({
extraData: {
'data1': 'test'
},
success(res) {
// 返回成功
}
})
```
\ No newline at end of file
#### 统计
各平台开发方式暂未统一,使用时需注意用[条件编译](https://uniapp.dcloud.io/platform)调用不同平台的代码。
##### 微信小程序平台:
- 数据上报:[wx.reportMonitor](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/report/wx.reportMonitor.html)
- 数据分析:[wx.reportAnalytics](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/data-analysis/wx.reportAnalytics.html)
##### 支付宝小程序平台:
- 自定义分析数据的上报接口:[my.reportAnalytics](https://docs.alipay.com/mini/api/report)
##### 百度小程序平台:
- 数据分析:[swan.reportAnalytics](https://smartprogram.baidu.com/docs/develop/api/data/#swan-reportAnalytics/)
##### App平台:
App平台有DCloud统计服务和友盟统计这两种。
- DCloud统计:[https://dcloud.io/unistat.html](https://dcloud.io/unistat.html)
- 友盟统计:[开发规范](http://www.html5plus.org/doc/zh_cn/statistic.html)[配置文档](https://ask.dcloud.net.cn/article/74)
\ No newline at end of file
#### wx.reportAnalytics(string eventName, Object data)
自定义分析数据上报接口。使用前,需要在小程序管理后台自定义分析中新建事件,配置好事件名与字段。。
仅微信小程序平台支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.reportAnalytics.html)
\ No newline at end of file
#### wx.reportMonitor()
自定义业务数据监控上报接口。
仅微信小程序平台支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.reportMonitor.html)
\ No newline at end of file
### uni.setEnableDebug(OBJECT)
设置是否打开调试开关。此开关对正式版也能生效。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|x|
**OBJECT说明**
| 属性 | 类型 | 必填 | 说明 |平台差异说明|
| --- | --- | --- | --- | --- |
| enableDebug | boolean| 是 | 是否打开调试 ||
| success | function| 否 | 接口调用成功的回调函数 |微信小程序|
| fail | function| 否 | 接口调用失败的回调函数 |微信小程序|
| complete | function| 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |微信小程序|
#### 示例代码
```js
// 打开调试
uni.setEnableDebug({
enableDebug: true
})
// 关闭调试
uni.setEnableDebug({
enableDebug: false
})
```
### uni.openSetting(OBJECT)
调起客户端小程序设置界面,返回用户设置的操作结果。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|√|
|属性|类型|必填|说明|
|---|---|---|---|---|
|success|function|否|接口调用成功的回调函数|
|fail|function|否|接口调用失败的回调函数|
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数**
|属性|类型|说明|
|---|---|---|
|authSetting|Object|用户授权结果,其中 key 为 [scope](/api/other/authorize?id=scope-列表) 值,value 为 Boolean 值,表示用户是否允许授权|
**代码示例**
```javascript
uni.openSetting({
success(res) {
console.log(res.authSetting)
}
});
```
### uni.getSetting(OBJECT)
获取用户的当前设置。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|
|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|
|属性|类型|必填|说明|
|---|---|---|---|---|
|success|function|否|接口调用成功的回调函数|
|fail|function|否|接口调用失败的回调函数|
|complete|function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**success 返回参数**
|属性|类型|说明|
|---|---|---|
|authSetting|Object|用户授权结果,其中 key 为 [scope](/api/other/authorize?id=scope-列表) 值,value 为 Boolean 值,表示用户是否允许授权|
#### 示例代码
```js
uni.getSetting({
success(res) {
console.log(res.authSetting)
}
})
```
#### sport 运动
此功能为计步器,用于获取手机用户的运动步数。
仅微信小程序平台、App平台支持,各平台开发方式暂未统一,使用时需注意用[条件编译](https://uniapp.dcloud.io/platform)调用不同平台的代码。
- 微信小程序平台:[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunData.html)
- App 平台:需使用原生插件,详见[计步器插件](https://ext.dcloud.net.cn/search?q=%E8%AE%A1%E6%AD%A5%E5%99%A8)
\ No newline at end of file
此差异已折叠。
### uni.getUpdateManager()
本API返回**全局唯一**的版本更新管理器对象: updateManager,用于管理小程序更新。
App的更新不使用本API,另见文档:
- 整包更新:[https://ask.dcloud.net.cn/article/34972](https://ask.dcloud.net.cn/article/34972)
- 资源文件热更新(wgt升级):[https://ask.dcloud.net.cn/article/35667](https://ask.dcloud.net.cn/article/35667)
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|x|x|√|x|√|√|
**updateManager 对象的方法列表:**
|方法 |参数 |说明 |
|---|---|---|
|onCheckForUpdate |callback |当向小程序后台请求完新版本信息,会进行回调 |
|onUpdateReady |callback |当新版本下载完成,会进行回调 |
|onUpdateFailed |callback |当新版本下载失败,会进行回调 |
|applyUpdate | |当新版本下载完成,调用该方法会强制当前小程序应用上新版本并重启 |
**onCheckForUpdate(callback) 回调结果说明:**
|属性|类型|说明|
|---|---|---|
|hasUpdate|Boolean|是否有新的版本 |
**代码示例**
```javascript
const updateManager = uni.getUpdateManager();
updateManager.onCheckForUpdate(function (res) {
// 请求完新版本信息的回调
console.log(res.hasUpdate);
});
updateManager.onUpdateReady(function (res) {
uni.showModal({
title: '更新提示',
content: '新版本已经准备好,是否重启应用?',
success(res) {
if (res.confirm) {
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
updateManager.applyUpdate();
}
}
});
});
updateManager.onUpdateFailed(function (res) {
// 新的版本下载失败
});
```
\ No newline at end of file
此差异已折叠。
此差异已折叠。
### uni.getProvider(OBJECT)
获取服务供应商。
在App平台,可用的服务商,是打包环境中配置的服务商,与手机端安装了什么app没有关系。
云打包在manifest中配置相关模块和SDK信息,离线打包在原生工程中配置。某个服务商配置被打包进去,运行时就能得到相应的服务供应商。
**平台差异说明**
|5+App|H5|微信小程序|支付宝小程序|百度小程序|头条小程序|
|:-:|:-:|:-:|:-:|:-:|:-:|
|√|x|√|√|√|√|
**OBJECT 参数说明**
|参数名|类型|必填|说明|
|:-|:-|:-|:-|
|service|String|是|服务类型,可取值见下面说明。|
|success|Function|否|接口调用成功的回调|
|fail|Function|否|接口调用失败的回调函数|
|complete|Function|否|接口调用结束的回调函数(调用成功、失败都会执行)|
**service 值说明**
|值|说明|
|:-|:-|
|oauth|授权登录|
|share|分享|
|payment|支付|
|push|推送|
**success 返回参数说明**
|参数名|类型|说明|
|:-|:-|:-|
|service|String|服务类型|
|provider|Array|得到的服务供应商|
**provider 在不同服务类型下可能的取值说明**
|service|provider|说明|备注|
|:-|:-|:-|:-|
|oauth|weixin|微信登录||
||qq|QQ登录||
||sinaweibo|新浪微博登录||
||xiaomi|小米登录||
|share|sinaweibo|新浪微博分享||
||qq|分享到QQ好友||
||weixin|分享微信消息、朋友圈及微信小程序||
|payment|alipay|支付宝支付||
||wxpay|微信支付||
||baidu|百度收银台||
||appleiap|苹果应用内支付|iOS 应用打包后可获取|
|push|unipush|[UniPush](https://ask.dcloud.net.cn/article/35622)|推送服务是三选一,只会获取到一个供应商。|
||igexin|个推|填写配置并打包后可以获取,仅为向下兼容而保留,不再推荐使用|
||mipush|小米推送|填写配置并打包后可以获取,仅为向下兼容而保留,不再推荐使用|
**注意事项**
- 自 HBuilderX 1.7.3 起,HBuilder 基座的推送供应商为 UniPush 服务。
**代码**
```javascript
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log(res.provider)
if (~res.provider.indexOf('qq')) {
uni.login({
provider: 'qq',
success: function (loginRes) {
console.log(JSON.stringify(loginRes));
}
});
}
}
});
```
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
#### UDP 通信
仅微信小程序平台支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.getMenuButtonBoundingClientRect.html)
#### mDNS 服务
仅微信小程序平台支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.stopLocalServiceDiscovery.html)
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
#### 电量
仅微信小程序平台支持,[规范详情](https://developers.weixin.qq.com/miniprogram/dev/api/wx.getBatteryInfoSync.html)
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册