微信小游戏:主域子域
主域
通常我们所有的功能在主域中就可以完成,主域中有游戏开发所需的所有接口。但是当我们想要做需要访问用户好友数据信息的时候,就需要用到开放数据域中的接口,开放数据域中的接口只能在子域中访问,这也就是我们为什么需要用到子域的原因。
子域存在的目的主要是为了保护玩家的隐私,因为子域中不能调用除特定接口外的其他接口,所以开发者并不能获取玩家的隐私信息。如果在主域中可以调用,那么有些开发者或许会把这些信息发送到自己的服务器,所以微信会限制开放数据域的访问范围。
子域
开放数据域 是一个封闭、独立的 JavaScript 作用域。要让代码运行在开放数据域,需要在 game.json 中添加配置项 openDataContext 指定开放数据域的代码目录。如果使用Cocos Creator,可以再创建一个独立的工程,发布的时候选择微信开放数据域即可。
wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() 只能在 开放数据域 中调用。如果在主域中调用会得到 TypeError: wx.getUserCloudStorage is not a function TypeError: wx.getFriendCloudStorage is not a function TypeError: wx.getGroupCloudStorage is not a function
- wx.getUserCloudStorage 获取当前用户托管数据当中对应 key 的数据。该接口只可在开放数据域下使用, keyList字段是wx.setUserCloudStorage()中定义的字段中的key
wx.getUserCloudStorage({keyList : ["max_score"],success : this.get_user_data_success,fail : this.get_user_data_fail,});
获得的数据形式如下图
- wx.getFriendCloudStorage() 拉取当前用户所有同玩好友的托管数据。该接口只可在开放数据域下使用,keyList字段是wx.setUserCloudStorage()中定义的字段中的key
wx.getFriendCloudStorage({keyList : ["max_score"],success : this.get_friend_data_success,fail : this.get_friend_data_fail,});
数据样式如下图所示
- wx.getGroupCloudStorage() 获取群同玩成员的游戏数据。小游戏通过群分享卡片打开的情况下才可以调用,用法与wx.getFriendCloudStorage()类似,只是多了个群分享对应的 shareTicket,涉及到分享的shareTicket
wx.setUserCloudStorage() 和 wx.removeUserCloudStorage() 可以同时在 主域 和开放数据域中调用。
- wx.setUserCloudStorage() 对用户托管数据进行写数据操作。允许同时写多组 KV 数据,要注意KVDataList的写法,getUserCloudStorage、getFriendCloudStorage等返回的数据也是这个形式,特别注意value需要是字符串形式,否则会报错
wx.setUserCloudStorage({KVDataList : [{key : "max_score", value : score.toString()}],success : self.set_data_success,fail : self.set_data_fail,});
wx.postMessage
主域向子域发送消息需要用到这个接口,但是这个接口只能由主域调用。子域只能接受消息,不能发送消息给主域,如果在子域中调用这个接口会收到 TypeError: wx.postMessage is not a function的错误。
wx.postMessage({type : "close"});
在子域中通过onMessage监听主域事件,主域可以调用这个onMessage函数,不会报错,但是没有意义,因为子域并不会也不能调用postMessage
wx.onMessage(this.on_message_come);
on_message_come : function(data){if(data["type"] == "open"){}},
下一篇将主要介绍下CocosCreator中制作好友排行榜微信小游戏排行榜:Cocos Creator
推广一下自己做的简单的小游戏
创建了一个小游戏交流群,如果过期或者满了或者有问题交流 可以加我微信 备注“微信小游戏”
微信小游戏:主域子域相关推荐
- 微信小游戏开放域之helloworld
标签: 微信小游戏,开放域 微信小游戏-开放数据域的配置 概念 开放数据域 是一个封闭.独立的 JavaScript 作用域.开放数据域主要作用就是获取用户的关系链数据,并且展示关系链数据 具体使用方 ...
- CocosCreator微信小游戏开放域使用(排行榜)
CocosCreator官方文档 微信小程序开放域官方文档 实现步骤: 单独创建一个开放域项目,并设置接收消息方法 const { ccclass, property } = cc._decorato ...
- pixijs微信小游戏排行榜开放域开发
关于微信小游戏开放域的基本概念本文不作介绍请去微信官文文档阅读: 主域: 在这你有几件事要作,第一准备好给离屏canvas用的容器:第二作好离屏canvas事件交互,比如切换菜单/关闭窗口:第三循环里 ...
- 微信小游戏|开放数据域的写与读
本文来自Cocos官方论坛,感谢「达闻西」的分享! 1. 引言 本来是自己写的笔记,想想还是发出来把,能让不少新手少走弯路,毕竟自己也是摸索了好久!以图片的形式,让大家更直观点! 微信小游戏API官方 ...
- CocosCreator微信小游戏排行榜及开放数据域的理解与使用
微信小游戏开放数据域及排行榜的使用 好久没有写博客了,距离上一次博客,已经有了近半年之久,这段时间发生了太多的事,当然,这些不是今天的主题,接下来我们主要讲一讲微信小游戏开放数据域的使用,以及如果制作 ...
- CocosCreator | 微信小游戏排行榜 微信开放域
更多笔记和源码请关注:[微信公众号] CocosCreator笔记 演示 技术摘要 主域工程 微信授权 创建子域节点 向子域发送消息 子域工程 读写用户云托管数据 接收主域发送的消息 构建运行 实现 ...
- LayaAir 绘制微信小游戏开放数据域画面
LayaAir 绘制微信小游戏开放数据域画面 请大家关注我的微博:@NormanLin_BadPixel坏像素 之前写过用cocosCreator绘制微信小游戏子域的教程,保持整体思路不变,现在再写一 ...
- LayaAirIDE实现微信小游戏排行榜绘制(开放数据域)
看这篇文章的前提是你 1.已经在微信Web开发者平台里使用wx.setUserCloudStorage接口把自己的数据存储到微信提供的服务器上, 2.并且已经通过wx.getFriendCloudSt ...
- 微信小游戏子域中请求微信头像,cocos create会自动添加前缀的问题
在微信小游戏中获取到了头像url之后,打算使用cc.loader.load进行加载 但是请求出去的时候,会在url前面添加子域目录: 像这样 https://wx.qlogo.cn/mmopen/vi ...
最新文章
- 号称3个月发布最强量子计算机,卖口罩的霍尼韦尔凭什么?
- 服务容错保护断路器Hystrix之二:Hystrix工作流程解析
- 《告别失控:软件开发团队管理必读》一一第1章 程序员为何难以管理
- java填空题 在非静态成员方法中_Java程序设计填空和改错题(参考答案)
- 梯度反传_反事实政策梯度解释
- 如何使用github中的pull request功能?
- [日志]开车要掌握的十六大绝技
- 《南溪的目标检测学习笔记》——验证模式下出现“Process finished with exit code 137 (interrupted by signal 9: SIGKILL)“的问题
- 【HDOJ6955】Xor sum(异或前缀和,01字典树)
- JavaScript 计算细节解惑
- Android程序开发学习之创建第一个Android程序(Hello World程序)
- 输入ip地址无法访问计算机,即使是地址栏输入IP地址也没法访问其他计算机!!
- matlab zmax 光学仿真,基于ZEMAX的光栅干涉仪仿真
- 利用css3伪元素实现加号、减号、对号小图标效果
- 【英语】maintext2-Emotional Mastery译文
- appuim+python+MUMU模拟器连接方法
- html高度塌陷问题
- EC-PCA: 利润中心会计配置
- ffalcon电视html接口,达人给评测下:液晶电视FFALCON75S535C怎么样呢?评价如何?个人感受揭秘...
- WIFI等无线射频产品为什么要校准?