資訊動(dòng)態(tài)

微信小程序游戲關(guān)系鏈數(shù)據(jù)API接口使用指南

日期:2018-03-23 作者:管理員 來源:本站

微信小游戲是小程序的一個(gè)類目,微信用戶完成微信小程序注冊后,可選擇“游戲”類目并開始開發(fā)及調(diào)試微信小游戲【珠海微信小程序建設(shè)電話】,為了豐富微信游戲的社交玩法,微信團(tuán)隊(duì)提供了獲取關(guān)系鏈數(shù)據(jù)的API接口,可獲取當(dāng)前用戶也玩該小游戲的好友的用戶數(shù)據(jù)。

珠海微信小程序建設(shè):微信小程序游戲關(guān)系鏈數(shù)據(jù)API接口使用指南

珠海微信小程序建設(shè):微信小程序游戲關(guān)系鏈數(shù)據(jù)API接口使用指南

微信小游戲接入指南

注冊小程序帳號:在微信公眾平臺官網(wǎng)首頁(mp.weixin.qq.com)點(diǎn)擊右上角的“立即注冊”按鈕。

選擇注冊的帳號類型:選擇“小程序”,點(diǎn)擊“查看類型區(qū)別”可查看不同類型帳號的區(qū)別和優(yōu)勢。

填寫郵箱和密碼:請?zhí)顚懳醋赃^公眾平臺、開放平臺、企業(yè)號、未綁定個(gè)人號的郵箱。

激活郵箱:登錄郵箱,查收激活郵件,點(diǎn)擊激活鏈接。

填寫主體信息:點(diǎn)擊激活鏈接后,繼續(xù)下一步的注冊流程。請選擇主體類型選擇,完善主體信息和管理員信息。

填寫主體信息并選擇驗(yàn)證方式:企業(yè)類型帳號可選擇兩種主體驗(yàn)證方式。 方式一:需要用公司的對公賬戶向騰訊公司打款來驗(yàn)證主體身份。打款信息在提交主體信息后可以查看到。 方式二:通過微信認(rèn)證驗(yàn)證主體身份,需支付300元認(rèn)證費(fèi)。認(rèn)證通過前,小程序部分功能暫無法使用。


關(guān)系鏈數(shù)據(jù)使用指南

一個(gè)微信用戶的關(guān)系鏈數(shù)據(jù)包括兩部分:

  • 該用戶好友的用戶數(shù)據(jù)

  • 該用戶所在的某個(gè)群的群成員的用戶數(shù)據(jù)。

為了豐富游戲的社交玩法,我們提供了獲取關(guān)系鏈數(shù)據(jù)的 API:

  • wx.getFriendCloudStorage() 獲取當(dāng)前用戶也玩該小游戲的好友的用戶數(shù)據(jù)

  • wx.getGroupCloudStorage() 獲取當(dāng)前用戶在某個(gè)群中也玩該小游戲的成員的用戶數(shù)據(jù)

這兩個(gè) API 的返回結(jié)果都是一個(gè)對象數(shù)組,數(shù)組的每一個(gè)元素都是一個(gè)表示用戶數(shù)據(jù)的對象,其結(jié)構(gòu)如下:

屬性 類型 說明
openId string 用戶的 openId
avatarUrl string 用戶的微信頭像 url
nickName string 用戶的微信昵稱
data Object 用戶的游戲數(shù)據(jù)

用戶的 游戲數(shù)據(jù) 指的是用戶的段位、戰(zhàn)績等游戲業(yè)務(wù)特有的數(shù)據(jù),通過調(diào)用 wx.setUserCloudStorage() 可以將當(dāng)前用戶的游戲數(shù)據(jù)托管在微信后臺。只有被托管過數(shù)據(jù)的用戶,才會(huì)被視為 玩過 該小游戲的用戶,才會(huì)出現(xiàn)在 wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() 返回的對象數(shù)組中。

除此之外,我們還提供了以下 API:

  • wx.removeUserCloudStorage() 刪除用戶托管數(shù)據(jù)中指定字段的數(shù)據(jù)

  • wx.getUserCloudStorage() 獲取當(dāng)前用戶的托管數(shù)據(jù)

wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() 只能在 開放數(shù)據(jù)域 中調(diào)用。
wx.setUserCloudStorage() 和 wx.removeUserCloudStorage() 可以同時(shí)在 主域 和開放數(shù)據(jù)域中調(diào)用。

開放數(shù)據(jù)域

開放數(shù)據(jù)域 是一個(gè)封閉、獨(dú)立的 JavaScript 作用域。要讓代碼運(yùn)行在開放數(shù)據(jù)域,需要在 game.json 中添加配置項(xiàng) openDataContext 指定開放數(shù)據(jù)域的代碼目錄。添加該配置項(xiàng)表示小游戲啟用了開放數(shù)據(jù)域,這將會(huì)導(dǎo)致一些 限制。

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

同時(shí)還需要在該目錄下創(chuàng)建 index.js 作為開放數(shù)據(jù)域的入口文件,其代碼運(yùn)行在開放數(shù)據(jù)域。game.js 是整個(gè)游戲的入口文件,其代碼運(yùn)行在 主域。對應(yīng)以上配置,應(yīng)該有如下的目錄結(jié)構(gòu):

├── src  
|   └── myOpenDataContext
|       ├── index.js
|       └── ...
├── game.js
├── game.json
└── ...

src/myOpenDataContext 是 開放數(shù)據(jù)域的代碼目錄,除 src/myOpenDataContext 以外是 主域的代碼目錄。

主域和開放數(shù)據(jù)域中的代碼不能相互 require。以如下的目錄結(jié)構(gòu)為例:

├── src  
|   └── myOpenDataContext
|       ├── index.js
|       ├── util.js
|       └── ...
├── lib
|   └── render.js
└── game.js

在 game.js 中不能 require('src/myOpenDataContext/util')
在 src/myOpenDataContext/index.js 中不能 require('../../lib/render.js')

主域和開放數(shù)據(jù)域的通信

開放數(shù)據(jù)域不能向主域發(fā)送消息。

主域可以向開放數(shù)據(jù)域發(fā)送消息。調(diào)用 wx.getOpenDataContext() 方法可以獲取開放數(shù)據(jù)域?qū)嵗?,調(diào)用實(shí)例上的 OpenDataContext.postMessage() 方法可以向開放數(shù)據(jù)域發(fā)送消息。

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

在開放數(shù)據(jù)域中通過 wx.onMessage() 方法可以監(jiān)聽從主域發(fā)來的消息。

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

展示關(guān)系鏈數(shù)據(jù)

如果想要展示通過關(guān)系鏈 API 獲取到的用戶數(shù)據(jù),如繪制排行榜等業(yè)務(wù)場景,需要將排行榜繪制到 sharedCanvas 上,再在主域?qū)?sharedCanvas 渲染上屏。


// src/myOpenDataContext/index.js let sharedCanvas = wx.getSharedCanvas() function drawRankList (data) {
  data.forEach((item, index) => { // ... })
}

wx.getFriendUserGameData({
  success: res => { let data = res.data
    drawRankList(data)
  }
})

sharedCanvas 是主域和開放數(shù)據(jù)域都可以訪問的一個(gè)離屏畫布。在開放數(shù)據(jù)域調(diào)用 wx.getSharedCanvas() 將返回 sharedCanvas。

// src/myOpenDataContext/index.js let sharedCanvas = wx.getSharedCanvas() let context = sharedCanvas.getContext('2d')
context.fillStyle = 'red' context.fillRect(0, 0, 100, 100)

在主域中可以通過開放數(shù)據(jù)域?qū)嵗L問 sharedCanvas,通過 drawImage() 方法可以將 sharedCanvas 繪制到上屏畫布。

// game.js let openDataContext = wx.getOpenDataContext() let sharedCanvas = openDataContext.canvas let canvas = wx.createCanvas() let context = canvas.getContext('2d')
context.drawImage(sharedCanvas, 0, 0)

限制

當(dāng)小游戲啟動(dòng)開放數(shù)據(jù)域,即在 game.json 中添加 openDataContext 配置項(xiàng)時(shí)。小游戲環(huán)境會(huì)對主域和開放數(shù)據(jù)域應(yīng)用一些限制。

主域

  1. sharedCanvas 只能被繪制到上屏 canvas 上。

  2. 上屏 canvas 不能調(diào)用 toDataURL,其 context 不能調(diào)用 getImageData。

  3. sharedCanvas 不能調(diào)用 toDataURL 和 getContext。

  4. 不能將上屏 canvas 和 sharedCanvas 以任意形式繪制到其他 canvas 上,包括 drawImage、createPattern、texImage2D、texSubImage2D。

開放數(shù)據(jù)域

開放數(shù)據(jù)域只能調(diào)用有限的 API,如下所示:

幀率

  • requestAnimationFrame()

  • cancelAnimationFrame()

Timer

  • setTimeout()

  • clearTimeout()

  • setInterval()

  • clearInterval()

觸摸事件

  • wx.onTouchStart()

  • wx.onTouchMove()

  • wx.onTouchEnd()

  • wx.onTouchCancel()

  • wx.offTouchStart()

  • wx.offTouchMove()

  • wx.offTouchEnd()

  • wx.offTouchCancel()

畫布

  • wx.createCanvas()

開放數(shù)據(jù)域的所有 canvas 只支持 2d 渲染模式

圖片

  • wx.createImage()

開放數(shù)據(jù)域的 Image 只能使用本地或微信 CDN 的圖片,不能使用開發(fā)者自己服務(wù)器上的圖片。

開放數(shù)據(jù)

  • wx.getFriendCloudStorage()

  • wx.getGroupCloudStorage()

  • wx.getUserCloudStorage()

  • wx.setUserCloudStorage()

  • wx.removeUserCloudStorage()

監(jiān)聽主域消息

  • wx.onMessage()


二維碼
掃二維碼手機(jī)查看該文章
當(dāng)前網(wǎng)址:http://yngytx.cn/wechat/518.html

相關(guān)資訊

?
Copyright ? 2007-2024 珠海市網(wǎng)訊互聯(lián)信息科技有限公司 yngytx.cn 版權(quán)所有
粵公網(wǎng)安備44040202000391號 粵ICP備19117377號 網(wǎng)站地圖 站點(diǎn)地圖
在線客服