更新记录
1.8.6(2025-05-09)
优化wifi连接
1.8.5(2025-05-09)
优化wifi连接
1.8.4(2025-05-09)
优化连接wifi
查看更多平台兼容性
云端兼容性
阿里云 | 腾讯云 | 支付宝云 |
---|---|---|
√ | × | × |
uni-app
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | × | - | - | × | × | - | - | - |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
√ | × | × | × | × | × | - | × | × | × | × |
云函数类插件通用教程
使用云函数类插件的前提是:使用HBuilderX 2.9+
特别申明
- 此插件不建议非程序员或者完全看不懂文档的人购买,远程代搭建部署五十元一次(需要提前准备好小程序)
快速上手
- 使用 HBuilderX 导入插件
- 关联 uniCloud 服务空间(创建 uniCloud 服务空间)
- 运行 uniCloud -> database -> db_init.josn(右键:初始化云数据库(包含 Schema 和校验函数))
- 配置 uniCloud -> cloudfunctions -> common 云函数 uni-config-center -> uni-id -> config.json 文件 官方文档
- 修改配置文件需重新右键上传 uni-config-center、uni-id 云函数
- uni-id
"passwordSecret": [{
"***ersion": 1,
"***alue": "xxxxxxxxxxxxxxxxxxx"
}],
"tokenSecret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tokenExpiresIn": 259200,
"tokenExpiresThreshold": 600,
"passwordErrorLimit": 6,
"passwordErrorRetryTime": 3600,
"autoSetIn***iteCode": false,
"forceIn***iteCode": false,
"bindTokenToDe***ice": false,
2. 配置微信小程序appid和秘钥
"mp-weixin": {
"oauth": {
"weixin": {
"appid": "xxxxxxxxxxxxxxxxxxx",
"appsecret": "xxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
},
- 运行 uniCloud -> cloudfunctions(右键:上传所有云函数、公共模块及 actions)
- 配置 manifest.json 官方文档
A. 基础配置
B. 微信小程序配置 - 执行 npm install 安装依赖,或者把node_modules文件夹重命名为 node_modules
- 右键 giegie 云函数【上传并运行】用于生成微信 access_token(非必须,只有生成小程序码会用到,也会每小时定时获取)
- 工具栏 -> 运行(R) ->
A. 运行到小程序模拟器(微信开发者工具[体验微信小程序版本]) - 注意点(重要、重要、重要)
A. 小程序中使用 uniCloud 白名单配置。
B. 发布到线上一定要用【发行】后提交到微信平台(没有自动打开微信开发者工具,请看下一节),不要用【运行】 - 图文教程
开启 uniAd 广告,需要发行特定的程序包
1.打包 uniad 包, A.开发环境,运行=》(WIFI)uniAd 包 B.线上环境,发行=》自定义发行=》(WIFI)uniAd 包 2.小程序系统管理》程序配置》配置 uniad 广告 id
一键更新此插件
- 在项目根目录 package.json 右键点击,“从插件市场更新”。
- 特别注意:更新合并时,去掉勾选 uni_modules --》 uni-config --》 uniCloud --》 ... --》 uni-id,以及 manifest.json,防止配置文件被重置,需要重新配置。更新后注意检查其他配置文件。
- 如果出现数据不见了,极有可能是因为你更新版本导致 manifest.json 里的 unicloud appid 被重置,然后你点了重新生成,unicloud 是通过这个 appid 做数据隔离的。
- 每次更新一定要测试功能和数据没问题才上线,最容易出现的就是 unicloud appid 变了导致数据不见了,unicloud appid 改为之前的就行了。
常见问题
1. 为何修改配置文件密码加密 Token 后,无法登录?
A. 修改说明 需新增密码加密 Token ***ersion。
B. 修改 passwordSecret 会导致老用户使用密码无法登录,修改 tokenSecret 会导致所有已经下发的 token 失效。
C. 官方详细介绍
2. 为何微信小程序授权登录没反应或登录不了?
A. 确认是否已在配置文件中填写对应的 appid、appsecret。
B. 修改后的配置文件是否已右键重新上传。
3. 运行后提示 Error: Cannot find module 'uni-read-pages'。
A. 需执行 npm install 安装依赖。 需要 nodejs 环境,如果没有就把node_modules文件夹重命名为 node_modules
4. 点击发行没有自动打开微信开发者工具
A. hbuilderx 的 bug,手动打开微信开发者工具后导入 unpackage/dist/build 包,取个名字与开发包做区分。
B.勾选未使用云开发(不要勾选微信云开发)。
二次开发
1. giegie 云函数
.该云函数封装了安全规则和子路由,支持云函数和定时器(不校验安全规则)和 url 方式访问 .子路由代码放在 routers 目录,前端通过 giegie/aaa/bbb 访问云函数 giegie 下 routers 目录子路由 A.package.json 中 cloudfunction-permission 节点用于配置子路由安全规则
"cloudfunction-permission": {
"login":true,
"config": true,
"ad-calc-fencheng": "auth && auth.uid && auth.role.includes('admin')",
"ad-calc-score": true,
"ad-trace": "auth && auth.uid",
"in***ite_list": "auth && auth.uid",
"qrcode": true,
"withdraw": "auth && auth.uid",
"access_token": true
}
B.package.json 中 cloudfunction-config.triggers 节点用于配置子路由定时器
"cloudfunction-config": {
"memorySize": 256,
"timeout": 10,
"triggers": [
{
"name": "access_token,ad-calc-score",
"desc": "注释:name指定子路由名称,多个用逗号隔开(官方目前triggers数组只支持一个所以用逗号隔开)",
"type": "timer",
"config": "33 33 * * * * *"
}
],
"path": "",
"runtime": "Nodejs8"
},
C.context.currentUser 用于获取当前登录用户 定时器和 url 方式访问没有该属性
let {uid:user_id} = context.currentUser;
2. 前端
.request 统一封装了 http 云函数和云数据库请求 .页面和组件 ***ue 里面通过 this.$request('请求路径')发起请求 .请求路径定义在 common/request/api_defines 目录
//云数据库使用方式
//api_defines目录下接口定义
user_schema: {
url: 'uni-id-users',
auth: true,
method: 'clouddatabase',
desc: '用户信息',
},
//接口调用
let {total:total3} = await this.$request('user_schema',(collection,database,command)=>{
return collection
.where({
in***ite_time:command.gt(new Date(new Date().toDateString()).getTime()),
in***iter_uid:command.all([this.userInfo.id])
})
.count();
})
//云函数使用方式
//api_defines目录下接口定义
config: {
global: {
url: 'giegie/config',
auth: false,
method: 'cloudfunction',
desc: '加载全局配置',
},
},
//接口调用
let {total:total3} = await this.$request('config.global',{})