# 邀请系统
# 普通邀请
# 一、介绍
为了增加玩家 分享游戏的积极性,接入该系统可以使玩家分享游戏后,在被邀请的玩家进入游戏后得到奖励。支持区分邀请新玩家或者老玩家进入游戏增加活跃度,支持同时配置多个活动。该系统需要填写配置表,参考配置
# 二、使用
代码中通过以下方式使用
// 导入模块
import { invitationSystem } from "@timi/mogs-sdk";
...
// 获取当前的邀请活动列表
const invitationRewardActivities = await invitationSystem.invitationRewardActivities;
...
// 监听邀请奖励状态的改变
invitationSystem.onInvitationRewardStatusChange((res) => {
// TODO
});
// 监听邀请人数的改变,该接口表示有新玩家通过分享进入了游戏
invitationSystem.onInvitationCountUpdate((res) => {
// TODO
});
...
// 该接口来获取邀请的所有玩家,可通过邀请时间来筛选出属于该活动邀请的
let playList = (await invitationSystem.getInvitedPlayers({})).invitedPlayers;
...
// 分享游戏时需要带上当前玩家的openId
shareButton.on("touchend", async () => {
const userInfo = await accountSystem.account;
mogs.shareAppMessage({
title: "快来和我一起战斗吧",
query: `inviterId=${userInfo.openId}`,
});
});
// 判断下链接,是否是点击的邀请链接进入的,是的话绑定一下
const query = mogs.getLaunchOptionsSync().query;
if (query.inviterId) {
invitationSystem.bindInviter({
openId: query.inviterId,
success() {
mogs.showToast({
icon: "none",
title: `成功绑定邀请玩家`,
});
},
fail() {
mogs.showToast({
icon: "none",
title: `绑定邀请玩家错误`,
});
},
});
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
TIP
更多邀请模块的api请参考邀请模块
# 快速邀请(主动邀请)
# 概述
有时候可能需要在小游戏中直接绘制好友列表,并对其中某些好友发起快速邀请,邀请后无需对方回应即可得到邀请奖励。下图是快速邀请好友并阶段性得到奖励的示例。
此时,需要使用邀请模块的快速邀请能力。本模块在此部分提供的能力有:
- 支持 1 个快速邀请活动同时开启,最多支持邀请 75 个好友
- 获取同玩好友能力
- 获取一定数量的未注册好友能力
- 可识别好友是否在本次活动中被邀请过
- 跟随配置智能清除上一阶段活动的邀请记录
本节将介绍如何使用邀请模块实现快速邀请功能。
# 注意事项
- 请先阅读文档 开放能力 - 关系链数据
- 如果您在 微信/QQ 平台下使用本模块,请确保用户的普通型托管数据至少还有 3个 key 的空间!如果空间不足会导致初始化失败,将不能正常使用 API! (如果您在项目中从未使用
setUserCloudStorage
API,请忽略此段) - 如果您使用游戏引擎,请先阅读该引擎接入开放数据域文档
# 在开放数据域中
# 初始化快速邀请
在调用接下来的 API 前,必须调用 invitationSystem.intializeQuickInvitation
初始化快速邀请。此步骤必须实现! 示例代码如下。
// 导入模块
import { invitationSystem } from "@timi/mogs-sdk-open";
// 假设 onStart 是一个生命周期方法
onStart() {
invitationSystem.intializeQuickInvitation();
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 渲染
渲染同玩好友或未注册好友列表,附带在本阶段中被邀请过信息。示例代码如下。
// 导入模块
import mogs, { invitationSystem } from "@timi/mogs-sdk-open";
async drawFriendList() {
// 获取好友列表
const invitationInfo = await invitationSystem.getFriendQuickInvitationInfo({
// 指定为同玩好友,若指定 invitationSystem.FriendType.PotentialFriend 则为未注册好友
friendType: invitationSystem.FriendType.RegisteredFriend,
});
invitationInfo.forEach((info) => {
// 假设有方法 renderPlayerInfo 用于渲染玩家信息
renderPlayerInfo({
openid: info.openid, // 用户 openid
avatarUrl: info.avatarUrl, // 用户头像地址
nickname: info.nickname, // 用户昵称
});
// 假设有方法 renderInviteButton 用于渲染邀请按钮
renderInviteButton({
isInvited: info.isInvited // 玩家是否被邀请过
});
});
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 快速邀请好友
针对某个好友,对其发起快速邀请。示例代码如下。
const invitationInfo = await invitationSystem.getFriendQuickInvitationInfo({
friendType: invitationSystem.FriendType.RegisteredFriend,
});
invitationInfo.forEach((info) => {
//...
renderInviteButton({
isInvited: info.isInvited,
// 邀请方法
inviteFunc: () => invitationSystem.quickInviteFriend({
openId: info.openid,
title: "分享标题",
}),
});
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 监听活动改变
可调用 onActivityChange
注册一个监听活动改变的事件的方法。调用 offActivityChange
可取消注册某一方法或全部方法。此处 "活动改变" 是指以下情形:
- 邀请活动开始了一个新的周目,原本邀请过的人可重新邀请
// 假设 onLoad 是一个生命周期方法
onLoad() {
// 假设 reRenderList 是一个重新渲染好友列表的方法
invitationSystem.onActivityChange(reRenderList);
}
// 假设 onDestroy 是一个生命周期方法
onDestroy() {
// 取消在活动改变时,执行 reRenderList
invitationSystem.offActivityChange(reRenderList);
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 在主域中
# 初始化快速邀请
主域调用 invitationSystem.intializeQuickInvitation
初始化快速邀请。此步骤必须实现,且必须要在开放数据域中的邀请模块调用 intializeQuickInvitation 后再执行。 示例代码如下。
import { invitationSystem } from "@timi/mogs-sdk";
// 假设 onStart 是一个生命周期方法
onStart() {
invitationSystem.intializeQuickInvitation();
}
1
2
3
4
5
6
2
3
4
5
6
# 其他
快速邀请中的 获取奖励物品列表、玩家获取奖励物品 等逻辑,与普通邀请逻辑基本一致,除了有以下不同:
- 不能 执行绑定邀请人相关逻辑,如调用函数
bindInviter
- 不能 执行查看邀请人相关逻辑,如调用函数
getInvitedPlayers