** 基础库最低版本: 1.17.0
一个 QQ 用户的关系链数据包括两部分:
为了丰富小程序的社交玩法,我们提供了类似于小游戏使用关系数据链的方法:
<open-data>
组件
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
type | string | 是 | 开放数据类型 | |
share-ticket | string | 否 | 当 type=groupCloudStorage 时有效,群分享对应的 shareTicket | |
key-list | Array.<string> | 否 | 要拉取的 key 列表 | |
component-data | Object | 否 | 从主域透传给开放数据域的数据,会自动注入到自定义开放数据域组件的 properties 中 | |
generic:simple-component | string | 是 | 指定使用哪个自定义开放数据域组件 来渲染开放数据,具体说明见下方 | |
binderror | eventhandle | 否 | 开放数据请求或定向分享失败时触发,event.detail = {errMsg: "getGroupCloudStorage:fail no data"} |
type
的合法值
值 | 说明 | 最低版本 |
---|---|---|
userCloudStorage | 获取当前用户的应用数据 | 1.17.0 |
friendCloudStorage | 获取当前用户也玩该小程序的好友的应用数据 | 1.17.0 |
groupCloudStorage | 获取当前用户在某个群中也玩该小程序的成员的应用数据 | 1.17.0 |
potentialFriendList | 获取可能对游戏感兴趣的未注册的好友名单。每次调用最多可获得 5 个好友 | 1.20.0 |
reactiveFriendList | 获取曾经玩过游戏但最近不常玩的好友名单。每次调用最多可获得 5 个好友 | 1.20.0 |
可通过 generic:simple-component
属性指定自定义开放数据域组件
进行渲染. 使用方法同抽象节点
当数据获取成功后,通过generic:simple-component
指定的自定义开放数据域组件
中会在properties
中自动注入以下属性:
属性 | 类型 | 说明 |
---|---|---|
kvDataList | Array.<KVData> | 当type=userCloudStorage 时 |
userList | Array.<UserData> | 当type=friendCloudStorage 或 type=groupCloudStorage 时 |
list | Array.<FriendInfo> | 当type=potentialFriendList 或 type=reactiveFriendList 时 |
componentData | Object | 从主域透传给开放数据域的数据 |
KVData
数据结构说明
属性 | 类型 | 说明 |
---|---|---|
key | string | 数据的 key |
value | KVData | 数据的 value |
UserData
数据结构说明
属性 | 类型 | 说明 |
---|---|---|
openid | string | 用户的 openid |
avatarUrl | string | 用户的 QQ 头像 url |
nickname | string | 用户的 QQ 昵称 |
kvDataList | Array.<KVData> | 用户的应用数据 |
FriendInfo
数据结构说明
属性 | 类型 | 说明 |
---|---|---|
openid | string | 用户的 openid |
avatarUrl | string | 用户的 QQ 头像 url |
nickname | string | 用户的 QQ 昵称 |
用户的 应用数据
指的是用户的分数、段位等小程序业务特有的数据,通过调用 qq.setUserCloudStorage()
可以将当前用户的应用数据托管在 QQ 后台。只有被托管过数据的用户,才会被视为 玩过
该小程序的用户,才会出现在 type=friendCloudStorage
和 type=groupCloudStorage
的<open-data>
组件中
除此之外,我们还提供了以下 API:
自定义开放数据域组件
类似于自定义组件,不过有以下限制:
createSelectorQuery
、createIntersectionObserver
接口获取自定义开放数据域组件
的任何节点<view>
、<text>
、<image>
、<button>
组件,其他组件会被自动过滤掉style
属性都会被置空同时自定义开放数据域组件
内使用的组件有以下限制:
<image>
组件:
<button>
组件:
仅支持以下类型:
使用<open-data>
组件请求关系链数据后,其返回结果在自定义开放数据域组件
自动注入中kvDataList
或userList
属性
QS
文件对属性进行处理。使用示例:
page/index/index.qml
<view>
<open-data
type="friendCloudStorage"
generic:simple-component="ranklist"
keyList="{{ ['score'] }}">
</open-data>
</view>
page/index/index.json
{
"usingComponents": {
"ranklist": "/openDataContext/ranklist"
}
}
openDataContext/ranklist.qml
<qs src="./tools.qs" module="tools"/>
<view class="ranklist">
<view qq:for="{{tools.processData(userList)}}" class="item">
<view class="name">{{item.nickname}}</view>
<image class="avatar" src="{{item.avatarUrl}}"></image>
<view class="score">{{item.kvDataList[0].value}}</view>
</view>
</view>
openDataContext/tools.qs
module.exports.processData = function (userList) {
return userList.sort(function (a, b) {
a.kvDataList[0].value > b.kvDataList[0].value;
});
};