标题: 通过云数据库和云函数,实现统计 APP 用户数量和检查更新功能
时间: 2022-08-22发布,2022-08-23修改
我正在尝试实现统计 APP 用户数量、自动检查更新的功能。
具体过程为:
尝试多种方案后,发现使用 uniCloud
的云数据库、云函数和云存储,实现起来最简洁高效。
现将实现步骤记录如下,供参考。
首先需要在 uniCloud 注册账号,并上传身份证照片实名认证。
注册完成后,在 服务空间列表 新建一个名为my-first-space
的空间。我使用的是阿里云空间,因为可以免费使用。
还需要下载安装编辑器 HBuilder,用于编辑提交云函数和各种配置文件。下载安装后,需要在编辑器内登录 uniCloud 账号。
为了统计 APP 用户数量,需要通过云数据库创建数据一个数据表存储数据。
在浏览器打开之前新建的空间,在云数据库选项新建一个名为 myfirsttable
的数据表,然后编辑表结构,如图。
图中的代码如下:
{
"bsonType": "object",
"required": [],
"permission": {
"read": false,
"create": true,
"update": false,
"delete": false,
"count": false
},
"properties": {
"_id": {
"description": "ID,系统自动生成"
},
"mtimestamp": {
"bsonType": "timestamp"
},
"mheader": {
"bsonType": "object"
}
}
}
permission
控制了“前端非admin的访问权限”。因为之后我们需要通过云函数向数据表增添数据,所以 create
项设为 true
。其它权限暂时不需要,所以设为 false
。
properties
中定义了表中有哪些字段:
_id
字段是系统自动生成的;
mtimestamp
字段用于保存时间戳,类型是 timestamp
;
mheader
字段用于保存客户端信息,类型是 object
(JSON 对象)。
现在数据表已经准备就绪!如果你还希望存储其它数据,可查看 DB Schema 表结构 了解详细的编写方法。
云函数用来保存客户端信息,以及向客户端返回版本更新信息。
创建云函数需要使用刚下载安装的 HBuilder
编辑器。
打开编辑器,选择 文件
- 新建
- 项目
:
然后选择 uni-app
,项目名称输入 testproj
,模板选择 默认模板
,Vue 版本保持默认,勾选 启用uniCloud
,然后点击 创建
。
然后展开项目文件夹 testproj
,右击 uniCloud
文件夹,点击 关联云服务空间或项目...
:
在弹出的窗口中,勾选之前创建的空间,然后点击关联
:
关联成功后,再右击 uniCloud
内的 cloudfunctions
文件夹,新建云函数/云对象
。
在弹出的窗口中输入新建云函数的名字 testfunc
,然后直接点击 创建
即可。注意这里不需要选择模板,也不需要修改模块或依赖。
然后打开 testproj/uniCloud-aliyun/cloudfunctions/testfunc/index.js
,即可编写云函数代码,如图:
图中的代码为:
'use strict';
exports.main = async (event, context) => {
// 获取数据库
const dbJQL = uniCloud.databaseForJQL({
event,
context
})
// 获取数据表 myfirsttable,保存当前时间戳和客户端的 header 信息
await dbJQL.collection('myfirsttable').add({
mtimestamp: new Date().getTime(),
mheader: event.headers
})
// 将新版本信息返回至客户端
let latestVersionInfo = {
"versionCode": 20220901,
"whatsNew": "版本更新介绍"
}
return latestVersionInfo
};
(我不熟悉 JS,代码可能不太规范,欢迎指正。)
注意编辑器不会自动保存修改,需要手动按下 Ctrl+S
保存。 编辑完成并保存后,右击 testfunc
文件夹,点击 上传部署
。
等待几秒钟,直到控制台显示 [阿里云:my-first-space]云函数testfunc上传完成
。
现在,回到浏览器,打开 云函数/云对象
,在 函数/对象列表
中,可以看到刚刚上传的云函数。点击编辑,在页面最下方 设置URL的PATH部分
,设置为 /firstfunc
。
云函数已经配置完成!点击 复制链接
,你就得到了一个 HTTPS 地址。客户端访问此地址,即可执行此云函数。
这里以开发 Android APP 为例,使用 OkHttp
库访问互联网,如图:
图中的代码为:
OkHttpClient().newCall(
Request.Builder()
.url("https://********************.bspapp.com/firstfunc")
.addHeader("User-Agent", "CuteGIF/20220820")
.build())
.execute().body!!.string()
CuteGIF/20220820
是客户端的版本信息。注意 Android 应用不应在主线程进行网络请求,所以图中的代码是在新建的线程内执行的。
如我们所愿,返回了预设好的 JSON 对象:{"versionCode":20220901,"whatsNew":"版本更新介绍"}
。
同时,云数据库也如同我们的预期,记录了客户端每次请求的时间戳和版本:
日后如果想处理云数据库中的数据,可以通过 HBuilder
使用 JQL 语句增删改查,也可以将数据库以 JSON 或 CSV 格式导出后,使用其它软件处理分析。
另外,uniCloud
还提供云存储服务,可用于存储软件更新的安装包。这样,在客户端检查更新时,可返回安装包链接,实现软件自更新。
我并没有网络和数据库开发的经验,好在 uniCloud
的云服务确实简单易用,只花了很少的时间和代码,就实现了统计 APP 用户数量和自动检查更新的功能。
『回复列表(8|隐藏机器人聊天)』