提交 78e315fc 编写于 作者: DCloud_iOS_XHY's avatar DCloud_iOS_XHY

Merge branch 'master' of https://gitcode.net/dcloud/unidocs-zh

......@@ -2,7 +2,7 @@ import uniapp from './uni-app';
import uniCloud from './uniCloud';
export default {
"uni-app": uniapp,
uniCloud,
"/": uniapp,
'/uniCloud/': uniCloud,
weChatOfficialAccountImg: 'https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-uni-app-doc/78a8e7b0-4f2d-11eb-8ff1-d5dcf8779628.jpg'
}
......@@ -75,6 +75,11 @@ export default {
"state": 1,
"prefix": "群9"
},
{
"number": "959059626",
"state": 1,
"prefix": "群10"
},
{
"number": "296811328",
"state": 1,
......@@ -120,11 +125,6 @@ export default {
"state": 1,
"prefix": "群19"
},
{
"number": "165796402",
"state": 1,
"prefix": "群20"
},
{
"number": "717019120",
"state": 1,
......@@ -201,10 +201,10 @@ export default {
"prefix": "群35"
},
{
"number": "959059626",
"number": "165796402",
"state": 0,
"prefix": "10"
"prefix": "20"
}
],
joinQQGroupHref: 'https://qm.qq.com/cgi-bin/qm/qr?k=Gsc_5TDAO-SlE9ozv0XzG-J8yvVbtuy-&jump_from=webapi&authKey=FgzOD4eibK/nPH7vLYZBNnE42dABX+2Wt75xiTvi2UNH8pepvphpIhDiBWZt7DpA'
joinQQGroupHref: 'https://qm.qq.com/cgi-bin/qm/qr?k=H-U40nzIXq_F6NAWUOXBjvynZi2DsdOw&jump_from=webapi&authKey=oPGPBZDJhx60tm34ShKL4TNkH1zAfM1q+OXn6Tm9cN9nauPNUpfG8OMN0LJYdASG'
}
......@@ -122,6 +122,8 @@ uni.login({
### uni.getUserInfo(OBJECT)
> 微信小程序端用户头像昵称获取规则已调整,参考 [用户信息接口调整说明](https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801)、[小程序用户头像昵称获取规则调整公告](https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01)
获取用户信息。
**平台差异说明**
......@@ -154,7 +156,7 @@ uni.login({
|zh_TW|繁体中文|
|en|英文|
**注意:**在小程序 withCredentials 为 true 时或是在 App 调用 uni.getUserInfo,要求此前有调用过 uni.login 且登录态尚未过期。微信基础库2.10.4版本对用户信息相关接口进行了调整,使用 uni.getUserInfo 获取得到的 userInfo 为匿名数据,建议使用 uni.getUserProfile 获取用户信息。
**注意:** 在小程序 withCredentials 为 true 时或是在 App 调用 uni.getUserInfo,要求此前有调用过 uni.login 且登录态尚未过期。微信基础库2.10.4版本对用户信息相关接口进行了调整,使用 uni.getUserInfo 获取得到的 userInfo 为匿名数据,建议使用 uni.getUserProfile 获取用户信息。
**success 返回参数说明**
......@@ -221,6 +223,8 @@ uni.login({
### uni.getUserProfile(OBJECT)
> 微信小程序端基础库2.27.1及以上版本,**[wx.getUserProfile 接口](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html)被收回**,详见[《小程序用户头像昵称获取规则调整公告》](https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01)。
获取用户信息。每次请求都会弹出授权窗口,用户同意后返回 userInfo。
**平台差异说明**
......@@ -231,7 +235,8 @@ uni.login({
**注意:**
该API仅支持微信小程序端,微信小程序调整了相关接口(详见[《小程序登录、用户信息相关接口调整说明》](https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801?highLine=getUserProfile%253Afail))。每次触发 uni.getUserProfile 均会弹出授权窗口,用户授权后可成功获取用户信息。该API暂不支持在事件中使用异步操作,否则会触发错误:{errMsg: "getUserProfile:fail can only be invoked by user TAP gesture."}
- 如业务需获取用户头像昵称,可以使用[「头像昵称填写能力」](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html)(基础库 2.21.2 版本开始支持,覆盖iOS与安卓微信 8.0.16 以上版本)。
- 该API仅支持微信小程序端(基础库2.10.4-2.27.0版本),微信小程序调整了相关接口(详见[《小程序登录、用户信息相关接口调整说明》](https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801?highLine=getUserProfile%253Afail))。每次触发 uni.getUserProfile 均会弹出授权窗口,用户授权后可成功获取用户信息。该API暂不支持在事件中使用异步操作,否则会触发错误:{errMsg: "getUserProfile:fail can only be invoked by user TAP gesture."}
抖音从基础库 2.30.0 开始支持本方法,低版本需做兼容处理。[详见](https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/user-information/tt-get-user-profile/)
......@@ -253,7 +258,7 @@ uni.login({
|zh_TW|繁体中文|
|en|英文|
**注意:**可以使用 `if(uni.getUserProfile)` 判断uni.getUserProfile是否可用。
**注意:** 可以使用 `if(uni.getUserProfile)` 判断uni.getUserProfile是否可用。
**success 返回参数说明**
......
此差异已折叠。
......@@ -56,4 +56,5 @@
* 法语 fr
* 西班牙语 es
*[manifest.json](/collocation/manifest) -> locale 可以配置应用的默认语言。
* 仅 3.1.5 - 3.2.4 版本会自动使用 vue-i18n 内配置的语言。
\ No newline at end of file
* 仅 3.1.5 - 3.2.4 版本会自动使用 vue-i18n 内配置的语言。
* 在小程序平台仅影响用户业务层(vue-i18n)的语言配置,不能影响小程序原生组件和接口的语言。
\ No newline at end of file
......@@ -497,7 +497,7 @@ const ProviderType = {
KS: "ks"
};
const collectionName = "uni-ad-callback-log";
const collectionName = "ad-callback-log"; // 如果选择了腾讯云,需要手动预创建表
class DB {
......
......@@ -111,7 +111,7 @@ onAppActivityRequestPermissionsResult((requestCode: number,permissions: MutableL
+ 1 本章节内的实例代码均取自Hello UTS [项目地址](https://gitcode.net/dcloud/hello-uts)
+ 2 本章节设计的配置,均需自定义基座后才能生效
+ 3 截止到HX 3.6.8,还不支持R文件的自动生成,因此本章节中涉及R文件生成部分暂时还不支持。这是个遗留问题,稍后版本会支持。
+ 3 R文件的自动生成,已经在HBuilder X 3.6.9 版本支持,请使用最新版本开发
### 3.1 配置AndroidManifest.xml
......@@ -778,7 +778,7 @@ uts中,需要区分全局方法、成员方法
|语法|kotlin|uts|
|---|-------|---|
|继承类|:|extends|
|实现接口|:|extends|
|实现type接口|:|extends|
```kotlin
......@@ -888,8 +888,9 @@ getUniActivity()!.startActivity(intent);
某些场景下开发者需要获得 指定double数据类型的数据
前端常用的写法
开发者下意识的写法可能是
```
// 这样是错误的
let a:Int =3
let b:Int =4
let c:Double = a/b
......@@ -898,6 +899,7 @@ let c:Double = a/b
但是Android原生环境中,数据类型的精度是向下兼容的,如果想要获得一个double类型,必须要有一个double类型参与运算:
```
// 这样才是正确的
let a:Int =3
let b:Int =4
let c:Double = a * 1.0 / b
......
......@@ -124,19 +124,19 @@ package.json 为 uni_modules 插件配置清单文件,负责描述插件的基
│ │ ├─res //Android原生res资源目录,可选
│ │ ├─AndroidManifest.xml //Android原生应用清单文件,可选
│ │ ├─config.json //Android原生配置文件
│ │ └─index.uts
│ ├─app-ios //iOS 平台目录
│ │ ├─Frameworks //iOS 插件依赖的第三方 framework 依赖库存放目录,可选
│ │ ├─Resources //iOS 插件所依赖的资源文件存放目录,可选
│ │ ├─info.plist //iOS 插件所需要添加到主 info.plist 文件中的配置文件,可选
│ │ ├─config.json //iOS 插件配置文件
│ │ └─index.uts
│ │ └─index.uts //Android原生插件能力实现
│ ├─app-ios //iOS平台目录
│ │ ├─Frameworks //iOS原生依赖的第三方 framework 依赖库存放目录,可选
│ │ ├─Resources //iOS原生所依赖的资源文件存放目录,可选
│ │ ├─info.plist //iOS原生所需要添加到主 info.plist 文件中的配置文件,可选
│ │ ├─config.json //iOS原生配置文件
│ │ └─index.uts //iOS原生插件能力实现
│ ├─web //web平台目录
│ │ └─index.uts
─mp-xxx // 其他平台目录
├─package.json // 插件清单文件
├─index.d.ts // 插件能力声明,可选
└─index.uts // 插件能力实现
─mp-xxx // 其他平台目录
│ ├─index.d.ts // 插件能力声明,可选
│ └─index.uts // 跨平台插件能力实现,可选
└─package.json // 插件清单文件
</code>
</pre>
......@@ -453,6 +453,22 @@ import * as UTSHello from "../../../uni_modules/uts-osapi";
UTSHello.getBatteryCapacity()
```
**特别注意**
需要特别注意的是,import UTS插件时,只能到插件的根目录,不能直接引入到最终的文件
```
// 正确的写法
import * as UTSHello from "../../../uni_modules/uts-osapi";
```
```
// 错误的写法
import * as UTSHello from "../../../uni_modules/uts-osapi/index.uts";
```
**显性引用**
......@@ -468,6 +484,8 @@ import {
getBatteryCapacity()
```
关于电量这个插件,插件市场已经提供好了现成的插件,除了Android,还同时支持了web和小程序,可以去下载体验。[详见](https://ext.dcloud.net.cn/plugin?id=9295)
更多开发示例,可以参考 [HelloUTS](https://gitcode.net/dcloud/hello-uts)
......
#### 3.6.5.20221121
* 【uni-app】
+ 修复 Vue2 项目中 TypeScript 使用 onLoad 等生命周期报错的Bug [详情](https://ask.dcloud.net.cn/question/157035)
+ App-Android平台 修复 uni.getStorageSync 在某些情况下可能报`SyntaxError`错误的Bug [详情](https://ask.dcloud.net.cn/question/154284)
+ 百度小程序平台 修复 onInit 生命周期不触发的Bug [详情](https://ask.dcloud.net.cn/question/154352)
+ 支付宝小程序平台 修复 uni.showToast 不支持 duration 参数的Bug [详情](https://ask.dcloud.net.cn/question/147279)
+ 支付宝小程序平台 修复 uni.showLoading 提示 mask 参数无效的Bug [详情](https://ask.dcloud.net.cn/question/156944)
* 【uniCloud】
+ 【重要】阿里云商用版正式上线 [详情](https://ask.dcloud.net.cn/article/40144)
#### 3.6.4.20220922
* 【uni-app】
+ 修复 uni-app App调试插件 运行空白的Bug
......
......@@ -66,7 +66,8 @@
"disagreeMode":{
"support": false,
"loadNativePlugins": false,
"visitorEntry": true
"visitorEntry": true,
"showAlways": true
},
"styles": {
"backgroundColor": "#00FF00",
......@@ -106,8 +107,8 @@
用户不同意隐私协议的响应配置
+ support 用户拒绝隐私协议后,是否直接进入游客模式,默认关闭
+ loadNativePlugins 游客模式下,是否加载原生插件
+ visitorEntry HX 3.6.7 版本后支持,默认false,当设置为true,隐私协议弹窗 会出现 游客模式 按钮
+ visitorEntry HBuilderX 3.6.7 版本后支持,默认false,当设置为true,隐私协议弹窗 会出现 游客模式 按钮
+ showAlways HBuilderX 3.6.10 版本后支持,默认true 标记用户拒绝协议后,下次启动是否继续弹出
- second
配置二次确认提示框显示内容,message属性值不为空时弹出二次确认提示框
+ title 二次确认提示框上的标题
......
此差异已折叠。
......@@ -13,9 +13,13 @@ uni-app 支持使用 ts 开发,可参考 [Vue.js TypeScript 支持](https://cn
```html
<script lang="ts">
// 这里编写ts代码
let s:string = "123"
console.log(s)
</script>
```
如果需使用vue组件,则需要`import Vue from 'vue'`,具体[见下](#component)
- cli创建的项目
需要在创建项目时就指定ts,具体请另行参考[文档](https://uniapp.dcloud.io/quickstart-cli.html#install-vue-cli)
......@@ -56,7 +60,7 @@ uni-app 支持使用 ts 开发,可参考 [Vue.js TypeScript 支持](https://cn
- uni-app 的 vue2 模式:nvue 文件中不支持编写 ts。vue 文件中可以使用 ts,但 ts 版本根据项目类型有区别。HBuilderX 创建的项目使用 ts 3.7.5,cli 创建的项目使用 ts 4.x。
- uni-app 的 vue3 模式:vue 文件及 nvue 文件均支持最新版 ts。
### 注意事项
### ts组件@component
声明 `lang="ts"` 后,该 vue/nvue 文件 import 进来的所有 vue 组件,均需要使用 ts 编写。
......
......@@ -280,7 +280,7 @@ vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要
相比Web平台, Vue.js 在 `uni-app` 中使用差异主要集中在两个方面:
- 新增:`uni-app` 除了支持Vue实例的生命周期,还支持[应用生命周期](https://uniapp.dcloud.io/collocation/App#应用生命周期)以及[页面生命周期](https://uniapp.dcloud.io/tutorial/page#lifecycle)
- 受限:相比web平台,在小程序和App端部分功能受限。
- 受限:相比web平台,在小程序和App端部分功能受限[具体见](/vue3-api)
[uni-app 项目支持 vue 3.0介绍,及升级指南](https://ask.dcloud.net.cn/article/37834)
......
......@@ -207,9 +207,11 @@ uniCloud服务器给客户端返回的数据格式一般是json,但json的格
为了与uni-app前端的API错误回调风格统一,uniCloud响应体规范定义的云端返回信息(尤其是报错时)应包含`errCode``errMsg`
除此之外响应体规范还包含`newToken`字段,用于token的自动续期(云对象接收含有newToken的响应后会自动更新storage内存储的`uni_id_token``uni_id_token_expired`,此行为新增于`HBuilderX 3.4.13`)。开发者一般无需关心此数据,uni-app客户端和云端uni-id之间会自动管理token及续期。
#### HBuilderX 3.6.10及之后版本的错误规范
`uniCloud响应体`示例如下:
错误规范继承自[uni错误规范](/tutorial/err-spec.md)
#### HBuilderX 3.6.10之前版本的错误规范
```json
// 失败返回值
......@@ -219,6 +221,26 @@ uniCloud服务器给客户端返回的数据格式一般是json,但json的格
}
```
- errCode
errCode在成功时应返回数字`0`,失败时应返回一个以插件id开头的“字符串”,每个单词以连字符(`-`)分割。做出这样的规定是为了防止不同插件之间出现重复错误码
`'uni-id-account-banned'`错误码为例,`uni-id`为插件id,`account-banned`为错误缩写。
如果业务开发的代码并不发布插件市场,那么为了避免下载了一个市场的插件产生冲突,推荐使用不包含“-”的字符串来做errCode(插件市场的所有插件ID必须包含“-”)。
后续uniCloud会提供自动根据errCode对errMsg进行国际化处理的功能,开发者仅需保证云函数返回值满足`uniCloud响应体规范`即可。
- errMsg
errMsg用于存放具体错误信息,包括展示给开发者、终端用户的错误信息
#### 请求成功的响应
除此之外响应体规范还包含`newToken`字段,用于token的自动续期(云对象接收含有newToken的响应后会自动更新storage内存储的`uni_id_token``uni_id_token_expired`,此行为新增于`HBuilderX 3.4.13`)。开发者一般无需关心此数据,uni-app客户端和云端uni-id之间会自动管理token及续期。
`uniCloud响应体`示例如下:
```json
// 成功返回值
{
......@@ -236,25 +258,12 @@ HBuilderX内使用代码块`returnu`可以快速输入以下代码(`HBuilderX
```js
return {
errSubject: '', // HBuilderX 3.6.10新增
errCode: 0,
errMsg: ''
}
```
- errCode
errCode在成功时应返回数字`0`,失败时应返回一个以插件id开头的“字符串”,每个单词以连字符(`-`)分割。做出这样的规定是为了防止不同插件之间出现重复错误码
`'uni-id-account-banned'`错误码为例,`uni-id`为插件id,`account-banned`为错误缩写。
如果业务开发的代码并不发布插件市场,那么为了避免下载了一个市场的插件产生冲突,推荐使用不包含“-”的字符串来做errCode(插件市场的所有插件ID必须包含“-”)。
后续uniCloud会提供自动根据errCode对errMsg进行国际化处理的功能,开发者仅需保证云函数返回值满足`uniCloud响应体规范`即可。
- errMsg
errMsg用于存放具体错误信息,包括展示给开发者、终端用户的错误信息
## uniCloud API列表
云函数支持 js 和 nodejs 的标准API,如`console.log()``setTimeout()`,另见[nodejs官网](https://nodejs.org/en/docs/)。nodejs版本,详见[云函数运行环境](?id=runtime)
......
......@@ -27,6 +27,7 @@ uniCloud分为客户端和云端两部分,有些接口名称相同,参数也
|uniCloud.onRefreshToken() |监听token更新事件 [详情](#on-refresh-token) |
|uniCloud.offRefreshToken() |移除监听token更新事件 [详情](#off-refresh-token) |
|uniCloud.initSecureNetworkByWeixin() |在微信小程序安全网络请求发送之前与云函数握手 [详情](#init-secure-network-by-weixin) |
|uniCloud.getFileInfo() |阿里云迁移服务空间到商用版时,使用公测版云存储链接获取商用版云存储链接 [详情](storage.md#get-file-info) |
### 获取当前用户信息getCurrentUserInfo@client-getcurrentuserinfo
......
......@@ -142,7 +142,7 @@ function init(options):uniCloud
|provider |String |是 |- |aliyun、tencent |
|spaceId |String |是 |- |服务空间ID,**注意是服务空间ID,不是服务空间名称** |
|clientSecret |String |是 |- |仅阿里云支持,可以在[uniCloud控制台](https://unicloud.dcloud.net.cn)服务空间列表中查看 |
|endpoint |String |否 |`https://api.bspapp.com` |服务空间地址,仅阿里云侧支持 |
|endpoint |String |否 |`https://api.bspapp.com` |服务空间地址,仅阿里云支持。商用版请将此参数设为`https://api.next.bspapp.com` |
**示例代码**
......
......@@ -8,7 +8,7 @@
## 触发器配置@config
在项目的`uniCloud/database`目录下创建`${表名}.schema.js`,内容如下。
在项目的`uniCloud/database`目录下创建`${表名}.schema.ext.js`,内容如下。
```js
module.exports = {
......@@ -100,7 +100,7 @@ field为所有被访问的字段的组成的数组,嵌套的字段会被摊平
为了不增加示例的复杂度,所有权限均设置为true,实际项目中切勿随意设置权限
```js
// article.schema.js
// article.schema.ext.js
{
"bsonType": "object",
"required": ["title", "content"],
......@@ -142,7 +142,7 @@ field为所有被访问的字段的组成的数组,嵌套的字段会被摊平
### 读取后触发实现阅读量加1
```js
// article.schema.js
// article.schema.ext.js
module.exports {
trigger: {
afterRead: async function({
......@@ -167,7 +167,7 @@ module.exports {
### 删除前备份
```js
// article.schema.js
// article.schema.ext.js
module.exports {
trigger: {
beforeDelete: async function({
......@@ -192,7 +192,7 @@ module.exports {
### 修改文章更新时间
```js
// article.schema.js
// article.schema.ext.js
module.exports {
trigger: {
beforeUpdate: async function({
......@@ -215,7 +215,7 @@ module.exports {
### 新增文章时自动添加摘要
```js
// article.schema.js
// article.schema.ext.js
module.exports {
trigger: {
beforeCreate: async function({
......
......@@ -2641,6 +2641,7 @@ geoNear可用于查询位置在给定点一定距离内的数据库记录。此
**参数**
|属性 |类型 |默认值 |必填 |说明 |
| ---- | ------ | ---- |---- |---- |
|near |GeoPoint | |是 |GeoJSON Point,用于判断距离的点 |
|spherical |true | |是 |必填,值为 true |
|maxDistance |number | |否 |距离最大值 |
......
## 概述
选择阿里云作为服务商时,服务空间资源完全免费,每个账号最多允许创建50个服务空间。**阿里云目前处于公测阶段,如有正式业务对稳定性有较高要求建议使用腾讯云。**
选择阿里云作为服务商时,有一个免费服务空间。更多服务空间需要付费。
选择腾讯云作为服务商时,需付费购买套餐,超出套餐后可开启按量计费,套餐详情参考[腾讯云基础套餐](uniCloud/price?id=tencent-package)
付费用户享受腾讯云提供的服务协议SLA,[详见](https://uniapp.dcloud.net.cn/uniCloud/agreement)
付费用户享受阿里云和腾讯云提供的服务协议SLA,[详见](https://uniapp.dcloud.net.cn/uniCloud/agreement)
uniCloud的腾讯云版的定价、套餐内容、服务SLA,是由腾讯公司直接公布的。DCloud公司不会加价,包括开发者通过DCloud充值也会直接充到开发者在腾讯云建立的子账户下。DCloud只从腾讯云等云厂商获取返佣,也不会在未来加价收割开发者。
uniCloud的定价、套餐内容、服务SLA,是由云厂商直接公布的。DCloud公司不会加价。uniCloud已经上线近3年,DCloud一直以良心方式服务开发者。
uniCloud提供包月、按量计费两种计费方式(仅阿里云),具体说明如下:
uniCloud提供包月、按量计费两种计费方式,具体说明如下:
|计费方式 |付费方式 |计费单位 |
|:-: |:-: |:-: |
......@@ -18,9 +18,7 @@ uniCloud提供包月、按量计费两种计费方式(仅阿里云),具体
## 阿里云@aliyun
阿里云商业版计划将于**2022年11月中旬**上线,届时公测版服务空间将下线不再支持新建。对现存的公测版服务空间,阿里云会提供一个预期**两个月的过渡期**,在此期间已创建的服务空间仍可继续使用,**过渡期满后将停服释放**
在商业版上线后,uniCloud控制台会于近期增加公测版迁移商业版的相关功能以便开发者迁移。
阿里云公测版于2022年11月21日停止新建,对现存的公测版服务空间,阿里云会提供**两个月的过渡期**,在此期间已创建的服务空间仍可继续使用,开发者需在2022年1月21日前完成迁移。同时uniCloud控制台会于近期增加公测版迁移商业版的相关功能以便开发者平滑迁移。
### 公测版@aliyun-public
......@@ -57,19 +55,20 @@ uniCloud提供包月、按量计费两种计费方式(仅阿里云),具体
申请日期
```
**阿里云商业版上线后,将不再支持公测版资源扩容,如有需求请使用商业版本。**
**阿里云正式版上线后,将不再支持公测版资源扩容,如有需求请使用商业版本。**
### 商业版@aliyun-business
### 阿里云正式版@aliyun-business
阿里云商业版支持`包年包月``按量计费`两种计费模式,创建`按量计费`服务空间需先充值保证金及阿里云余额。
阿里云正式版支持`包年包月``按量计费`两种计费模式,创建`按量计费`服务空间需先充值保证金及阿里云余额。
#### 免费额度
阿里云针对每个账号提供了一个有免费额度的服务空间,以方便产品开发测试及体验。具体额度请阅读下方[包年包月套餐](uniCloud/price.md?id=aliyun-package)中的开发者版。
**免费额度注意事项:**
- 单个账号只能创建一个阿里云免费服务空间
- 阿里云免费服务空间有有效期,到期时需主动续费,否则将会被停服释放
- 阿里云免费服务空间有效期默认一年,到期时需主动续费(续费时依旧免费),否则将会被停服释放
- 免费版如需升配,只能针对剩余有效期进行操作,无法自定义升配时间
#### 包年包月套餐@aliyun-package
|资源分类 |资源细项 |开发者版(免费版) |基础版 |标准版 |专业版 |企业版 |旗舰版 |
......@@ -322,12 +321,14 @@ parseCollection()
阿里云提供了公测版一键迁移到商业版的功能。执行一键迁移后云存储、云函数、数据库都会被迁移到新服务空间。迁移过程中云函数、数据库均可正常访问,云存储无法写入(删除或上传文件)
- 公测版不可迁移到商业版的免费版
- 客户端需要重新打包以使用新服务空间,需要HBuilderX 3.6.10及以上版本
- 客户端需要重新打包以使用新服务空间,需要`HBuilderX 3.6.10-alpha``HBuilderX 3.6.5`及以上版本
- 注意迁移后服务空间id会变,如果云函数内有用到相关逻辑请务必注意调整。短信、一键登录功能使用了服务空间白名单的也务必将新空间加到白名单内
- 旧服务空间云函数url化默认域名会保留一段时间(请求会被转发到新服务空间),在后续清理时会彻底删除
- 云函数url化自定义域名需要重新绑定
- 迁移到商业版后旧服务空间的数据库备份不会被迁移过来
- 旧云存储url需要通过[uniCloud.getFileInfo]()接口获取新服务空间的cdn链接,需要HBuilderX 3.6.10及以上版本
- 旧云存储url需要通过`uniCloud.getFileInfo`(云函数接口:[uniCloud.getFileInfo](storage.md#get-file-info),客户端接口:[uniCloud.getFileInfo](storage.md#cloud-get-file-info))接口获取新服务空间的cdn链接,需要`HBuilderX 3.6.10-alpha``HBuilderX 3.6.5`及以上版本
- 商业版云存储和云函数位于同一区域,云函数上传文件到云存储会比之前快很多
- 前端网页托管自定义域名需要重新绑定
- 前端网页托管不再提供文件变动自动刷新缓存功能,提供手动刷新功能
\ No newline at end of file
- 前端网页托管不再提供文件变动自动刷新缓存功能,提供手动刷新功能
上述问题,DCloud仍在推动阿里云进行优化,以尽量减少迁移所需的工作。
......@@ -21,7 +21,7 @@ HBuilderX有多种发行方式
|服务提供商 |request合法域名 |uploadFile合法域名 |download合法域名|
|:-: |:-: |:-: |:-:|
|阿里云 |api.bspapp.com |bsppub.oss-cn-shanghai.aliyuncs.com|需要从云存储下载文件的时候才需要配置,不同服务空间域名不同,可以在web控制台查看文件详情里面看到|
|阿里云 |api.bspapp.com(公测版)、api.next.bspapp.com(商用版) |bsppub.oss-cn-shanghai.aliyuncs.com|需要从云存储下载文件的时候才需要配置,不同服务空间域名不同,可以在web控制台查看文件详情里面看到|
|腾讯云 |tcb-api.tencentcloudapi.com|cos.ap-shanghai.myqcloud.com |需要从云存储下载文件的时候才需要配置,不同服务空间域名不同,可以在web控制台查看文件详情里面看到|
**如果需要用uni.request请求云存储内的文件,需要将云存储域名(即上表中的download合法域名)配置到request合法域名内**
......
注:本更新日志仅限uniCloud,包括uniCloud web控制台、uniCloud 云端运行环境。这些更新不跟随HBuilderX发版更新。
#### 2022-11-21
+ 【重要】阿里云商用版正式上线 [详情](https://ask.dcloud.net.cn/article/40144)
#### 2022-11-14
+ 【重要】新增 uni-im 云端一体的、全平台的、免费的、开源即时通讯系统 [详情](https://uniapp.dcloud.net.cn/uniCloud/uni-im.html)
......
......@@ -353,13 +353,15 @@ uni-app前端也支持debug调试,注意不要混淆。
发布后的云函数,在 [uniCloud web控制台](https://unicloud.dcloud.net.cn/) -> 云函数 下也有日志。
除了常规的运行日志、错误日志,也可以通过 API `uniCloud.logger` 打印日志
通过console api打印的日志会在云端记录
日志会保留7天。
### 阿里云
阿里云云函数日志最长保留7天
### 腾讯云
腾讯云日志服务为套餐外单独计费项。如果你购买了包月套餐,在使用日志服务时会产生额外费用(日志服务为按量计费,从余额扣除)。为避免因日志服务欠费引发其他按量计费资源不可使用,目前新建腾讯云服务空间默认关闭了日志服务。
后续会提供开启及设置保存时长功能。如有需求可以发送邮件到 service@dcloud.io 申请开通
|接口 |描述 |
|:-: |:-: |
|uniCloud.logger.log |以 log 日志等级输出日志 |
|uniCloud.logger.info |以 info 日志等级输出日志 |
|uniCloud.logger.warn |以 warn 日志等级输出日志 |
|uniCloud.logger.error|以 error 日志等级输出日志|
\ No newline at end of file
......@@ -1610,7 +1610,7 @@ action是`clientDB`的一个配套功能。它的作用是在前端发起数据
有些复杂业务,要求必须同时执行一个action云函数,才能允许前端对特定数据的修改。
以user表为例,假使用户在修改自己的name时,必须要触发一个名为changenamelog的action云函数,在该云函数里会记录一条留痕日志,如果没有记录日志则不允许修改name。
那么在`DB Schema`里要配置`action == 'changenamelog'`
那么在`DB Schema`里要配置`'changenamelog' in action`
```json
// user表的schema
......@@ -1631,7 +1631,7 @@ action是`clientDB`的一个配套功能。它的作用是在前端发起数据
"title": "名称",
"permission": {
"read": true,
"write": "(doc._id == auth.uid) && (action == 'changenamelog')" // 允许登录的用户修改自己的name字段,但必须同时触发执行action云函数changenamelog
"write": "(doc._id == auth.uid) && ('changenamelog' in action)" // 允许登录的用户修改自己的name字段,但必须同时触发执行action云函数changenamelog
}
},
"pwd": {
......
......@@ -207,6 +207,46 @@ uniCloud.getTempFileURL({
});
```
### getFileInfo(Object object)@get-file-info
阿里云迁移服务空间后,旧云存储url需要通过此接口获取新服务空间的cdn链接
**平台兼容性**
|阿里云 |腾讯云 |
|---- |---- |
|HBuilderX 3.6.10+(alpha版)、HBuilderX 3.6.5+(正式版) |不支持 |
#### 请求参数
|字段 |类型 |必填 |默认值 |说明 |平台差异说明 |
|:-: |:-: |:-: |:-: |:-: |:-: |
|fileList |Array&lt;String&gt;|是 |- |要获取下载链接的文件 ID 组成的数组 |- |
**请求参数中的fileList**
|字段 |类型 |必填 |说明 |
|:-: |:-: |:-: |:-: |
|fileID |String |是 |旧云存储url |
#### 响应参数
|字段 |类型 |说明 |
|:-: |:-: |:-: |
|fileList |Array&lt;Object&gt; |存储下载链接的数组 |
**响应参数中的fileList**
|字段 |类型 |说明 |
|:-: |:-: |:-: |
|fileId |string |文件 ID(从文件url中解析出的id) |
|gmtCreate |number |文件上传时间(精确到秒的时间戳) |
|gmtModified|number |文件更改时间(精确到秒的时间戳) |
|name |string |文件原始名称 |
|size |number |文件大小(Byte) |
|type |string |文件类型 |
|url |string |文件cdn链接 |
### chooseAndUploadFile(Object object)@chooseanduploadfile
> HBuilderX 3.1.0起支持
......@@ -622,10 +662,53 @@ let result = await uniCloud.downloadFile({
});
```
### getFileInfo(Object object)@get-file-info
阿里云迁移服务空间后,旧云存储url需要通过此接口获取新服务空间的cdn链接
**平台兼容性**
|阿里云 |腾讯云 |
|---- |---- |
|HBuilderX 3.6.10+(alpha版)、HBuilderX 3.6.5+(正式版) |不支持 |
#### 请求参数
|字段 |类型 |必填 |默认值 |说明 |平台差异说明 |
|:-: |:-: |:-: |:-: |:-: |:-: |
|fileList |Array&lt;String&gt;|是 |- |要获取下载链接的文件 ID 组成的数组 |- |
**请求参数中的fileList**
|字段 |类型 |必填 |说明 |
|:-: |:-: |:-: |:-: |
|fileID |String |是 |旧云存储url |
#### 响应参数
|字段 |类型 |说明 |
|:-: |:-: |:-: |
|fileList |Array&lt;Object&gt; |存储下载链接的数组 |
**响应参数中的fileList**
|字段 |类型 |说明 |
|:-: |:-: |:-: |
|fileId |string |文件 ID(从文件url中解析出的id) |
|gmtCreate |number |文件上传时间(精确到秒的时间戳) |
|gmtModified|number |文件更改时间(精确到秒的时间戳) |
|name |string |文件原始名称 |
|size |number |文件大小(Byte) |
|type |string |文件类型 |
|url |string |文件cdn链接 |
## 数据处理
**阿里云**
> 阿里云商用版目前仍可使用此功能,但是未来可能会进行计费
使用阿里云作为服务商时,云存储支持直接使用**restful api**对资源进行处理,下表列出支持的操作类型。
如果你的数据库及云函数使用腾讯云,也是可以使用阿里云云存储的。详细用法参考:[连接多个服务空间](uniCloud/init.md)
......@@ -680,6 +763,8 @@ let result = await uniCloud.downloadFile({
## 阿里云云存储CDN独立域名@aliyun-cdn-domain
> 仅适用于阿里云公测版,阿里云商用版每个服务空间都是单独的域名
阿里云公测版本所有服务空间使用了相同CDN域名,因此偶尔会出现部分服务空间云存储内存在违规内容导致此CDN域名被封禁的情况。为解决此问题,阿里云为每个服务空间提供了独立的云存储CDN域名。由于资源限制,需要手动在[uniCloud web 控制台](https://unicloud.dcloud.net.cn/)云存储管理页面申请才可以开启,有一定业务量的服务空间申请会自动通过。
开通云存储CDN独立域名有以下注意事项:
......
......@@ -138,7 +138,7 @@
|agreements |Array |隐私政策[详情](#agreements) |
|appid |Object |接入各类服务(如微信登录服务)的应用id[详情](#appid) |
|passwordStrength |Object |密码配置 [详情](#strength) |
|setPasswordAfterLogin|Boolean/Object|登录后设置密码 [详情](#set-pwd-after-login)|
完整示例:
```js
......@@ -171,7 +171,27 @@ export default {
// 微信开放平台的appid,来源:登录微信开放平台(https://open.weixin.qq.com) -> 管理中心 -> 网站应用 -> 选择对应的应用名称,点击查看 -> AppID
"web":"wx4dcf96ab6af4c5e8"
}
}
},
/**
* 密码强度
* super(超强:密码必须包含大小写字母、数字和特殊符号,长度范围:8-16位之间)
* strong(强: 密密码必须包含字母、数字和特殊符号,长度范围:8-16位之间)
* medium (中:密码必须为字母、数字和特殊符号任意两种的组合,长度范围:8-16位之间)
* weak(弱:密码必须包含字母和数字,长度范围:6-16位之间)
* 为空或false则不验证密码强度
*/
"passwordStrength":"medium",
/**
* 登录后允许用户设置密码(只针对未设置密码得用户)
* 开启此功能将 setPasswordAfterLogin 设置为 true 即可
* "setPasswordAfterLogin": false
*
* 如果允许用户跳过设置密码 将 allowSkip 设置为 true
* "setPasswordAfterLogin": {
* "allowSkip": true
* }
* */
"setPasswordAfterLogin": false
}
```
......@@ -261,6 +281,22 @@ export default {
|medium |String |中:密码必须为字母、数字和特殊符号任意两种的组合,长度范围:8-16位之间|
|weak |String |弱:密码必须包含字母和数字,长度范围:6-16位之间 |
#### 登录后设置密码@set-pwd-after-login
用户如果没有设置密码,在登录后会跳转设置密码页面
此功能默认不开启, 开启请将 `setPasswordAfterLogin` 设置为 `true`,如下:
```javascript
{
setPasswordAfterLogin: true,
// setPasswordAfterLogin: {
// allowSkip: false
// }
}
```
如果不需要强制设置密码可以将 `allowSkip` 设置为 `true` 用户可以选择跳过设置密码。
### 页面介绍
`uni-id-pages`包含:账号注册、免密登录、头像更换、修改昵称、绑定手机号码、找回密码、注销账号等页面。[插件地址](https://ext.dcloud.net.cn/plugin?name=uni-id-pages)
......@@ -1201,6 +1237,31 @@ await uniIdCo.unbindApple()
### 用户信息@user-info
#### 设置密码@set-pwd
**接口形式**
```js
await uniIdCo.setPwd({
code,
captcha,
password
})
```
**参数说明**
|参数名 |类型 |必填 |说明 |
|-- |-- |-- |-- |
|code|string |是 |手机验证码 |
|captcha|string |否 |图形验证码 |
|password|string |是 |密码 |
**返回值**
|参数名 |类型 |说明 |
|-- |-- |-- |
|errCode |string&#124;number |错误码 |
#### 修改密码@update-pwd
**接口形式**
......
......@@ -766,6 +766,7 @@ function hasPermission(token, permission) {
|bind-mobile-by-sms |短信验证码绑定手机号 |
|login-by-email |邮箱验证码登录 |
|reset-pwd-by-email |邮箱验证码重置密码 |
|set-pwd-by-sms |手机验证码设置登录密码 |
### 图形验证码使用场景@captcha-scene
......@@ -782,6 +783,7 @@ function hasPermission(token, permission) {
|send-sms-code |发送短信验证码 |
|send-email-code |发送邮箱验证码 |
|bind-mobile-by-sms |短信验证码绑定手机号 |
|set-pwd-by-sms |手机验证码设置登录密码 |
## uniIdRouter自动路由@uni-id-router
......
......@@ -54,11 +54,7 @@ uni-im是云端一体的、全平台的、免费的、开源即时通讯系统
## 部署到自己的项目
1. 打开`uni-im`插件下载地址:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im)
2. 点击`使用HBuilderX导入插件`,选择你的项目,点击确定(同时会自动导入依赖的uni_modules`uni-id-pages`)按提示操作自动配置`pages.json`
3. 打开项目根目录的App.vue文件,进行如下操作:
- 导入uniIm的Utils
- 初始化uniIm
- 在globalData中添加预置数据
- 在onShow和onHide生命周期更改app是否显示在前台的值
3. 打开项目根目录的App.vue文件,初始化uni-id-pages和uniIm模块
示例如下:
```html
......@@ -68,17 +64,11 @@ uni-im是云端一体的、全平台的、免费的、开源即时通讯系统
//2. 导入uniIm的Utils工具类
import uniImUtils from '@/uni_modules/uni-im/common/utils.js';
export default {
globalData: {
//3. 初始化uniIm全局变量
uniIm: {
msgManagers: {}
}
},
onLaunch: async function() {
console.log('App Launch');
//4. 初始化uni身份信息管理模块
//3. 初始化uni身份信息管理模块
uniIdPagesInit();
//5. 初始化uniIm
//4. 初始化uniIm
uniImUtils.init();
},
onShow: function() {
......@@ -284,7 +274,7 @@ uni-im v1.0.0 暂时比较简单,云端有1个云对象`uni-im-co`,2个opend
"jwtSecret":"jwtSecretDemo",
}
```
这里的值`jwtSecretDemo`为示例,注意修改为自己的,使用一个较长的字符串即可。
这里的值`jwtSecretDemo`为示例,注意修改为自己的,使用一个较长的字符串即可(越长安全性越高,建议大于32位)
**接口形式**
......
......@@ -31,6 +31,6 @@
},
"dependencies": {
"@docsearch/js": "^3.1.0",
"vuepress-theme-uni-app-test": "^1.2.8"
"vuepress-theme-uni-app-test": "^1.2.10"
}
}
\ No newline at end of file
......@@ -8503,10 +8503,10 @@ vuepress-theme-uni-app-test@^1.2.0:
vuepress-plugin-juejin-style-copy "^1.0.4"
vuepress-theme-uni-app-test "^1.1.9"
vuepress-theme-uni-app-test@^1.2.7:
version "1.2.7"
resolved "https://registry.npmmirror.com/vuepress-theme-uni-app-test/-/vuepress-theme-uni-app-test-1.2.7.tgz#99b0bc91c49ca3b342345f6d36415cfb9bc7fc5d"
integrity sha512-6aE36v4/Je2L72Oq2SI4iPX0LTUxrLy5wsePCZ8Wup81/omT1CZxBXxXa7K186yfOcojgaI4HFbXZU4dtVii4w==
vuepress-theme-uni-app-test@^1.2.10:
version "1.2.10"
resolved "https://registry.npmmirror.com/vuepress-theme-uni-app-test/-/vuepress-theme-uni-app-test-1.2.10.tgz#f7a36c850ac81779557abecbadcfafe86f4c3ede"
integrity sha512-/PgJbMwDWhZZSW/P6pH5MdsyJamLwDEuRxirVIEANXf8nqivbj3214clJXMDUliRovnsq02uvhVQp6HQRT8SKw==
dependencies:
"@vuepress/plugin-back-to-top" "^1.9.5"
"@vuepress/theme-default" "^1.8.2"
......@@ -8514,12 +8514,12 @@ vuepress-theme-uni-app-test@^1.2.7:
clipboard "^2.0.11"
vuepress "^1.8.2"
vuepress-plugin-juejin-style-copy "^1.0.4"
vuepress-theme-uni-app-test "^1.2.0"
vuepress-theme-uni-app-test "^1.2.7"
vuepress-theme-uni-app-test@^1.2.8:
version "1.2.8"
resolved "https://registry.npmmirror.com/vuepress-theme-uni-app-test/-/vuepress-theme-uni-app-test-1.2.8.tgz#f5a34dec92bbb688deb05e0b7b382c3074466f61"
integrity sha512-c8bV7CDbqOP5LjGXgxiyFhtkVBVMRqMBIg+BVVD7tZ1LlkqWrit61gK2ebt0lz9HISQxUA9tVoW5hVeMQNz89A==
vuepress-theme-uni-app-test@^1.2.7:
version "1.2.7"
resolved "https://registry.npmmirror.com/vuepress-theme-uni-app-test/-/vuepress-theme-uni-app-test-1.2.7.tgz#99b0bc91c49ca3b342345f6d36415cfb9bc7fc5d"
integrity sha512-6aE36v4/Je2L72Oq2SI4iPX0LTUxrLy5wsePCZ8Wup81/omT1CZxBXxXa7K186yfOcojgaI4HFbXZU4dtVii4w==
dependencies:
"@vuepress/plugin-back-to-top" "^1.9.5"
"@vuepress/theme-default" "^1.8.2"
......@@ -8527,7 +8527,7 @@ vuepress-theme-uni-app-test@^1.2.8:
clipboard "^2.0.11"
vuepress "^1.8.2"
vuepress-plugin-juejin-style-copy "^1.0.4"
vuepress-theme-uni-app-test "^1.2.7"
vuepress-theme-uni-app-test "^1.2.0"
vuepress@^1.8.2:
version "1.9.7"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册