11/08/2024 16:35:55
群组模块
一、概述
MSDK群组模块,只有国内版本支持该模块功能。
支持的渠道有:
主要功能包括:
建群、加入现有群组、获取群状态、获取群关系、绑定群、解绑群、提醒会长绑群、获取会长的建群列表、发送群组消息。其中,QQ 渠道特有的功能有:绑定群、提醒会长绑群、获取会长的建群列表。后台方法详见 后台-群组 中的说明。
功能列表 | 客户端方法 | 后台方法 |
---|---|---|
建群 | CreateGroup(QQ、WeChat) | /v2/group/create_bind_group(QQ) |
加入现有群 | JoinGroup(QQ、WeChat) | /v2/group/join_group(QQ) |
获取群状态 | GetGroupState(QQ、WeChat) | /v2/group/get_group_info(QQ、WeChat) |
获取群关系 | GetGroupRelation(QQ、WeChat) | /v2/group/get_group_rela_info(QQ、WeChat) |
解绑群 | UnbindGroup(QQ、WeChat) | /v2/group/unbind_group(QQ、WeChat) |
绑定群 | BindGroup(QQ) | /v2/group/bind_existing_group(QQ) |
提醒会长建群 | RemindToBindGroup(QQ) | /v2/group/remind_leader_bind(QQ) |
获取会长的群列表 | GetGroupList(QQ) | /v2/group/get_group_list(QQ) |
发送群消息 | SendGroupMessage(QQ、WeChat) | /v2/group/send_group_msg(QQ) /v2/group/send_group_msg(WeChat) |
工会群的流程:
权限申请说明:
1.手Q:
登录 飞鹰系统(需内网访问,可以联系腾讯运营或者产品接口人协助申请)按照如下路径申请,路径:飞鹰左侧导航找到 “MSDK接入”—>“特殊权限申请”—>“手Q加绑群”,填写对应信息即可。
向手Q游戏中心对接人提绑群需求单,安排人力配置IDIP等事宜。
PS:每个游戏会有对应的接口人,负责该游戏的腾讯运营/产品接口人了解。未接入IDIP会返回 221008 错误码 。
2.微信:
联系 wxgame(微信游戏助手) 提供游戏名称及 AppID 即可申请开通。
手Q加绑群能力需要注意:
验证加绑群能力之前需要确保业务侧已完成 IDIP 接口开发(联系 IDIP助手 排期)及手Q加绑群平台侧查询IDIP接口开发完成。(目的:用于手Q加绑群平台侧查询玩家是否是公会成员/会长等信息。IDIP接口开发完成后联系 MSDK助手 对接。)
二、接入向导
2.1 注册回调
1)功能描述
接受MSDK群组模块的回调,游戏需要注册回调函数进行处理。
2)接口声明
/// <summary>
/// 群的回调接口
/// </summary>
public static event OnMSDKRetEventHandler<MSDKGroupRet> GroupRetEvent;
class MSDKGroupObserver
{
public:
// 群的回调接口
virtual void OnLoadGroupData(const MSDKGroupRet &groupRet) {};
};
3)示例代码
MSDKGroup.GroupRetEvent += OnGroupRetEvent;
public void OnGroupRetEvent(MSDKGroupRet groupRet)
{
string methodTag = "";
if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_CREATE) {
methodTag = "CreateGroup";
} else if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_BIND) {
methodTag = "BindGroup";
} else if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_GET_GROUP_LIST) {
methodTag = "GetGroupList";
} else if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_GET_GROUP_STATE) {
methodTag = "GetGroupState";
} else if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_JOIN) {
methodTag = "JoinGroup";
} else if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_UNBIND) {
methodTag = "UnbindGroup";
} else if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_REMIND_TO_BIND) {
methodTag = "RemindToBind";
} else if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_SEND_GROUP_MESSAGE) {
methodTag = "SendGroupMessage";
} else if (groupRet.MethodNameId == (int)MSDKMethodNameID.MSDK_GROUP_GET_GROUP_RELATION) {
methodTag = "GetGroupRelation";
}
SampleInstance.showRetDialog(methodTag, groupRet);
}
//销毁的时候需要移除监听
private void OnDestroy()
{
MSDKGroup.GroupRetEvent -= OnGroupRetEvent;
}
MSDKGroup::SetGroupObserver(new MyGroupObserver());
class MyGroupObserver : public MSDKGroupObserver
{
void OnLoadGroupData(const MSDKGroupRet &groupRet) {
handleCallBack(groupRet, groupRet.methodNameID);
}
}
4)数据结构
MSDKGroupRet 详解
继承自 MSDKBaseRet,包含基础的信息
成员变量名称 | 类型 | 说明 |
---|---|---|
Status | int | 状态码: 1.查询群用户和群的关系 a、Wechat 3:群成员; 4:非群成员; -1:查询失败 b、QQ 1:群主,2:管理员,3:普通成员,4:非成员 ,-1 查询错误; 2.查询工会是否绑定微信的群 0:未绑定、1:绑定了 |
GroupId | string | 1、QQ CreateGroup(创建群) 和 GroupState(查询工会是否绑定群时) 返回群号 2、WeChat时返回为空 |
GroupName | string | 1、QQ CreateGroup(创建群) 和 GroupState(查询工会是否绑定群时) 返回群名称 2、WeChat 返回为空 |
GroupOpenID | string | 1、QQ GetGroupState(获取群状态)时返回,用于发送群消息使用 2、WeChat 返回为空 |
GroupInfo | List |
工会信息列表,MSDKGroupInfo 的数据结构 1、QQ GetGroupList(查询用户创建的群列表时)返回用户创建的群列表 2、WeChat 返回为空 |
2.2 创建群
1)功能描述
① 微信端,工会会长创建微信群;
② 手Q端,工会会长创建手Q群;
返回信息及结果:
createGroup 的 retCode 为 0 表示创建群成功,在移动设备的手Q/微信,可以看到新建的群组信息。5.10及以上版本,优化了手Q建群的回调,可以通过 MSDKGroupRet 的 GroupId 和 GroupName 拿到新建群组的信息。
特别注意:
1、微信、QQ平台侧对同一账号加群数量有限制,超出限制后调用 MSDK 相关接口会报错;
2、公会 ID 建议随机性,勿递增或存在规律性。
2)接口声明
public static void CreateGroup(string unionID, string unionName = "", string roleName = "", string zoneID = "", string roleID = "", string extraJson = "")
static void CreateGroup(String unionID, String unionName ="", String roleName ="", String zoneID ="", String roleID = "", String extraJson= "");
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
unionID | string | 工会 ID。 手Q:字符串里需要使用数值,如:“123456”,限制长度 <= 20; 微信:暂无限制 |
unionName | string | 工会名称 |
roleName | string | 游戏中的角色名称 |
zoneID | string | 游戏区服 ID 手Q:字符串里需要使用数值,如:“5678” |
roleID | string | 游戏角色 ID |
extraJson | string | 扩展字段,默认为空。严格区分大小写,格式参考:{"areaID":"1","partitionID":"1","type":"1"} |
areaID | string | 游戏大区 ID,手Q要求,测试环境必需传入与 IDIP 约定的值,正式环境一般固定传入 2,也可以传入与 IDIP 约定的值。微信无需传入 areaID |
partitionID | string | 区服 ID,选填 |
type | string | 群类型,默认为 0(公会类型);当游戏内需要创建多种类型公会群时,联系手Q 游戏中心排期并由手Q 游戏中心提供具体值。选填 |
4)示例代码
if (_mCurLoginChannel.Equals("QQ")) {
string unionID = "1234";
string unionName = "unionName";
string roleName = "roleName";
string zoneID = "5678";
string roleID = "roleID";
string extraJson = "{\"areaID\":\"1\"}"; //areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup.CreateGroup(unionID, unionName, roleName, zoneID, roleID,extraJson);
} else if (_mCurLoginChannel.Equals("WeChat")) {
string unionID = "unionID";
string unionName = "unionName";
string roleName = "roleName";
MSDKGroup.CreateGroup(unionID, unionName, roleName);
}
if (mCurChannel == "QQ") {
string unionID = "1234";
string unionName = "unionName";
string roleName = "roleName";
string zoneID = "5678";
string roleID = "roleID";
string extraJson = "{\"areaID\":\"1\"}"; //areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup::CreateGroup(unionID, unionName, roleName, zoneID, roleID, extraJson);
} else if (mCurChannel == "WeChat") {
string unionID = "unionID";
string unionName = "unionName";
string roleName = "roleName";
MSDKGroup::CreateGroup(unionID, unionName, roleName);
}
2.3 加入群
1)功能描述
工会成员加入已存在的群。
① 微信端:加入微信群,MSDK V5.8及之前的版本只需要填写 unionID, MSDK V5.9 及以后版本支持加入工会群时通过扩展字段 nickName 设置昵称;
② 手Q端:加入QQ群,手Q因为可以加入多个群组,需要额外填写 groupID(手Q群号),及 zoneID,roleID,nickName(用户需保留创建群的信息);
返回信息及结果:
joinGroup 的 retCode 为 0 表示添加成功,手Q端/微信端可见显示已成功进入相应群组。
特别注意:
1、微信、QQ平台侧对同一账号加群数量有限制,超出限制后调用 MSDK 相关接口会报错。
2)接口声明
public static void JoinGroup(string unionID, string zoneID = "", string roleID = "", string groupID = "", string extraJson = "")
static void JoinGroup(String unionID, String zoneID = "", String roleID = "", String groupID = "", String extraJson = "");
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
unionID | string | 工会 ID。 手Q:字符串里需要使用数值,如:“123456”,限制长度 <= 20; 微信:暂无限制。 |
zoneID | string | 游戏区服 ID(如涉及跨服加入群,填写公会所在区服 ID) 手Q:字符串里需要使用数值,如:“5678”。 |
roleID | string | 游戏角色 ID |
groupID | string | 手Q群 ID |
extraJson | string | 扩展字段,默认为空。严格区分大小写,格式参考:{"areaID":"1","partitionID":"1","nickName":"test","userZoneID":"用户所在区服"} 其中 areaID,手Q要求,测试环境必需传入与 IDIP 约定的值,正式环境一般固定传入 2,也可以传入与 IDIP 约定的值。微信无需传入 areaID。userZoneID 是手Q要求,涉及跨服加入群必须传入 userZoneID,值填写用户所在区服。 |
4)示例代码
if (_mCurLoginChannel.Equals("QQ")) {
string unionID = "1234";
string zoneID = "5678";
string roleID = "roleID";
string groupID = "1234567890";
string extraJson = "{\"areaID\":\"1\"}"; //areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup.JoinGroup(unionID, zoneID, roleID, groupID, extraJson);
} else if (_mCurLoginChannel.Equals("WeChat")) {
string unionID = "unionID";
MSDKGroup::JoinGroup(unionID);
}
if (mCurChannel == "QQ") {
string groupID = "1234567890";
string unionID = "1234";
string zoneID = "5678";
string roleID = "roleID";
string extraJson = "{\"areaID\":\"1\"}"; //areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup::JoinGroup(unionID, zoneID, roleID, groupID, extraJson);
} else if (mCurChannel == "WeChat") {
string unionID = "unionID";
MSDKGroup::JoinGroup(unionID);
}
2.4 获取群状态
1)功能描述
查看工会绑群的状态。
① 微信端:只需要输入查询的工会信息 unionID;
② 手Q端:需要 unionID 和 zoneID,查询工会绑群状态信息;
返回信息及结果,可以获取 group_openid 用于发送群消息;
返回码中,Status:0 表示未绑定群组,1 表示工会已绑定群组。
2)接口声明
public static void GetGroupState(string unionID, string zoneID = "", string extraJson = "")
static void GetGroupState(String unionID, String zoneID = "", String extraJson = "") ;
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
unionID | string | 工会 ID。 手Q:字符串里需要使用数值,如:“123456”,限制长度 <= 20; 微信:暂无限制。 |
zoneID | string | 游戏区服 ID 手Q:字符串里需要使用数值,如:“5678”。 |
extraJson | string | 扩展字段,默认为空。严格区分大小写,格式参考:{"areaID":"1"} |
4)示例代码
if (_mCurLoginChannel.Equals("QQ")) {
string unionID = "1234";
string zoneID = "5678";
MSDKGroup.GetGroupState(unionID, zoneID);
} else if (_mCurLoginChannel.Equals("WeChat")) {
string unionID = "unionID";
MSDKGroup.GetGroupState(unionID);
}
if (mCurChannel == "QQ") {
string unionID = "1234";
string zoneID = "5678";
MSDKGroup::GetGroupState(unionID, zoneID);
} else if (mCurChannel == "WeChat") {
string unionID = "unionID";
MSDKGroup::GetGroupState(unionID);
}
2.5 获取群关系
1)功能描述
当工会已绑定群后,调用该接口查询用户与群关系信息,可返回用户与群的关系(群主、管理员、普通成员,非成员)信息。
① 微信端:输入查询的工会信息 unionID
② 手Q端:输入指定的 groupID
返回信息及结果如下:
渠道 | 返回值 |
---|---|
微信 | 3:群成员; 4:非群成员; -1:查询失败 |
1:群主; 2:管理员;3:普通成员;4:非成员;-1:查询错误 |
2)接口声明
public static void GetGroupRelation(string targetID, string extraJson = "")
static void GetGroupRelation(String targetID, String extraJson = "");
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
targetID | string | 微信时填写工会 unionID,手Q时填写群号 groupID |
extraJson | string | 扩展字段,默认为空。严格区分大小写,格式参考:{"areaID":"1"} |
4)示例代码
if (_mCurLoginChannel.Equals("QQ")) {
string groupID = "1234567890";
MSDKGroup.getGroupRelation(groupID);
} else if (_mCurLoginChannel.Equals("WeChat")) {
string unionID = "WeChatunionID";
MSDKGroup.GetGroupRelation(unionID);
}
if (mCurChannel == "QQ") {
string groupID = "1234567890";
MSDKGroup::GetGroupRelation(groupID);
} else if (mCurChannel == "WeChat") {
string unionID = "WeChatUnionID";
MSDKGroup::GetGroupRelation(unionID);
}
2.6 解绑群
1)功能描述
解除绑定所在的群组。
① 微信端:只需要输入 unionID;
② 手Q端:依次输入之前记录的 unionID,unionName 及 zoneID,roleID;
返回信息及结果:
返回解绑成功信息返回码,通过查询 getGroupState,如果返回用户所在工会未绑定群组,则可验证用户解绑群组成功。
2)接口声明
public static void UnbindGroup(string unionID, string unionName = "", string zoneID = "", string roleID = "", string extraJson = "")
static void UnbindGroup(String unionID, String unionName = "", String zoneID = "", String roleID = "", String extraJson = "");
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
unionID | string | 工会 ID。 手Q:字符串里需要使用数值,如:“123456”,限制长度 <= 20; 微信:暂无限制。 |
unionName | string | 工会名称 ID |
zoneID | string | 游戏区服 ID 手Q:字符串里需要使用数值,如:“5678”。 |
roleID | string | 游戏角色 ID |
extraJson | string | 扩展字段,默认为空。严格区分大小写,格式参考:{"areaID":"1"} 其中 areaID,手Q要求,测试环境必需传入与 IDIP 约定的值,正式环境一般固定传入 2,也可以传入与 IDIP 约定的值。微信无需传入 areaID。 |
4)示例代码
if (_mCurLoginChannel.Equals("QQ")) {
string unionID = "1234";
string unionName = "unionName";
string zoneID = "5678";
string roleID = "roleID";
string extraJson = "{\"areaID\":\"1\"}";//areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup.UnbindGroup(unionID, unionName, zoneID, roleID,extraJson);
} else if (_mCurLoginChannel.Equals("WeChat")) {
string unionID = "unionID";
MSDKGroup.UnbindGroup(unionID);
}
if (mCurChannel == "QQ") {
string unionID = "1234";
string unionName = "unionName";
string zoneID = "5678";
string roleID = "roleID";
string extraJson = "{\"areaID\":\"1\"}";//areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup::UnbindGroup(unionID, unionName , zoneID , roleID, extraJson);
} else if (mCurChannel == "WeChat") {
string unionID = "unionID";
MSDKGroup::UnbindGroup(unionID);
}
2.7 提醒会长绑群(仅支持QQ渠道)
1)功能描述
当工会未绑群时,会员可提醒会长绑群。把工会绑定到已创建的 QQ 群,通过公众号“QQ手游”接收通知,频率限制每天只收到一条。校验提醒者和被提醒者必须为工会成员,游戏方来保证被提醒人为工会会长。
2)接口声明
public static void RemindToBindGroup(string unionID, string zoneID, string roleID, string roleName, string leaderOpenID, string leaderRoleID, string extraJson = "")
static void RemindToBindGroup(String unionID, String zoneID, String roleID, String roleName, String leaderOpenID, String leaderRoleID, String extraJson = "");
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
unionID | string | 工会 ID。 手Q:字符串里需要使用数值,如:“123456”,限制长度 <= 20; 微信:暂无限制。 |
zoneID | string | 游戏区服 ID 手Q:字符串里需要使用数值,如:“5678”。 |
roleID | string | 游戏角色 ID |
roleName | string | 游戏角色名称 |
leaderOpenID | string | 会长 openID |
leaderRoleID | string | 会长角色 ID |
extraJson | string | 扩展字段,默认为空。严格区分大小写,格式参考:{"areaID":"1"} 其中 areaID,手Q要求,测试环境必需传入与 IDIP 约定的值,正式环境一般固定传入 2,也可以传入与 IDIP 约定的值。微信无需传入 areaID。 |
4)示例代码
string unionID = "1234";
string zoneID = "5678";
string roleID = "roleID";
string roleName = "roleName";
string leaderOpenID = "leaderOpenID";
string leaderRoleID = "leaderRoleID";
string extraJson = "{\"areaID\":\"1\"}";//areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup.RemindToBindGroup(unionID, zoneID, roleID, roleName, leaderOpenID, leaderRoleID extraJson);
string unionID = "1234";
string zoneID = "5678";
string roleID = "roleID";
string roleName = "roleName";
string leaderRoleID = "leaderRoleID";
string leaderOpenID = "leaderOpenID";
string extraJson = "{\"areaID\":\"1\"}";//areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup::RemindToBindGroup(unionID, zoneID, roleID, roleName, leaderOpenID, leaderRoleID, extraJson);
2.8 绑定群(仅支持QQ渠道)
1)功能描述
手Q端,会长绑定已存在的 QQ 群组,调用该接口前需要先调用 GetGroupList() 接口拉取已创建的群列表。
返回信息及结果:
返回绑定成功的返回值信息,通过调用 getGroupState,可见已绑定到群组,实现验证。
2)接口声明
public static void BindGroup(string unionID, string zoneID, string roleID, string groupID, string groupName, string extraJson = "")
static void BindGroup(String unionID, String zoneID, String roleID, String groupID, String groupName, String extraJson = "");
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
unionID | string | 工会 ID。 手Q:字符串里需要使用数值,如:“123456”,限制长度 <= 20; 微信:暂无限制。 |
zoneID | string | 游戏区服 ID 手Q:字符串里需要使用数值,如:“5678”。 |
roleID | string | 游戏角色 ID |
groupID | string | 手Q群号,创建群时获得 |
groupName | string | 手Q群名,创建群时获得 |
extraJson | string | 扩展字段,默认为空。严格区分大小写,格式参考:{"areaID":"1"} 其中 areaID,手Q要求,测试环境必需传入与 IDIP 约定的值,正式环境一般固定传入 2,也可以传入与 IDIP 约定的值。微信无需传入 areaID。 |
4)示例代码
string unionID = "1234";
string zoneID = "5678";
string roleID = "roleID";
string groupID = "1234567890";
string groupName = "groupName";
string extraJson = "{\"areaID\":\"1\"}"; //areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup.BindGroup(unionID, zoneID, roleID, groupID, groupName, extraJson);
string groupID = "1234567890";
string groupName = "groupName";
string unionID = "1234";
string zoneID = "5678";
string roleID = "roleID";
string extraJson = "{\"areaID\":\"1\"}"; //areaID必填;测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值
MSDKGroup::UnbindGroup(unionID, zoneID, roleID, groupID, groupName, extraJson);
2.9 获取会长的建群列表(QQ渠道独有)
1)功能描述
手Q端,查看会长已经拥有的群组列表。
返回信息:
返回值中的 GroupInfo 记录会长拥有的群组列表,其中每一群组记录包含群组的 groupID 和 groupName 。
2)接口声明
public static void GetGroupList()
static void GetGroupList();
3)示例代码
MSDKGroup.GetGroupList();
MSDKGroup::GetGroupList();
4)数据结构
MSDKGroupInfo 详解
成员变量名称 | 类型 | 说明 |
---|---|---|
GroupId | string | 必填,群id |
GroupName | string | 必填,群名称 |
ExtraJson | string | 选填,扩展字段,其他的群信息 |
2.10 发送群组消息
1)功能描述
微信/QQ端,发送消息到群聊。发送信息成功,微信/QQ端可见消息记录。单个用户在同一个群,一天最多100条。
2)接口声明
public static void SendGroupMessage(MSDKGroupMessage groupMessage, string ID)
static void SendGroupMessage(const MSDKGroupMessage &groupMessage, String ID);
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
groupMessage | MSDKGroupMessage | 群消息 |
ID | string | QQ渠道:分享指定群的 group_openid WeChat渠道:分享指定群的工会 ID |
MSDKGroupMessage 详解
1.QQ渠道
参数名 | 类型 | 说明 |
---|---|---|
Title | string | 必填,分享的标题 |
Desc | string | 选填,分享的内容 |
Link | string | 必填,对应 redirect_url 回调地址 (第三方应用在上架时配置的回调地址,即:申请手Q群能力权限时填写的 “回调地址” ,不得填写其它域名地址) |
ExtraJson | string | 必填,扩展字段,透传 imageUrl、param字段 |
imageUrl | string | 必填,消息左侧缩略图 URL |
param | string | 选填,redirect_url 的输入参数,第三方可根据此参数来跳转到不同详情页(默认可传空"") |
2.WeChat渠道
参数名 | 类型 | 说明 |
---|---|---|
Type | int | 必填,消息类型,1:应用邀请 2:链接分享 |
Title | string | 必填,分享的标题 |
Desc | string | 选填,分享的内容 |
Link | string | 选填,跳转 URL,当Type = 2 时为必填 |
ActionReport | int | 必填,分享类型,邀请1,炫耀2,赠送3,索要4 |
ExtraJson | string | 选填,扩展字段,透传 messageExt、 mediaTagName 字段 |
messageExt | string | 选填,分享消息的额外字段 |
mediaTagName | string | 选填,区分游戏消息类型,用于数据统计 |
4)示例代码
1.QQ渠道
MSDKGroupMessage info = new MSDKGroupMessage();
info.Title = "title";
info.Link = "http://www.qq.com";
info.Desc = "desc";
info.ExtraJson = "{\"imageUrl\": \"https://avatars0.githubusercontent.com/u/3755338?s=460&v=4\",\"param\": \"11\"}";
string ID = "group_openid";
MSDKGroup.SendGroupMessage(info, ID);
MSDKGroupMessage groupMessage;
groupMessage.Title = "title";
groupMessage.Link = "http://www.qq.com";
groupMessage.Desc = "desc";
groupMessage.ExtraJson = "{\"imageUrl\": \"https://avatars0.githubusercontent.com/u/3755338?s=460&v=4\",\"param\": \"11\"}";
string ID = "group_openid";
MSDKGroup::SendGroupMessage(groupMessage, ID);
2.WeChat渠道
MSDKGroupMessage info = new MSDKGroupMessage();
info.Title = "title";
info.Link = "https://game.weixin.qq.com/cgi-bin/act?noticeid=90103953&actid=7006&k=Q6EgQ_8DgubBRXGb1vmTBw&q=0&jsapi_ticket=1&hongbaoid=8CF558E6633CCB020796260075B95465#wechat_redirect";
info.Desc = "desc";
info.Type = 1;
info.ActionReport = 1;
info.ExtraJson = "{\"messageExt\": \"test1\",\"mediaTagName \": \"test2\"}";
string ID = "工会ID";
MSDKGroup.SendGroupMessage(info, ID);
MSDKGroupMessage groupMessage;
groupMessage.Title = "title";
groupMessage.Link = "https://game.weixin.qq.com/cgi-bin/act?noticeid=90103953&actid=7006&k=Q6EgQ_8DgubBRXGb1vmTBw&q=0&jsapi_ticket=1&hongbaoid=8CF558E6633CCB020796260075B95465#wechat_redirect";
groupMessage.Desc = "desc";
groupMessage.Type = 1;
groupMessage.ActionReport = 1;
groupMessage.ExtraJson = "{\"messageExt\": \"test1\",\"mediaTagName \": \"test2\"}";
string ID = "工会ID";
MSDKGroup::SendGroupMessage(groupMessage, ID);
三、常见问题
3.1 MSDKUnionInfo 详解
成员变量名称 | 类型 | 说明 |
---|---|---|
unionID | string | 必填,公会 id |
unionName | string | 选填,公会名称 |
zoneID | string | 选填,公会区服 id |
userZoneID | string | 选填,用户区服 id,与公会区服一样时可不填。因为会长可能转让给非本区服的人,所以公会区服不一定是用户区服 |
roleID | string | 选填,角色 id |
roleName | string | 选填,角色名称,作为群昵称显示 |
leaderID | string | 选填,公会会长的 openid |
leaderRoleID | string | 选填,公会会长的角色 id |
leaderZoneID | string | 选填,会长区服信息,与公会区服一样时可不填。会长可能转让给非本区服的人 |
type | string | 选填,0公会(或不填),1队伍,2赛事 |
areaID | string | 选填,游戏大区ID,测试环境使用,理论上只有1:QQ,2:微信,但是测试环境有很多虚拟的 |
partitionID | string | 选填,小区服 id,暂时无用 |
nickName | string | 选填,玩家昵称 |
extraJson | string | 选填,扩展字段 |
3.2 手Q加绑群能力注意事项
(1)一个公会 ID 只能和一个 QQ 群进行绑定;
(2)手Q加绑群能力平台侧以 AppID+公会区服ID+公会ID 作为唯一标识。如果游戏侧有合服需求,则要注意合服后的逻辑处理,即合服前玩家区服ID和合服后区服ID的映射处理;假如合服前是在 101 区创建了公会,以后不管用户在哪个区,都要传 101 这个区ID;
(3)如果用户解散了公会 QQ 群,公会和公会 QQ群 不会自动解绑。可以通过以下方法取消绑定关系,如果没有进行过以下任意一种操作时,则绑定关系不会自动消失:
- 会长调用解绑接口解散群关系;
- 当公会成员调用加群接口时,此时是查询不到群ID的,则会默认进行解绑;
(4)会长转让后,新会长也可以进行解绑操作;
(5)需要在 extraJson 字段中传入 areaID,严格区分大小写,测试环境传入与IDIP约定的值即可,正式环境一般固定传入2,也可以传入与IDIP约定的值;
3.3 错误码
(1)QQ 群组功能返回码;
(2)微信群组功能返回码。
All rights reserved.