微信小程序开发入门之共享账本(十四)
![368f2e9bbd742c2991518b0556c3d0f9.png](https://i-blog.csdnimg.cn/blog_migrate/956e8b4dda80f2b8fa27d1bd1bc70ec9.jpeg)
(备注:微信小程序的wxml文件相当于HTML文件,wxss文件相当于CSS文件,js文件就是JavaScript文件,数据库为NoSQL数据库,数据库脚本语言也同NoSQL,因为是运行在微信内,所有不需要关心是Android还是IOS平台,代码托管在微信的代码管理平台,一个类似于Github的平台)
(ps:区块链最近可真是火,但是也不能因此乱了方寸,做事要有始有终不是,等写完小程序的文章再和大家共同学习下区块链的知识吧)
上一篇回顾
上一篇中用到了实时数据监听,但是忘了说数据库集合权限的问题,如果权限没有设置正确监听是不会起作用的
![93cdccbb69dc28ec4ef69520eeac417d.png](https://i-blog.csdnimg.cn/blog_migrate/4d3d828214d65a30726ecee0d19f7e2e.jpeg)
这个权限在云数据库管理界面可以设置,先打开云开发界面,切换到数据库,选择【权限设置】
![cb094b754a911c15bca7850a225792d8.png](https://i-blog.csdnimg.cn/blog_migrate/344100f6a5e69475bae1b5e5a9ad7cb2.jpeg)
然后勾选第一个设置
![1662ec8ff886f3b279cc7c39e30dae94.png](https://i-blog.csdnimg.cn/blog_migrate/af882fd7243c0d9a6fc5609a6cb1251b.jpeg)
注意到第一句话没有,之前我们的数据库操作都是通过云函数来做的,所以不用考虑权限问题,但是数据监听是在小程序端配置的,所以这个才需要修改权限,然后再运行小程序就不会有监听失败的问题了
接下来说新增功能
欧阳修说过,独乐乐不如众乐乐
既然我们是共享账本,肯定是有人一起记账最好,所以本篇我们要新增邀请其他人一起来记账的功能
首先我们在index.wxml中新增一个分享按钮
在wxss中新增一个样式
.share { width: 70rpx; height: 70rpx; background-image: url("https://746a-tj-tianji-1300186850.tcb.qcloud.la/share.png?sign=8105c0a0dafadda106bd6ace80584752&t=1569152158");}
这里的图标都是从阿里巴巴矢量图标库中下载的,可以自行去选取喜欢的图标,完全免费
编译运行小程序
![6fac08cee33e84f2dbb5c19958388150.gif](https://i-blog.csdnimg.cn/blog_migrate/21d08617f6b30a04bf4f861bead9f306.gif)
当然这只是在模拟器运行,没法发给任何人
所以当务之急是用多个账号测试,这需要我们新增测试用的微信号
打开微信公众平台小程序管理页面,选择成员管理,然后在项目成员下添加新成员
![66dc9379e53b8e02cb6ec5087137a0e4.png](https://i-blog.csdnimg.cn/blog_migrate/f6eeb0f6da156a3453c03277dd0588fa.jpeg)
输入微信号搜索添加,可以把三个权限都打开,方便使用
然后回到开发工具中,点击预览按钮,扫描二维码即可在真机上运行
![ecad1c425c3482bc51a64fea9d295027.gif](https://i-blog.csdnimg.cn/blog_migrate/127a668acc11e4b08cc011eccb4d3a20.gif)
然后接收到分享卡片的人就可以通过点击卡片进入小程序
![03aca05a15d9d5d630d04d2f0906eeba.png](https://i-blog.csdnimg.cn/blog_migrate/35aab359c5cd630b59cbeaff1a41d3d3.jpeg)
卡片里的图片可以自定义,像我这样不定义的就会截取屏幕作为预览
现在点击这个卡片只是单纯的进入小程序而已,因为我们还没有加任何信息在里面,接下来我们在index.js里新增一个函数
onShareAppMessage: function (res) { return { title: '快来和我一起记账吧', path: '/pages/index/index?acctBookId='+this.data.acctBookInfo._id+"&acctBookName="+this.data.acctBookInfo.name, imageUrl:'/images/shareBook.jpg'}},
这是一个系统函数,当点击open-type='share'的按钮或者选择小程序界面右上角菜单中的分享时,就会调用该函数,如果不自己定义的话就是上图那种情况,现在我们给分享卡片加入了账本的信息和预览图片,别人点击你分享的卡片之后就会带着这些信息过来,
![0b6e62df1963cd73dfcb003bca41ff0b.png](https://i-blog.csdnimg.cn/blog_migrate/a0364f4d9cdc7931f9acd5323cb82962.jpeg)
那在哪里接收这些信息呢?答案是onload函数
还记得onLoad函数的签名把
onLoad: function (options)
他的参数option就包括所有传进来的信息
我们在onLoad函数里加一句
console.log('[index onload] options',options)
来看看打印出来是什么
应该有人会问,测试分享功能的时候如果只能用真机测试岂不是很麻烦?确实很麻烦,其实我们也可以用开发工具来测,选择合适的编译条件即可,针对我们要测的传入信息我们可以设置相应的条件进行测试
![60b9dd8d76368d9777eb8a072bbc2d30.gif](https://i-blog.csdnimg.cn/blog_migrate/f31b7630c2032cf42feb07736080dc1b.gif)
这样就设置好了进入小程序时所携带的信息,达到模拟点击卡片进入的情况
运行程序,打开控制台可以看到日志
![39642cb7e255441f30fd25c92f16079f.png](https://i-blog.csdnimg.cn/blog_migrate/0be83c83a9d83055a963a861a534f43e.jpeg)
然后我们就可以根据这两个字段的情况来提示用户是否要加入新的账本,新增如下函数
processInvite(option){ console.log(option) let acctBookId = option.acctBookId, acctBookName = option.acctBookName if (acctBookId && acctBookName){ let that = this wx.showModal({ title: '是否加入账本', content: acctBookName, success(res) { if (res.confirm) { console.log('[index processInvite] 用户点击确定') } else if (res.cancel) { console.log('[index processInvite] 用户点击取消') } }, }) }},
然后在onLoad函数中调用该函数
this.processInvite(options)
编译运行,会弹出邀请窗口
![a0644902497a8f2fd89d7659f4094858.png](https://i-blog.csdnimg.cn/blog_migrate/11c395fc92891dcaf1e71464ca58adde.jpeg)
点击确定会在控制台打印出信息
![7f7f6da7c0e591aefd17252acc9327f5.png](https://i-blog.csdnimg.cn/blog_migrate/d41826111c01c138c5c1dfcfad1013b0.jpeg)
点击取消亦是如此
OK,本篇就先到这里,下一篇继续讲如何邀请别人加入你的账本
![42e4e006567f0a0226f6068dc44d7f45.png](https://i-blog.csdnimg.cn/blog_migrate/566197b6124072de00011c283afc363d.jpeg)