WeApp – 2019小程序应用开发赛总结

2019 — 中国高校计算机大赛 微信小程序应用开发赛 参赛作品。

部分真实信息已经隐藏。

前端采用小程序原生开发
后端采用小程序云开发
部分组件化,自定义组件较多

我学到了什么

1. 小程序云开发的 优点/缺点

在之前的开发中,一般都是用ThinkPHP去开发一个后端api,然后给小程序调用。这是最传统的做法,但是对于个人开发者来讲,一个月的时间去兼职完成一个完整的小程序,还是非常累的。所以小程序云开发能够极大加快个人开发者的进度。(官方发过一篇文: 1个开发如何撑起一个过亿用户的小程序)

小程序提供的云存储对外开放能力有限,文件url为 cloud:// 开头,可以存储下载多重类型,同时image, audio, video 等允许直接调用云存储的文件 (cloud://xxxxxx)

云数据库为非关系型数据库,想要联表查询的话,嘿嘿你懂的。每一条数据自带_id和_openid字段,云数据库允许的权限有:

云函数, 说实话一开始我不知道这个有什么用,直到最后我需要删除、更新特殊信息,以及调用微信公众平台api时发现了它的妙处。

例如有这么一个需求:甲发送了一篇文章,除了所有用户可以查看之外,她的女朋友乙可以删除或者修改这篇文章的内容,这就涉及到修改其他人创建的数据,这个时候上图中云数据库的权限是完全不够用的。但是在云函数中可以实现上述功能。

另外如果我需要发送模板消息,或者调用其他微信公众平台官方api。这个时候如果在小程序中直接网络请求会被限制。所以可以在云函数中去操作。

同时云函数支持定时任务。

2. 个人/企业开发者账号的区别(个人开发者不能做什么)

详细阅读开发文档之后,基本就可以总结出来。

个人开发者不允许使用支付功能。
个人开发者不允许使用web-view组件 (类似iframe功能)。

上述功能对企业开发账号不做限制。

另外,在产品上架的时候也会遇到一些局限。
比如在下方我的作品中,我涉及到了个人日记功能,还有添加习惯,添加奖励等功能,这些在上架的时候,个人开发者是会受到限制的,下面是小程序官方发来的审核信息。

你好,你的小程序涉及用户自行生成内容的发布/分享/交流,属社交范畴,为个人主体小程序未开放类目,建议申请企业主体小程序。

另外我的打卡功能非常依赖推送功能,但是小程序本身很局限。本来想参考其他打卡提醒类小程序的做法,通过微信公众号的方式去提醒,结果发现个人只能申请订阅号,订阅号的推送通知都被折叠起来了,所以基本起不到提醒的作用。

3. 自定义组件中遇到的问题

a. 自定义tabBar

通过官方的方式自定义tabBar时会发现存在 tabBar 跳动的问题,而且大部分时候会错位,也需要在每个页面的 onShow() 里面去设置参数。

可以通过components的方式去自定义tabBar,这里我模仿了某APP,实现了一个自定义tabBar,没有出现上述问题。

b. 自定义toast

自定义toast相对简单,通过components的方式即可。但是需要注意一个问题就是,当页面中出现textarea等官方控件时,自定义组件的层级永远都比这些特殊组件低。很难解决覆盖问题。

4. 对小程序的部分幻想

推送功能:

这是我目前实现的推送功能:

一开始我对这种模板消息充满了各种期待,后来发现对于小程序它是一个基本可有可无的东西。

首先要在用户点击form表单里面的按钮时,获取一个formID, 然后通过用户的openID和formID去给用户发送模板消息。

这里有几个问题:

  1. 必须是点击form表单里面的按钮才可以生成formID;
  2. 每个form只能生成一个formID。 网上有那种一个form里面嵌套几十个button的方式去一次性获取多个formID,该方法已经失效。
  3. formID和openID关联,由谁产生的formID,就只能给谁发送模板消息
  4. 一个formID只能使用一次,有效期7天。

目前网上有提供小程序推送的服务商,看了看做法,大部分就是通过在页面中藏表单,或者项目中的大部分按钮在都换成form表单的方式,在点按的同时获取一个formID, 然后在合适的时机将收集到的formID上传到服务器存储。

我的做法是在每天初次打开的时候,出现一个早上好的提示,用户点击按钮获取formID,然后在小程序进入后台的时候,将收集到的formID上传到服务器。


项目名称

xxxxx Daily

“中文别名: xx日常”


项目介绍

xxxxx Daily 是一款提供 双人互动 打卡,设置奖励,分享日常的小程序。

与目前市场上存在的大部分习惯日常类应用不同的是,我们更希望互相绑定的两个用户之间去完成一些日常活动。例如在完成自己的每日任务时,可以查看对方的打卡进度,提醒对方及时完成任务;或者可以根据任务为对方制订一套奖励计划,鼓励对方按时完成任务。另外,你可以在广场记录当天完成的任务,发生的故事,这可以只在你与同伴之间分享,也可以设置允许其他人阅读。

另外,xxxxx Daily 虽然更侧重于两个用户完成绑定后使用,但是其中的所有功能也都可以一个人完成。你可以自己打卡,自己给自己设置奖励。

在第一次使用本小程序时,你可以设置一个分享海报,邀请小伙伴与你进行绑定。绑定的双方也可以随时解除关系。


功能介绍

习惯

  • 编辑习惯列表
  • 查看自己/对方打卡进度
  • 打卡
    • 完成自己的任务
    • 提醒对方打卡
  • 查看打卡记录

奖励

  • 查看进行中/已结束奖励
  • 为自己/对方添加奖励

广场

  • 大厅/个人中心 文章列表
  • 添加文章

设置

  • UI设置
  • 绑定关系管理

团队信息

  • 学校: xxx
  • 组员:
    • xxx
    • xxx

Logo


详细功能介绍

因为本小程序既可单人运行,又可双人交互,所以在下方的介绍中,除特殊说明外,所有功能都是在双人绑定的状态下运行。

详细介绍

  1. 登录
  2. 个人中心
  3. 设置
  4. 邀请好友
  5. 习惯操作
    1. 添加习惯
    2. 个人打卡
    3. 查看对方习惯
    4. 提醒对方打卡
    5. 查看对方打卡记录
  6. 广场
    1. 添加文章
    2. 文章浏览
  7. 奖励
    1. 添加奖励
    2. 查看奖励

1. 登录

新用户使用指南

2. 个人中心

3. 设置

4. 邀请好友

对方收到的样子

5. 习惯操作

a. 添加习惯

点击中间添加按钮,选择添加习惯

可以为习惯选择图标,设置名称, 设置每周什么时候打卡,下方可以选择截至时间。

选择截止时间

b. 个人打卡

在 “今天” 页面点击习惯名可打卡

再次点击则取消打卡

c. 查看对方习惯

在“今天”页面顶部点击对方可切换视角

点击后,下方变成对方的习惯列表。

d. 提醒对方打卡

切换到对方视角,点击对方未完成的任务,即可发送提醒。


小程序卡片消息提醒

当无法发送卡片消息时,需要手动分享给对方

e. 查看对方打卡记录

当点击对方已完成的任务时,可以查看对方打卡记录

点击查看详情

6. 广场

a. 添加文章

可以上传照片

设置查看权限 (我们: 只允许自己和对方查看。 所有人: 任何人可见)

b. 文章浏览

7. 奖励

a. 添加奖励

可以给自己或者对方添加奖励

无期限习惯可以设置打卡次数。

有期限习惯会自动计算剩余天数。

b. 查看奖励

查看奖励详情。(打卡记录仅从奖励设置当天开始)