更新记录

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+


特别申明

  1. 此插件不建议非程序员或者完全看不懂文档的人购买,远程代搭建部署五十元一次(需要提前准备好小程序)

快速上手

  1. 使用 HBuilderX 导入插件
  2. 关联 uniCloud 服务空间(创建 uniCloud 服务空间
  3. 运行 uniCloud -> database -> db_init.josn(右键:初始化云数据库(包含 Schema 和校验函数))
  4. 配置 uniCloud -> cloudfunctions -> common 云函数 uni-config-center -> uni-id -> config.json 文件 官方文档
  5. 修改配置文件需重新右键上传 uni-config-center、uni-id 云函数
    1. 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"
      }
    }
  },
  1. 运行 uniCloud -> cloudfunctions(右键:上传所有云函数、公共模块及 actions)
  2. 配置 manifest.json 官方文档
    A. 基础配置
    B. 微信小程序配置
  3. 执行 npm install 安装依赖,或者把node_modules文件夹重命名为 node_modules
  4. 右键 giegie 云函数【上传并运行】用于生成微信 access_token(非必须,只有生成小程序码会用到,也会每小时定时获取)
  5. 工具栏 -> 运行(R) ->
    A. 运行到小程序模拟器(微信开发者工具[体验微信小程序版本])
  6. 注意点(重要、重要、重要)
    A. 小程序中使用 uniCloud 白名单配置
    B. 发布到线上一定要用【发行】后提交到微信平台(没有自动打开微信开发者工具,请看下一节),不要用【运行】
  7. 图文教程

开启 uniAd 广告,需要发行特定的程序包

1.打包 uniad 包, A.开发环境,运行=》(WIFI)uniAd 包 B.线上环境,发行=》自定义发行=》(WIFI)uniAd 包 2.小程序系统管理》程序配置》配置 uniad 广告 id

一键更新此插件

  1. 在项目根目录 package.json 右键点击,“从插件市场更新”。
  2. 特别注意:更新合并时,去掉勾选 uni_modules --》 uni-config --》 uniCloud --》 ... --》 uni-id,以及 manifest.json,防止配置文件被重置,需要重新配置。更新后注意检查其他配置文件。
  3. 如果出现数据不见了,极有可能是因为你更新版本导致 manifest.json 里的 unicloud appid 被重置,然后你点了重新生成,unicloud 是通过这个 appid 做数据隔离的。
  4. 每次更新一定要测试功能和数据没问题才上线,最容易出现的就是 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',{})

预览

image.png

技术交流群

qrcode.jpg

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: