【教程】微信开放数据域(写入、读取)详细流程!

《引言》
本来是自己写的笔记,想想还是发出来把,能让不少新手少走弯路,毕竟自己也是摸索了好久!
以图片的形式,让大家更直观点!

微信小游戏API官方手册
https://developers.weixin.qq.com/minigame/dev/api

“写和读”:有“写”才有“读”!

“微信数据开放域”简称为:“开放域”,也可以叫“子域”
“主项目”简称为:“主域”

都知道微信开放数据域,是微信为了保护用户的数据,而专门设置的一个独立的小项目!只能在开放域中,由微信它自己去调用开放域的API!
正因为如此,我们只能在开放域中获取微信好友等数据,然后在开放域中制作好我们想要的“展示界面”,诸如排行榜之类!
最终,开放域返回给我们主项目的,就是开放域主场景Canvas显示的“一幅图片”而已!
而这幅图片,会自动显示在我们主项目当中的,有组件WXSubContextView的Sprite节点里面!

前提准备
主项目中,需要显示开放域数据的Sprite节点上,给其添加组件WXSubContextView,然后该Sprite节点会自动接收开放数据域返回的“图片”!
PS:该Sprite节点的尺寸,需要和开放域中的Canvas一样,才不会被拉伸!!

注意
微信调用的这些开放域API,都是延迟执行的,数据并不是实时的!
所以,这些API都有自己的回调方法(success,fail,complete 等等),需等待其执行完后,再执行对应的回调,方能正常读写数据!
详情,请查看微信小游戏API官方手册,开放数据那一部分!
https://developers.weixin.qq.com/minigame/dev/api

步骤解析
1.在主域的代码脚本中,必须先给开放域发送一些消息,即一些指令!这样开放域才能做出相应的回应,去执行我们想要执行的操作!
wx.postMessage()

2.在开放域中,接收主域发送过来的消息指令(这里的代码可以写在start里面,也可以在onLoad里面)
接收到的消息指令,就是case 3,执行数据更新方法!
wx.onMessage()

3.添加或更新用户微信托管数据,里面可指定需修改的数据项!
wx.setUserCloudStorage()
KVDataList:只想添加或修改分数,就填分数该项的键值对!
(当然,也可以同时改动多项键值对,只需在KVDataList里继续添加键值对即可,最好根据情况,给方法传进来多个参数,对应键值对)

4.获取微信好友们的数据(制作排行榜等等)
wx.getFriendCloudStorage()

后记
由于只是记录一个流程,介绍简单的步骤,方便大家理解,所以很多代码地方都简化了,实际当中,肯定会有更多的细节和需求!

微信小游戏API官方手册
https://developers.weixin.qq.com/minigame/dev/api

8赞

mark

mark

mark

实用贴,感谢:2:

感谢楼主分享,最近也在研究这个,「奎特尔星球」公众号想转发你这篇教程不知道是否同意?

可以的,发出来也是为了方便更多的人!

感谢!给你发了论坛私信,注意查收!

mark

Mark 蟹蟹

mark

mark

mark