微信小游戏-开放数据域的配置

概念

开放数据域 是一个封闭、独立的 JavaScript 作用域。开放数据域主要作用就是获取用户的关系链数据,并且展示关系链数据
具体使用方法在官方文档已经非常详细了-》开放数据域本文只是做一个简单整理
具体的展示关系链数据,如何绘制排行榜,请查看另一篇文章

配置方法

1、新建开放数据域的代码目录,以myOpenDataContext为例,在目录下新建index.js作为开放数据的入口文件
2、在game.json中添加配置项 openDataContext

{
  "deviceOrientation": "portrait",
  "openDataContext": "src/myOpenDataContext"
}

clipboard.png

开放数据域限制

1、主域和开放数据域中的代码不能相互 require
2、wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() 只能在 开放数据域 中调用。
3、wx.setUserCloudStorage() 和 wx.removeUserCloudStorage() 可以同时在 主域 和开放数据域中调用。
4、开放数据中不能修改sharedCanvas的宽高,如有需要,请在上屏canvas修改sharedCanvas的宽高
5、sharedCanvas只能被上屏canvas渲染
6、开放数据域不能向主域发送消息
7、sharedCanvas 不能调用 toDataURL 和 getContext。
8、开放数据域的所有 canvas 只支持 2d 渲染模式
9、开放数据域的 Image 只能使用本地或微信 CDN 的图片,不能使用开发者自己服务器上的图片

主域限制

1、主域不能调用wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() ,也就是说主域不能直接获取用户关系链数据,必须通过开放数据域获取,再渲染到sharedCanvas上

主域和开放数据域的通信

开放数据域不能向主域发送消息,主域可以调用开放数据域实例的postmassage()方法向开放数据域发送消息

// game.js
let openDataContext = wx.getOpenDataContext()
openDataContext.postMessage({
  text: 'hello',
  year: (new Date()).getFullYear()
})

在开放数据域中通过 wx.onMessage() 方法可以监听从主域发来的消息。

// src/myOpenDataContext/index.js
wx.onMessage(data => {
  console.log(data)
  /* {
    text: 'hello',
    year: 2018
  } */
})

具体关于关系链数据的操作以及排行榜的绘制,请前往另一篇文章微信小游戏-关系链数据的使用

猜你喜欢

转载自blog.csdn.net/bobo553443/article/details/83867916