提交 53938227 编写于 作者: W wanganxp

给优秀插件导流

上级 1b35a4f0
......@@ -11,16 +11,20 @@ uni-app x的web版从uni-app的js引擎版迁移而来,理论上所有uni-app
- 打开三方应用:打开浏览器、应用商店、地图并传参。`plus.openUrl` [见hello uni-app x示例](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/dev/pages/template/schema/schema.uvue)
- 分享:`uni.shareWithSystem` [见hello uni-app x示例](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/dev/pages/template/share/share.uvue)
- 微信登录、分享、企业客服:[见插件市场](https://ext.dcloud.net.cn/search?q=%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95&orderBy=Relevance&cat1=8&cat2=81&uni-appx=1)
- 谷歌登录:[见插件市场](https://ext.dcloud.net.cn/search?q=%E8%B0%B7%E6%AD%8C%E7%99%BB%E5%BD%95&orderBy=Relevance&uni-appx=1)
- 谷歌支付:[见插件市场](https://ext.dcloud.net.cn/search?q=%E8%B0%B7%E6%AD%8C%E6%94%AF%E4%BB%98&orderBy=Relevance&uni-appx=1)
- 打开文件:`uni.openDocument` [见hello uts示例](https://gitcode.net/dcloud/hello-uts/-/blob/dev/uni_modules/uts-nativepage/utssdk/app-android/index.uts)[插件市场](https://ext.dcloud.net.cn/plugin?id=12731)
- 扫码:`uni.scanCode` [见插件市场](https://ext.dcloud.net.cn/search?q=%E6%89%AB%E7%A0%81&cat1=8&type=UpdatedDate)
- 文件选择:`uni.chooseFile` [见插件市场](https://ext.dcloud.net.cn/search?q=%E6%96%87%E4%BB%B6%E9%80%89%E6%8B%A9&cat1=8&cat2=81)
- 蓝牙:Bluetooth。[见插件市场](https://ext.dcloud.net.cn/search?q=%E8%93%9D%E7%89%99&orderBy=Relevance&cat1=8&cat2=81)
- NFC:[见插件市场](https://ext.dcloud.net.cn/search?q=nfc&orderBy=Relevance&cat1=8&cat2=81)
- 地图:[见插件市场](https://ext.dcloud.net.cn/search?q=%E5%9C%B0%E5%9B%BE&orderBy=Relevance&uni-appx=1)
- 地图:chooseLocation [见插件市场](https://ext.dcloud.net.cn/search?q=%E5%9C%B0%E5%9B%BE&orderBy=Relevance&uni-appx=1)
- 陀螺仪:`uni.onGyroscopeChange``uni.startGyroscope``uni.stopGyroscope` [见插件市场](https://ext.dcloud.net.cn/plugin?id=17540)
- 加速度传感器:`uni.onAccelerometerChange``uni.startAccelerometer` [见插件市场](https://ext.dcloud.net.cn/plugin?id=17540)
- 生物识别:指纹识别。`uni.startSoterAuthentication` [见插件市场](https://ext.dcloud.net.cn/search?q=%E7%94%9F%E7%89%A9%E8%AE%A4%E8%AF%81&uni-appx=1)
- 自定义相机:`uni.createCameraContext` [见插件市场](https://ext.dcloud.net.cn/search?q=%E7%9B%B8%E6%9C%BA&uni-appx=1)
- 录音:`uni.getRecorderManager` [见插件市场](https://ext.dcloud.net.cn/search?q=%E5%BD%95%E9%9F%B3&uni-appx=1)
- 播放音频:`uni.getBackgroundAudioManager``uni.createInnerAudioContext`,参考如下代码:
- 播放音频:`uni.getBackgroundAudioManager``uni.createInnerAudioContext`[见插件市场](https://ext.dcloud.net.cn/search?q=%E9%9F%B3%E9%A2%91%E6%92%AD%E6%94%BE&orderBy=Relevance&uni-appx=1)参考如下代码:
```vue
<template>
<button @click="playAudio">播放音频</button>
......@@ -59,6 +63,7 @@ uni-app x 中不再支持plus和weex的API。过于plus api中一些常用的api
一些plus api在插件市场有替代:
- plus.sqlite [插件市场](https://ext.dcloud.net.cn/search?q=sqlite&uni-appx=1)
- plus.speech [插件市场](https://ext.dcloud.net.cn/search?q=%E6%96%87%E5%AD%97%E8%BD%AC%E8%AF%AD%E9%9F%B3&orderBy=Relevance&uni-appx=1)
还有一些plus API未封装为 uni 的API,但可以直接使用如下代码调用。
- plus.runtime.openURL
......
......@@ -6,6 +6,8 @@
<!-- UTSAPIJSON.getDeviceInfo.returnValue -->
获取OAID、AndroidID等其他设备信息,[见插件市场](https://ext.dcloud.net.cn/search?q=oaid&orderBy=Relevance&uni-appx=1)
<!-- UTSAPIJSON.getDeviceInfo.example -->
<!-- UTSAPIJSON.getDeviceInfo.compatibility -->
......
......@@ -18,6 +18,8 @@ uni-app 提供了异步(`uni.getSystemInfo`)和同步(`uni.getSystemInfoSync`)
<!-- UTSAPIJSON.getSystemInfo.returnValue -->
获取OAID、AndroidID等其他设备信息,[见插件市场](https://ext.dcloud.net.cn/search?q=oaid&orderBy=Relevance&uni-appx=1)
<!-- UTSAPIJSON.getSystemInfo.example -->
<!-- UTSAPIJSON.getSystemInfo.compatibility -->
......
......@@ -105,10 +105,13 @@ hello uni-push是可跑通、同时包含客户端和服务器完整流程的代
在业务开通、配置正确的情况下,执行项目下的云函数,即可给客户端发送消息。
## 注意事项
## 高级场景用途
[nativeResources](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#%E5%BA%94%E7%94%A8%E8%B5%84%E6%BA%90)目录可以配置图片和声音的二进制文件资源。
* 关于隐私安全问题,由于在调用`getPushClientId`或者`onPushMessage`时,才会初始化个推SDK,所以开发者要确保弹出隐私框之前不调用此两项API。
* 关于图标的配置,需要创建[nativeResources](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#%E5%BA%94%E7%94%A8%E8%B5%84%E6%BA%90)目录,放置对应分辨率的图片资源即可 ,目录配置如下
### 通知栏显示图标自定义
关于图标的配置,需要创建[nativeResources](https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html#%E5%BA%94%E7%94%A8%E8%B5%84%E6%BA%90)目录,
放置对应分辨率的图片资源即可(打包后生效),目录配置如下
```
├── nativeResources
......@@ -135,7 +138,12 @@ hello uni-push是可跑通、同时包含客户端和服务器完整流程的代
│   └── pushsound.mp3 // 声音文件, 自定义推送铃音时使用
```
* `setPushChannel`设置新建渠道时,`soundName`字段的值为nativeResources->android->res->raw中存放的音频文件名称,注意不要带文件的后缀,比如`pushsound.mp3`文件,例:
### 通知声音自定义
有些场景,如到账提醒,需要自定义通知声音。
`setPushChannel`设置新建渠道时,`soundName`字段的值为目录nativeResources->android->res->raw中存放的音频文件名称,(打包后生效)
注意不要带文件的后缀,比如`pushsound.mp3`文件,例:
```ts
const channelManager = getChannelManager()
channelManager.setPushChannel({
......@@ -144,8 +152,22 @@ channelManager.setPushChannel({
soundName: "pushsound"
})
```
* uni-app x 的push模块仅支持uni-push2,不再支持uni-push1。但这不意味着强绑uniCloud的付费行为。而是DCloud的所有云服务都将统一纳入到uniCloud体系管理,开发者在开通uni-push2后,也可以拿到mastersecret,然后在自己的服务器去直接连接个推服务器。
### 在通知栏显示App下载进度
很多Android应用升级下载apk时会在通知栏显示下载进度。
该功能已经内置到[uni升级中心](https://doc.dcloud.net.cn/uniCloud/upgrade-center.html)中,此开源模板可直接使用。
### 在通知栏显示音乐播放条
需要使用uts插件,[见插件市场](https://ext.dcloud.net.cn/search?q=%E9%80%9A%E7%9F%A5%E6%A0%8F&orderBy=Relevance&uni-appx=1)
## 注意事项
* 关于隐私安全问题,由于在调用`getPushClientId`或者`onPushMessage`时,才会初始化个推SDK,所以开发者要确保**弹出隐私框之前不调用此两项API**
* 获取手机端app是否拥有push权限,请使用API [uni.getAppAuthorizeSetting](get-app-authorize-setting.md)
* uni-app x 的push模块仅支持uni-push2,不再支持uni-push1。但不要误会这不是强绑uniCloud的付费行为。而是DCloud的所有云服务都将统一纳入到uniCloud体系管理,开发者在开通uni-push2后,也可以拿到mastersecret,然后在自己的服务器去直接连接个推服务器。另外uniCloud的免费版也足够很多开发者使用。
* uni-push是一个独立的模块,在标准基座中并不包含。开发push需要首先编写push相关代码,然后打包自定义基座,根据摇树规则,打出的自定义基座才会包含push模块。详见[摇树](../collocation/manifest-modules.md#treeshaking)
* 创建本地通知栏,理论上可以和个推的服务无关。但目前也都包含在push模块里了。如果您不需要服务器推送,只需要本地创建通知栏,也需要打包push模块才行。
* 部分手机创建本地通知时,App如果在后台状态,点击通知消息并不会拉起App,原因是厂商增加了后台弹窗权限,需要用户手动打开此权限。
* 获取手机端app是否拥有push权限,请使用API [uni.getAppAuthorizeSetting](get-app-authorize-setting.md)
* 部分手机创建本地通知时,App如果在后台状态,点击通知消息并不会拉起App,原因是厂商增加了后台弹窗权限,需要用户手动打开此权限。
\ No newline at end of file
......@@ -8,17 +8,19 @@ uni-app x在App端还有一批组件未与uni-app js引擎版拉齐。有的在
- movable-view:没有ui层和逻辑层的通信阻塞,开发者可自己写代码拖动view。hello uni-app x中有[示例代码](https://gitcode.net/dcloud/hello-uni-app-x/-/blob/dev/pages/component/general-event/touch-event.uvue)
- picker:可改用[picker-view](picker-view.md)
- canvas:目前没有完整的canvas组件,但
* 每个view,都提供了[draw API](../dom/drawablecontext.md),可以高性能的画各种形状、写字。
* 关于截图,无需像webview那样通过canvas中转,view直接提供截图方案,[takesnapshot](../dom/element.md#takesnapshot)
* 使用web-view中的canvas也是一种方案,uvue页面里的web-view组件可以和uvue页面里的uts代码双向通信。比如生成二维码,可以由web-view组件来渲染,复用web生态的库。
* 当然二维码在插件市场也有现成的[插件](https://ext.dcloud.net.cn/search?q=%E4%BA%8C%E7%BB%B4%E7%A0%81&uni-appx=1)
* 每个view,都提供了[draw API](../dom/drawablecontext.md),可以高性能的画各种形状、写字。这组API与web的canvas api接近但不同。
* 截图或海报需求,无需像webview那样通过canvas中转,app平台view直接提供截图API,[takesnapshot](../dom/element.md#takesnapshot)
* 使用web-view中的canvas也是一种方案,uvue页面里的web-view组件可以和uvue页面里的uts代码双向通信。
* 二维码展示需求:[见插件市场](https://ext.dcloud.net.cn/search?q=%E4%BA%8C%E7%BB%B4%E7%A0%81&uni-appx=1)
* 图表需求:[插件市场搜chart](https://ext.dcloud.net.cn/search?q=chart&orderBy=Relevance&uni-appx=1)[插件市场搜F2](https://ext.dcloud.net.cn/search?q=f2&orderBy=Relevance&uni-appx=1)
* 手写签名:[见插件市场](https://ext.dcloud.net.cn/search?q=%E7%AD%BE%E5%90%8D&orderBy=Relevance&uni-appx=1)
* 后期uvue中也会补充正式的canvas组件
- waterfall/grid-view:会补充
- editor:用web-view来加载
- editor:使用web-view来加载
- map:
* 开发uts组件
* [见插件市场](https://ext.dcloud.net.cn/search?q=%E5%9C%B0%E5%9B%BE&orderBy=Relevance&uni-appx=1)
* 或使用web-view中的地图
- live-pusher:需开发uts组件
- live-pusher:直播推流 [见插件市场](https://ext.dcloud.net.cn/search?q=%E7%9B%B4%E6%92%AD&orderBy=Relevance&uni-appx=1)
- label:用view加事件来替代
## Web平台
......
......@@ -28,11 +28,11 @@ App-Android平台video组件使用ijkplayer库实现:[https://github.com/bilib
弹幕功能使用DanmakuFlameMaster库实现:[https://github.com/bilibili/DanmakuFlameMaster](https://github.com/bilibili/DanmakuFlameMaster)
ijkplayer库的功能较多,video组件并非完全封装。有需要的开发者可以使用uts直接操作该库。
ijkplayer库底层又使用了ffmpeg,这些库的功能较多,官方的video组件并非完全封装。有需要的开发者可以使用uts直接操作这些库。插件市场已经有一批uts库直接调用该库,[见插件市场](https://ext.dcloud.net.cn/search?q=ffmpeg&orderBy=Relevance&uni-appx=1)
video组件的源码[详见](https://gitcode.net/dcloud/uni-component/-/tree/master/uni_modules/uni-video)。下载该uni_modules到工程下,修改源码打包,可覆盖内置的video组件。
另外ijkplayer作为一个开源库,比腾讯视频等商业sdk仍有差距。如无法在开源库上满足需求,可在插件市场寻找商业sdk插件:[腾讯视频](https://ext.dcloud.net.cn/search?q=%E8%85%BE%E8%AE%AF%E8%A7%86%E9%A2%91&orderBy=Relevance&cat1=5&cat2=51)[阿里云视频](https://ext.dcloud.net.cn/search?q=%E9%98%BF%E9%87%8C%E4%BA%91%E8%A7%86%E9%A2%91&orderBy=Relevance&cat1=5&cat2=51)
另外ijkplayer作为一个开源库,比腾讯视频等商业sdk仍有差距。如无法在开源库上满足需求,可在插件市场寻找腾讯视频等商业sdk插件:[见插件市场](https://ext.dcloud.net.cn/search?q=%E8%85%BE%E8%AE%AF%E8%A7%86%E9%A2%91&orderBy=Relevance&cat1=5&cat2=51)[阿里云视频](https://ext.dcloud.net.cn/search?q=%E9%98%BF%E9%87%8C%E4%BA%91%E8%A7%86%E9%A2%91&orderBy=Relevance&cat1=5&cat2=51)
<!-- UTSCOMJSON.video.children -->
......
......@@ -56,5 +56,7 @@ uts端在 `<web-view>` 组件的 `message` 事件回调 `event.detail.data` 中
- `event.detail.data` 中的数据,以数组的形式接收每次 post 的消息。(注:支付宝小程序除外,支付宝小程序中以对象形式接受)
## 注意
- web-view组件为系统web-view,内核版本号不由uni-app x框架控制。如需x5等webview,需使用uts插件,[详见](https://ext.dcloud.net.cn/search?q=x5)
- web-view组件为系统web-view,内核版本号不由uni-app x框架控制。
- Android上,web-view版本不是手机默认浏览器的版本。在部分手机上系统web-view的升级需要升级rom,部分手机则可以单独升级Android System Webview包。如需x5等三方webview,需使用uts插件,[见插件市场](https://ext.dcloud.net.cn/search?q=x5)。使用三方webview可减少系统webview的碎片化问题。
- iOS上,web-view的版本与iOS的版本绑定,也即是手机Safari浏览器的版本。
- 一个页面的web-view组件数量不宜太多,每个web-view都会占用不少内存
......@@ -139,19 +139,27 @@ uvue在App端支持的css语法,是web的子集,类似于但优于nvue的css
在iOS上,情况要复杂些。由于swift编译iOS应用必须依赖xcode,而DCloud的开发者中windows占比更高。且iOS上js和原生通信有解,所以uni-app x在iOS上提供js和swift双选逻辑层。
| |js逻辑层 |swift逻辑层 |
|-- |-- |-- |
|主应用开发平台 |windows或mac |只能mac |
|uvue页面代码 |可使用js但不能调用swift API。swift调用需封装在uts插件中|只能调用swift不能使用js|
|uts原生插件开发 |只能mac |只能mac |
|uts原生插件使用 |windows下打包后使用,mac下本地直接编译 |windows下打包后使用,mac下本地直接编译|
|性能 |丝滑流畅 |更丝滑流畅|
| |js逻辑层 |swift逻辑层 |
|-- |-- |-- |
|主应用开发平台 |windows或mac |只能mac |
|uvue页面代码 |可使用js但不能直接调用swift API。swift调用需封装在uts插件中|只能调用swift不能使用js |
|uts原生插件开发|只能mac |只能mac |
|uts原生插件使用|windows下打包后使用,mac下本地直接编译 |windows下打包后使用,mac下本地直接编译 |
|性能 |丝滑流畅 |丝滑流畅 |
理论上swift逻辑层的性能要高于js逻辑层,但由于iphone的硬件、iOS的jscore为系统内置、以及uni-app x的优化等一系列原因,99%的应用使用js引擎版即可满足性能需求
也就是uts原生插件作者必须得有mac电脑,普通的App开发者可以没有mac电脑
- js逻辑层于4.11版上线
- js逻辑层于4.11版上线
- swift逻辑层还未上线
虽然理论上swift逻辑层的性能要高于js逻辑层,但开发者可以放心使用js逻辑层。
uni-app x在iphone上的js逻辑层和原生渲染层的通信经过特殊处理,大幅提升通信效率问题,不再需要bindingX这类技术。也不存在flutter那种混合渲染问题。\
可以体验hello uni-app x的iOS版本,在slider-100、滚动时动态调整view的top值以维持吸顶等极端场景,均如Android一样的丝滑流畅。
使用js逻辑层除了能在windows下开发,还有一个好处是大幅降低插件生态的建设难度。
插件作者只需要特殊适配Android版本,在iOS和Web端仍使用ts/js库,即可快速把uni-app/web的生态迁移到uni-app x中。
例如这个[request拦截库](https://ext.dcloud.net.cn/plugin?id=16177)
## 3. uni的组件 @uni-components
......@@ -247,17 +255,17 @@ uni-app x支持npm,但npm的大多数库是for web的,无法跨端,这些
一般情况下,原生库的能力是大于js库的。不太可能有一个功能必须使用js库才能使用。比如md5,js有库,原生也有库,调用一个jar也很方便。
常见的[加密、md5](https://ext.dcloud.net.cn/search?q=%E5%8A%A0%E5%AF%86&orderBy=Relevance&cat1=8&cat2=81)、[dayjs](https://ext.dcloud.net.cn/search?q=dayjs&orderBy=Relevance&cat1=8&cat2=81)等库,插件市场已经有uts版本。
常见的[加密、md5、sha](https://ext.dcloud.net.cn/search?q=%E5%8A%A0%E5%AF%86&orderBy=Relevance&cat1=8&cat2=81)、[dayjs](https://ext.dcloud.net.cn/search?q=dayjs&orderBy=Relevance&cat1=8&cat2=81)等库,插件市场已经有uts版本。
**如果你一定要使用某个js库,还有一个办法是在uni-app x里的[web-view](./api/create-webview-context.md)组件,让其运行js并返回值给uts代码。**
目前插件市场适配uni-app x的插件已有数百款,包括丰富的ui组件库生态:
- [TMUI4.0](https://ext.dcloud.net.cn/plugin?id=16369):包含了核心的uts插件基类.和uvue组件库
- [UxFrame](https://ext.dcloud.net.cn/plugin?id=16148):低代码高性能UI框架
- [firstUI](https://ext.dcloud.net.cn/plugin?id=16294):一款适配 uni-app x 的轻量、简洁、高效、全面的移动端组件库
- [t-uvue-ui](https://ext.dcloud.net.cn/plugin?id=15571):丰富的组件库
- [uXui](https://ext.dcloud.net.cn/plugin?id=15726):graceUI作者的免费开源组件库
- [UxFrame](https://ext.dcloud.net.cn/plugin?id=16148):低代码高性能UI框架
- [wx-ui](https://ext.dcloud.net.cn/plugin?id=15579):基于uni-app x开发的高性能混合UI库
- [firstUI](https://ext.dcloud.net.cn/plugin?id=16294):一款适配 uni-app x 的轻量、简洁、高效、全面的移动端组件库
- [OneUI](https://ext.dcloud.net.cn/plugin?id=17104)
- [easyX电商组件库](https://ext.dcloud.net.cn/plugin?id=15602):电商业务常见的各种组件库
......@@ -332,7 +340,7 @@ uni-app x 毕竟是原生应用,内嵌flutter、rn这些没有任何问题,
可以,通过uts插件,[https://uniapp.dcloud.net.cn/plugin/uts-plugin.html](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html)
- uvue页面里的script可以直接调用原生代码吗?还是必须封装成uni_modules方式的uts原生插件?\
uvue的script里写的就是uts,Android端可以直接调原生代码。无所谓它在`uni_modules`里还是外。但如果是大段的原生代码调用,还是推荐封装为独立的`uni_modules`以及iOS平台如果是js逻辑层模式,也只能在独立`uni_modules`中才能调用原生。
uvue的script里写的就是uts,Android端可以直接调原生代码。无所谓它在`uni_modules`里还是外。但如果是大段的原生代码调用,还是推荐封装为独立的`uni_modules`iOS平台如果是js逻辑层模式,只能在独立`uni_modules`中才能调用原生。
- uni-app x 的开发只能用HBuilderX吗?\
是的。为三方ide做插件是一个投资大且充满不确定性的事情,官方有限精力会聚焦在自身产品优化上。但DCloud是开放的,不会限制三方ide的插件支持。欢迎社区投入支持。
......@@ -342,7 +350,7 @@ uni-app x 毕竟是原生应用,内嵌flutter、rn这些没有任何问题,
- uni-app x开源吗?
* Web版开源地址:[https://github.com/dcloudio/uni-app](https://github.com/dcloudio/uni-app)
* App版的组件和API实现都会开源,会陆续发布在项目[uni-component](https://gitcode.net/dcloud/uni-component)[uni-api](https://gitcode.net/dcloud/uni-api)下。\
* App版的组件和API实现大都开源,会陆续发布在项目[uni-api](https://gitcode.net/dcloud/uni-api)[uni-component](https://gitcode.net/dcloud/uni-component)下。\
开发者可以了解组件和API的实现,直接修改或优化源码,修改后的代码以[ext api](https://uniapp.dcloud.net.cn/api/extapi.html)或组件的方式下载到项目中,即可实现在本项目中替换掉官方组件和API。
- 未来 uni-app js引擎版还维护吗?\
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册