개요
MSDK 그룹 기능 호출을 통해, 게임 내 방파의 리더 플레이어가 방파를 채팅 그룹과 결합할 수 있습니다. 결합이 해제된 채팅 그룹은 일반 플레이어가 방파의 채팅 그룹에 참가할 수 있으므로, 손쉽게 게임 플레이어 그룹의 상호 작용 환경을 개선할 수 있으며, 플레이어 활약도 및 밀착도 모두를 높일 수 있습니다. 현재 채팅 그룹은 QQ 그룹 및 위챗 그룹이 지원되며, 각 방파 당 최대 1개의 QQ 그룹과 1개의 위챗 그룹을 결합할 수 있습니다.
QQ그룹 결합:
QQ그룹 참가:
QQ그룹 결합 해제:
위챗 그룹 결합:
위챗 그룹 참가:
액세스 내비게이션
1 사전 요구 사항
1) 이미 MSDK 액세스 설정 모듈 설명에 따라 액세스 설정
2) 이미 MSDK 액세스 로그인 모듈 설명에 따라 액세스 로그인
2 그룹 등록 기능 콜백
1) 기능 설명
그룹 정보 호출 결과 확인은 이 콜백 비동기를 통해 게임에 통지할 수 있으며, 모바일QQ와 위챗 그룹 기능은 함께 이 콜백을 이용합니다.
2) 인터페이스 선언
public static void WGSetGroupObserver(WGGroupObserver Observer)
3) 파라미터 명칭
파라미터 명칭 | 유형 | 설명 |
---|---|---|
Observer | WGGroupObserver 카테고리 | 그룹 기능 정보 유형의 구체적인 구성원은 점프해 확인하십시오. |
4) 반환값
없음
5) 예시 코드
WGPlatform.WGSetGroupObserver(new MsdkGroupCallback());
class MsdkGroupCallback implements WGGroupObserver {
@Override
public void OnQueryGroupInfoNotify(GroupRet groupRet) {
//TODO GAME 그룹 정보 검색 콜백 추가
Logger.d("flag:"+ groupRet.flag + ";errorCode:"+ groupRet.errorCode + ";desc:" + groupRet.desc);
if(EPlatform.ePlatform_Weixin.val() == groupRet.platform){
//TODO GAME 위챗 그룹 정보 검색 콜백
if(CallbackFlag.eFlag_Succ == groupRet.flag){
MsdkCallback.sendResult("검색 성공, 목록 내 이하 구성원이 이미 그룹에 존재함: "+groupRet.getWXGroupInfo().openIdList);
}else{
handleWXGroupNotifyErrorCode(groupRet);
}
}else if(EPlatform.ePlatform_QQ.val() == groupRet.platform){
//TODO GAME QQ 그룹 정보 검색 콜백
if(CallbackFlag.eFlag_Succ == groupRet.flag){
//게임에서 회장 길드 인터페이스에 결합 해제 버튼을 표시하며, 길드 회장이 아닌 경우에는 QQ 그룹 진입 버튼을 표시함
MsdkCallback.sendResult("검색 성공.\ n 그룹 닉네임: "+groupRet.getQQGroupInfo().groupName
+"\n 그룹 openID:"+groupRet.getQQGroupInfo().groupOpenid
+"\n 추가 그룹 Key: "+groupRet.getQQGroupInfo().groupKey);
}else{
if(2002 == groupRet.errorCode){
//게임에서 회장 길드 인터페이스에 결합 버튼을 표시하며, 길드 회장이 아닌 경우에는 아직 결합되어 있지 않은 것으로 표시함
MsdkCallback.sendResult("검색 실패. 현재 길드에 결합 기록이 없습니다!") ;
}else if(2003 == groupRet.errorCode){
//게임에서 사용자 길드 인터페이스에 그룹 가입 버튼 표시 가능
MsdkCallback.sendResult("검색 실패. 현재 사용자가 아직 QQ 그룹에 가입되어 있지 않습니다. 먼저 QQ 그룹에 가입하십시오!") ;
}else if(2007 == groupRet.errorCode){
//게임에서 사용자 길드 인터페이스에 그룹 가입 버튼 표시 가능
MsdkCallback.sendResult("검색 실패. QQ 그룹이 이미 해산되었거나 존재하지 않습니다!") ;
}else{
//게임에서 사용자 재시도를 안내할 수 있음
MsdkCallback.sendResult("검색 실패. 시스템 오류입니다. 재시도하십시오!") ;
}
}
}else{
Logger.d("검색 실패. 플랫폼 오류입니다. 재시도하십시오!") ;
MsdkCallback.sendResult("검색 실패. 플랫폼 ㅇ류입니다. 재시도하십시오!!") ;
}
}
@Override
public void OnBindGroupNotify(GroupRet groupRet) {
//TODO GAME 결합 QQ 그룹 콜백 추가
Logger.d("flag:"+ groupRet.flag + ";errorCode:"+ groupRet.errorCode + ";desc:" + groupRet.desc);
if(CallbackFlag.eFlag_Succ == groupRet.flag){
//게임에서 결합된 길드 관련 정보를 검색할 수 있습니다.
//현재 모바일QQ의 SDK에서 지원하지 않으므로, 결합 성공 여부에 상관 없이 MSDK는 게임에 하나의 성공 콜백을 제공할 수 있으며, 게임에서 콜백 수신 후에 검색 인터페이스를 호출해 결합 성공 여뷰를 확인할 수 있음
MsdkCallback.sendResult("결합 성공.") ;
}else{
//게임에서 사용자 재시도를 안내할 수 있음
MsdkCallback.sendResult("결합 실패. 시스템 오류입니다. 재시도하십시오!") ;
}
}
// 주의: 3.17.1a 이상 버전의 경우, 위챗 그룹 결합 콜백을 OnUnbindGroupNotify에 통합
@Override
public void OnUnbindGroupNotify(GroupRet groupRet) {
//TODO GAME QQ 그룹 결합 해제 콜백 추가
Logger.d("flag:"+ groupRet.flag + ";errorCode:"+ groupRet.errorCode + ";desc:" + groupRet.desc);
if(groupRet.platform == WeGame.WXPLATID){//주의: 2.17.1a 이상 버전의 경우 위챗 그룹 결합 해제 콜백을 통합
if(CallbackFlag.eFlag_Succ == groupRet.flag){
//결합 해제 성공. 게임에서 사용자에게 결합 해제 성공을 알리고 길드 회장 인터페이스에 그룹 결합 버튼을 표시하며, 회장 아닌 경우에는 인터페이스에 아직 결합되지 않았음을 알리는 버튼이 표시됨
MsdkCallback.sendResult("위챗 그룹 결합 해제 성공.") ;
}else{
MsdkCallback.sendResult("결합 해제 실패!") ;
}
}else{ // 모바일QQ 그룹
if(CallbackFlag.eFlag_Succ == groupRet.flag){
//그룹 해제 성공. 게임에서 사용자 그룹 해제 성공을 표시하고 길드 회장 인터페이스에 그룹 결합 버튼을 표시하며, 회장 아닌 경우에는 인터페이스에 아직 결합되지 않았음을 알리는 버튼이 표시됨
MsdkCallback.sendResult("QQQ 그룹 해제 성공.") ;
}else{
if(2001 == groupRet.errorCode){
//그룹 해제용 그룹 openID에 그룹 결합 기록이 없으며, 게임에서 검색 인터페이스를 다시 호출해 결합 상태를 확인함
MsdkCallback.sendResult("결합 해제 실패. 현재 QQ 그룹에 결합 기록이 없습니다!") ;
}else if(2003 == groupRet.errorCode){
//사용자 상태 기한 만료. 재로그인
MsdkCallback.sendResult("결합 해제 실패. 사용자 로그인 상태 기한 만료입니다. 재로그인하십시오!") ;
}else if(2004 == groupRet.errorCode){
//조작 횟수 과다. 사용자에게 잠시 후 재시도하도록 함
MsdkCallback.sendResult("결합 해제 실패. 조작 횟수가 너무 많습니다. 사용자에게 잠시 후 재시도하게 하십시오!") ;
}else{
if(2005 == groupRet.errorCode){
//그룹 해제 파라미터 오류. 게임에서 검색 인터페이스를 다시 호출해 결합 상태를 확인함
MsdkCallback.sendResult("결합 해제 실패. 그룹 해제 파라미터 조작 오류입니다!") ;
}else{
//게임에서 사용자 재시도를 안내할 수 있음
MsdkCallback.sendResult("결합 해제 실패. 시스템 오류입니다. 재시도하십시오!") ;
}
}
}
}
@Override
public void OnQueryQQGroupKeyNotify(GroupRet groupRet) {
//TODO GAME QQ 그룹 정보 검색 콜백 추가
Logger.d("flag:"+ groupRet.flag + ";errorCode:"+ groupRet.errorCode + ";desc:" + groupRet.desc);
if(CallbackFlag.eFlag_Succ == groupRet.flag){
//그룹 가입용 key 획득 성공. key를 사용해 QQ 그룹 가입 가능
MsdkCallback.sendResult("검색 성공.\ n 그룹 가입 Key: "+groupRet.getQQGroupInfo().groupKey);
}else{
//게임에서 사용자 재시도를 안내할 수 있음
MsdkCallback.sendResult("검색 실패. 재시도하십시오!") ;
}
}
@Override
public void OnQueryWXGroupKeyNotify(GroupRet groupRet) {
//TODO GAME 위챗 그룹 정보 검색 콜백 추가
Logger.d("flag:"+ groupRet.flag + ";errorCode:"+ groupRet.errorCode + ";desc:" + groupRet.desc);
if(CallbackFlag.eFlag_Succ == groupRet.flag){
MsdkCallback.sendResult("그룹 가입 성공.\ ;
}else{
handleWXGroupNotifyErrorCode(groupRet);
}
}
@Override
public void OnCreateWXGroupNotify(GroupRet groupRet) {
//TODO GAME 위챗 그룹 생성 정보 검색 콜백 추가
Logger.d("flag:"+ groupRet.flag + ";errorCode:"+ groupRet.errorCode + ";desc:" + groupRet.desc);
if(CallbackFlag.eFlag_Succ == groupRet.flag){
MsdkCallback.sendResult("그룹 생성 성공.\ ;
}else{
handleWXGroupNotifyErrorCode(groupRet);
}
}
//주의사항: 해당(위챗 그룹 상태 검색) 콜백은 msdk2.17.1a 이상 버전에만 있음
@Override
public void OnQueryWXGroupStatusNotify(GroupRet groupRet) {
Logger.d(groupRet.toString());
if(CallbackFlag.eFlag_Succ == groupRet.flag){
WXGroupInfo wxgroupInfo = groupRet.getWXGroupInfo();
Logger.d("검색 성공")
if(wxgroupInfo.status == 0){//0 생성했거나 가입한 그룹이 없음을 나타냄
Logger.d("생성했거나 가입한 그룹 없음")
}elseif(wxgroupInfo.status == 1){//그룹을 생성했거나 가입했음을 나타냄
Logger.d("이미 그룹을 생성했거나 가입했음")
}
}else{
Logger.d("검색 실패")
}
}
public void handleWXGroupNotifyErrorCode(GroupRet groupRet){
if(CallbackFlag.eFlag_Succ != groupRet.flag){
switch (groupRet.errorCode) {
case CallbackFlag.eFlag_WX_UserCancel:
MsdkCallback.sendResult("사용자 취소");
break;
case CallbackFlag.eFlag_WX_Group_IDHadCreatedToday:
MsdkCallback.sendResult("오늘은 이미 그룹을 만들었음. 매일 각 ID 당 1회에 한해 그룹 채팅 생성 가능");
break;
case CallbackFlag.eFlag_WX_Group_JoinAmountBeyond:
MsdkCallback.sendResult("가입 그룹 수 제한 초과. 매일 각 ID 당 2개까지 그룹 가입 가능");
break;
case CallbackFlag.eFlag_WX_Group_HasNoAuthority:
MsdkCallback.sendResult("게임에 그룹 생성 권한 없음");
break;
case CallbackFlag.eFlag_WX_Group_AmountBeyond:
MsdkCallback.sendResult("그룹 생성 또는 결합 해제 그룹 수 제한 초과. 사용자의 그룹 생성, 또는 그룹 결합 해제는 5개를 초과할 수 없습니다.");
break;
case CallbackFlag.eFlag_WX_Group_HadExist:
MsdkCallback.sendResult("위챗 그룹 이미 존재함");
break;
case CallbackFlag.eFlag_WX_Group_IDNotExist:
MsdkCallback.sendResult("그룹 ID가 존재하지 않음");
break;
case CallbackFlag.eFlag_WX_Group_ParameterError:
MsdkCallback.sendResult("파라미터 검사 오류");
break;
case CallbackFlag.eFlag_Error:
MsdkCallback.sendResult("알 수 없는 오류. 위챗 오류 코드 참조");
break;
default:
MsdkCallback.sendResult("시스템 오류. ("+groupRet.errorCode+"), 재시도하십시오.");
break;
}
}
}
6) 특수 설명
없음
7) 명칭 해석
모바일QQ 그룹 기능
1 개요 설명
귀하는 권장 절차에 따라 모바일QQ 기능 인터페이스를 호출해 모바일QQ 그룹 기능에 액세스할 수 있습니다.
2 콜백
모바일QQ 그룹 기능 새 버전 V2(3.2.5a 이상 버전)
1 개요 설명
모바일QQ 새 버전은, 이전 버전의 복잡한 그룹 결합 절차를 간소화했습니다.
2 콜백
1) 기능 설명
그룹 정보 호출 결과 확인은 이 콜백 비동기를 통해 게임에 통지할 수 있으며, 모바일QQ와 위챗 그룹 기능은 함께 이 콜백을 이용합니다.
2) 인터페이스 선언
public static void WGSetGroupObserver(WGGroupObserver Observer)
3) 파라미터 명칭
파라미터 명칭 | 유형 | 설명 |
---|---|---|
Observer | WGGroupObserver 카테고리 | 그룹 기능 정보 유형의 구체적인 구성원은 점프해 확인하십시오. |
4) 반환값
없음
5) 예시 코드
class MsdkGroupCallbackV2 implements WGGroupObserver {
@Override
public void OnCreateGroupV2Notify(GroupRet groupRet) {
// v2의 모바일QQ 그룹 생성 콜백, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//콜백 생성 처리 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
Vector<QQGroup> qqGroups = groupRet.mQQGroupInfoV2.qqGroups;
if(qqGroups != null && qqGroups.size() > 0){
QQGroup qqGroup = qqGroups.get(0);
String groupId = qqGroup.groupId; // 그룹 id
String groupName = qqGroup.groupName; // 그룹 이름
}
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnJoinGroupV2Notify(GroupRet groupRet) {
// v2의 모바일QQ 그룹 가입 콜백, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//그룹 가입 콜백 처리 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
// 그룹 가입 성공
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnQueryGroupInfoV2Notify(GroupRet groupRet) {
// v2의 모바일QQ 그룹과 관련된 콜백 검색, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//모바일QQ 그룹과 관련된 콜백 처리 검색 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
//사용자와 그룹 사이의 관계, 1: 그룹 주인, 2: 관리자, 3: 일반 구성원, 4: 비 구성원, -1 검색 오류
int relation = groupRet.mQQGroupInfoV2.relation;
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnUnbindGroupV2Notify(GroupRet groupRet) {
// v2의 모바일QQ 그룹 결합 해제 콜백, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//모바일QQ 그룹 결합 해제 콜백 처리 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
Vector<QQGroup> qqGroups = groupRet.mQQGroupInfoV2.qqGroups;
if(qqGroups != null && qqGroups.size() > 0){
QQGroup qqGroup = qqGroups.get(0);
String groupId = qqGroup.groupId; // 그룹 결합 해제 id(결합 해제는 그룹 id만 반환)
}
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnGetGroupCodeV2Notify(GroupRet groupRet) {
// v2 길드 결합 그룹 번호 획득 콜백, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//길드 결합 그룹 번호 획득 콜백 처리 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
Vector<QQGroup> qqGroups = groupRet.mQQGroupInfoV2.qqGroups;
if(qqGroups != null && qqGroups.size() > 0){
QQGroup qqGroup = qqGroups.get(0);
String groupId = qqGroup.groupId; // 그룹 id
String groupName = qqGroup.groupName; // 그룹 이름
}
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnQueryBindGuildV2Notify(GroupRet groupRet) {
// v2의 결합된 길드 검색 콜백, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//결합된 길드 검색 콜밸 처리 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
String guildId = groupRet.mQQGroupInfoV2.guildId;
String guildName = groupRet.mQQGroupInfoV2.guildName;
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnBindExistGroupV2Notify(GroupRet groupRet) {
// v2의 기존 모바일QQ 그룹 결합 콜백, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//기존 모바일QQ 그룹 결합 콜백 처리 검색 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
Vector<QQGroup> qqGroups = groupRet.mQQGroupInfoV2.qqGroups;
if(qqGroups != null && qqGroups.size() > 0){
QQGroup qqGroup = qqGroups.get(0);
String groupId = qqGroup.groupId; // 그룹 id
String groupName = qqGroup.groupName; // 그룹 이름
}
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnGetGroupListV2Notify(GroupRet groupRet) {
// v2의 생성된 모바일QQ 그룹 목록 획득 콜백, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//생성된 모바일QQ 그룹 목록 획득 콜백 처리 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
Vector<QQGroup> qqGroups = groupRet.mQQGroupInfoV2.qqGroups;
if(qqGroups != null && qqGroups.size() > 0){
QQGroup qqGroup : qqGroups){
String groupId = qqGroup.groupId; // 그룹 id
String groupName = qqGroup.groupName; // 그룹 이름
}
}
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnRemindGuildLeaderV2Notify(GroupRet groupRet) {
// v2의 길드 회장 그룹 결합 알림 콜백, v2의 그룹 인터페이스 콜백 정보는 모두 mQQGroupInfoV2 안에 있음
//길드 회장 그룹 결합 알림 콜백 처리 예시:
/*if(groupRet.flag == CallbackFlag.eFlag_Succ){
// 알림 성공
}else{
int errorCode = groupRet.errorCode;
// errorCode에 따라 처리 실시
}*/
}
@Override
public void OnQueryGroupInfoNotify(GroupRet groupRet) {
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
@Override
public void OnBindGroupNotify(GroupRet groupRet) {
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
@Override
public void OnUnbindGroupNotify(GroupRet groupRet) {
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
@Override
public void OnQueryQQGroupKeyNotify(GroupRet groupRet) {
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
@Override
public void OnJoinQQGroupNotify(GroupRet groupRet) {
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
@Override
public void OnJoinWXGroupNotify(GroupRet groupRet) {
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
@Override
public void OnCreateWXGroupNotify(GroupRet groupRet) {
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
public void handleWXGroupNotifyErrorCode(GroupRet groupRet){
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
@Override
public void OnQueryWXGroupStatusNotify(GroupRet groupRet) {
// v1그룹 인터페이스 콜백 처리는 v1 콜백을 참조
}
}
6) 특수 설명
msdk3.2 이후의 모든 v2 버전의 그룹 인터페이스는 새로운 v2 그룹 콜백을 사용합니다.
7) 명칭 해석
1 QQ 그룹 생성 인터페이스 호출(v2)
1) 기능 설명
QQ그룹을 생성하며, 그 결과는 WGGroupObserver의 OnCreateGroupV2Notify 를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
void WGPlatform::WGCreateQQGroupV2(GameGuild gameGuild)
3) 파라미터 설명
GameGuild: 설정 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
guildId | String | (필수 입력)길드 id;문자열(스트링)은 숫자를 적용해야 함. 예를 들면 “123456”. |
guildName | String | (필수 입력)길드 명칭 |
zoneId | String | (필수 입력) 서버그룹 id |
roleId | String | (필수 입력) 캐릭터 id |
partition | String | (선택 입력) 구역 서비스 id (소형 구역)은, 입력하지 않아도 되며, 현재 이용되지 않습니다. |
userZoneId | String | (선택 입력) 사용자의 구역 서비스 ID는, 회장이 해당 구역에 속하지 않은 사람에게 양도할 수 있으므로, 길드 구역 서비스가 반드시 사용자 구역 서비스인 것은 아닙니다. |
userLabel | String | (선택 입력) 그룹 명함을 수정하고 수정하지 않은 그룹 명함을 입력하지 않으며, 규칙은 "[YYYY] zzzz”이며 YYYY는 사용자의 게임 내 닉네임입니다. |
nickName | String | (선택 입력) 사용자 닉네임 |
type | String | (선택 입력) "0” 길드(기본값), "1” 팀, "2” 이벤트 |
areaId | String | (선택 입력) 게임 대형 구역 ID, "1” qq(기본값), "2” 위챗(선택 입력) |
4) 반환값
없으며, 결과는 WGGroupObserver의 OnCreateGroupV2Notify 를 통해 게임에 콜백합니다.
5) 예시 코드:
GameGuild gameGuild = new GameGuild();
gameGuild.guildName = "msdk"
gameGuild.guildId = "100703379";
gameGuild.roleId = "징징";
gameGuild.partition = "10"
gameGuild.zoneId = "100";
WGPlatform::GetInstance()->WGCreateQQGroupV2(gameGuild);
6) 특수 설명
파라미터 설명에 따라 적절한 비율로 파라미터를 입력하고 선택 입력 파라미터는 필요에 따라 입력합니다.
7) 명칭 해석
없음
2 QQ그룹 관계 검색 인터페이스(v2) 호출
1) 기능 설명
QQ 그룹과의 관계를 검색하며, 결과는 WGGroupObserver의 OnQueryGroupInfoV2Notify 를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
void WGQueryQQGroupInfoV2(const char *groupId);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
groupId | const char * | 그룹 생성시 리턴하는 그룹id (그룹id는 그룹계정임.) |
4) 반환값
없으며, 결과는 WGGroupObserver의 OnQueryGroupInfoNotify를 통해 게임에 콜백합니다.
5) 예시 코드:
WGPlatform.WGQueryQQGroupInfoV2("11002222");
6) 특수 설명
없음
7) 명칭 해석
없음
3 QQ그룹 참가 인터페이스(v2) 호출
1) 기능 설명
QQ그룹에 참가하며, 결과는 WGGroupObserver의 OnJoinGroupV2Notify 를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
함수 호출 시에 파라미터 전송 순서에 주의해 주십시오.
void WGJoinQQGroupV2(GameGuild gameGuild,const char *groupId);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
gameGuild | GameGuild | (필수 입력) 길드 정보 |
groupId | const char * | (필수 입력) 그룹 id(그룹id는 그룹 계정임) |
GameGuild: 설정 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
guildId | String | (필수 입력)길드 id;문자열(스트링)은 숫자를 적용. 예를 들면 "123456" |
zoneId | String | (필수 입력) 대형 구역 id |
roleId | String | (필수 입력) 캐릭터 id |
partition | String | (선택 입력) 구역 서비스 id (소형 구역)은, 입력하지 않아도 되며, 현재 이용되지 않습니다. |
userZoneId | String | (선택 입력) 사용자의 구역 서비스 ID는, 회장이 해당 구역에 속하지 않은 사람에게 양도할 수 있으므로, 길드 구역 서비스가 반드시 사용자 구역 서비스인 것은 아닙니다. |
userLabel | String | (선택 입력) 그룹 명함을 수정하고 수정하지 않은 그룹 명함을 입력하지 않으며, 규칙은 "[YYYY] zzzz”이며 YYYY는 사용자의 게임 내 닉네임입니다. |
nickName | String | (선택 입력) 사용자 닉네임 |
type | String | (선택 입력) "0” 길드(기본값), "1” 팀, "2” 이벤트 |
areaId | String | (선택 입력) 게임 대형 구역 ID, "1” qq(기본값), "2” 위챗(선택 입력) |
4) 반환값
없으며, 결과는 WGGroupObserver의 OnJoinGroupV2Notify 를 통해 게임에 콜백합니다.
5) 예시 코드:
GameGuild gameGuild = new GameGuild();
gameGuild.guildId = "100703379";
gameGuild.roleId = "징징";
gameGuild.partition = "10"
gameGuild.zoneId = "100";
WGPlatform::GetInstance()->WGJoinQQGroupV2(gameGuild,"11002222");
6) 특수 설명
파라미터 설명에 따라 적절한 비율로 파라미터를 입력하고 선택 입력 파라미터는 필요에 따라 입력합니다.
7) 명칭 해석
없음
4 QQ그룹 결합 해제 인터페이스(v2) 호출
1) 기능 설명
QQ그룹을 결합 해제하며, 그 결과는 WGGroupObserver의 OnUnbindGroupV2Notify 를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
void WGUnbindQQGroupV2(GameGuild gameGuild);
3) 파라미터 설명
GameGuild: 설정 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
guildId | String | (필수 입력)길드 id;문자열(스트링)에 숫자가 적용되어야 함. 예시: "123456" |
guildName | String | (필수 입력)길드 이름 |
zoneId | String | (필수 입력) 대형 구역 id |
userZoneId | String | (선택 입력) 사용자의 구역 서비스 ID는, 회장이 해당 구역에 속하지 않은 사람에게 양도할 수 있으므로, 길드 구역 서비스가 반드시 사용자 구역 서비스인 것은 아닙니다. |
type | String | (선택 입력) "0” 길드(기본값), "1” 팀, "2” 이벤트 |
areaId | String | (선택 입력) 게임 대형 구역 ID, "1” qq(기본값), "2” 위챗(선택 입력) |
4) 반환값
없으며, 결과는 WGGroupObserver의 OnUnbindGroupV2Notify 를 통해 게임에 콜백할 수 있습니다.
5) 예시 코드:
GameGuild gameGuild = new GameGuild();
gameGuild.guildId = "100703379";
gameGuild.guildName = "msdk"
gameGuild.zoneId = "100";
WGPlatform::GetInstance()->WGUnbindQQGroupV2(gameGuild);
6) 특수 설명
파라미터 설명에 따라 적절한 비율로 파라미터를 입력하고 선택 입력 파라미터는 필요에 따라 입력합니다.
7) 명칭 해석
없음
5 기존 모바일QQ그룹 결합 인터페이스(v2) 호출
1) 기능 설명
길드장은 자기가 생성한 QQ그룹 인터페이스에 길드를 바인딩 가능합니다. 해당 인터페이스를 호출하기 전에 우선 WGGetQQGroupListV2 인터페이스를 호출하여 기존에 생성한 그룹 리스트를 읽어오며, 관련 결과는 OnBindExistGroupV2Notify 를 통해 게임에 콜백합니다.
2) 인터페이스 선언
void WGBindExistQQGroupV2(GameGuild gameGuild,const char *groupId,const char *groupName);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
gameGuild | GameGuild | (필수 입력) 길드 정보 |
groupId | String | (필수 입력) 그룹id(그룹id는 그룹계정임) |
groupName | String | (필수 입력) 그룹 닉네임 |
GameGuild: 설정 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
guildId | String | (필수 입력)길드 id, 스트링은 수치를 적용해야 함. 예를들면 “123456”. |
roleId | String | (필수 입력) 캐릭터 ID |
zoneId | String | (필수 입력) 대형 구역 id |
userZoneId | String | (선택 입력) 사용자의 구역 서비스 ID는, 회장이 해당 구역에 속하지 않은 사람에게 양도할 수 있으므로, 길드 구역 서비스가 반드시 사용자 구역 서비스인 것은 아닙니다. |
type | String | (선택 입력) "0” 길드(기본값), "1” 팀, "2” 이벤트 |
areaId | String | (선택 입력) 게임 대형 구역 ID, "1” qq(기본값), "2” 위챗(선택 입력) |
4) 반환값
없음. 바인딩 결과는 OnBindExistGroupV2Notify 를 통해 게임에 콜백합니다
5) 예시 코드:
GameGuild gameGuild = new GameGuild();
gameGuild.guildId = "100703379";
gameGuild.roleId = "10"
gameGuild.zoneId = "100";
WGPlatform::GetInstance()->WGBindExistQQGroupV2(gameGuild,"111022","msdk");
6) 특수 설명
파라미터 설명에 따라 적절한 비율로 파라미터를 입력하고 선택 입력 파라미터는 필요에 따라 입력합니다.
7) 명칭 해석
없음
6 결합된 모바일QQ 그룹의 그룹 번호 획득 인터페이스(v2) 호출
1) 기능 설명
모바일QQ그룹에 바인딩한 QQ그룹 메시지를 획득합니다. 길드ID를 통해 QQ그룹의 그룹계정을 읽어오면 그룹이 바인딩됩니다. 그룹을 생성시 길드 명칭을 입력하지 않으면 이때 획득한 QQ그룹명은 비어있습니다. 결과는 OnGetGroupCodeV2Notify 를 통해 게임에 콜백합니다.
2) 인터페이스 선언
void WGGetQQGroupCodeV2(GameGuild gameGuild);
3) 파라미터 설명
GameGuild: 설정 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
guildId | String | (필수 입력)길드id, 문자열(스트링)에 숫자가 적용되어야 함. 예를 들면 “123456” |
zoneId | String | (필수 입력) 대형 구역 id |
type | String | (선택 입력) "0” 길드(기본값), "1” 팀, "2” 이벤트 |
4) 반환값
없음. 결과는 OnGetGroupCodeV2Notify 를 통해 게임에 콜백합니다.
5) 예시 코드:
GameGuild gameGuild = new GameGuild();
gameGuild.guildId = "100703379";
gameGuild.roleId = "10"
gameGuild.zoneId = "100";
WGPlatform::GetInstance()->WGGetQQGroupCodeV2(gameGuild);
6) 특수 설명
파라미터 설명에 따라 적절한 비율로 파라미터를 입력하고 선택 입력 파라미터는 필요에 따라 입력합니다.
7) 명칭 해석
없음
7 그룹 결합된 길드 검색 인터페이스(v2) 호출
1) 기능 설명
그룹ID(그룹계정)를 기반으로 바인딩한 길드 메시지를 조회합니다. 결과는 OnQueryBindGuildV2Notify 를 통해 게임에 콜백합니다.
2) 인터페이스 선언
void WGQueryBindGuildV2(const char *groupId, const int type = 0);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
groupId | String | (필수 입력) 그룹id(그룹id는 그룹 계정임) |
type | int | (필수 입력) 0 길드(기본값), 1 팀, 2 이벤트 |
4) 반환값
없음, 결과는 OnQueryBindGuildV2Notify 를 통해 게임에 콜백합니다.
5) 예시 코드:
WGPlatform.WGQueryBindGuildV2("111002",0);
6) 특수 설명
파라미터 설명에 따라 적절한 비율로 파라미터를 입력하고 선택 입력 파라미터는 필요에 따라 입력합니다.
7) 명칭 해석
없음
8 생성된 QQ그룹 목록 검색 인터페이스(v2) 호출
1) 기능 설명
길드장이 자기가 기존에 생성한 QQ그룹에 길드를 바인딩할 경우, 이미 생성된 QQ그룹 리스트를 조회 시에 사용합니다. 결과는 OnGetGroupListV2Notify 를 통해 게임에 콜백합니다.
2) 인터페이스 선언
void WGGetQQGroupListV2();
3) 파라미터 설명
없음
4) 반환값
없음,결과는 OnGetGroupListV2Notify 를 통해 게임에 콜백합니다.
5) 예시 코드:
WGPlatform::GetInstance()->WGGetQQGroupListV2();
6) 특수 설명
없음
7) 명칭 해석
없음
9 길드 회장 그룹 결합 메시지 인터페이스(v2) 호출
1) 기능 설명
길드에 QQ그룹을 바인딩하지 않았을 경우, 길드원이 길드장에게 바인딩을 리마인딩하는 인터페이스입니다. 내가 생성한 QQ그룹에 길드를 바인딩하면, (위챗) 공식계정 “QQ모바일게임”을 통해 공지를 받으며, 공지는 하루에 1개 만 받아봅니다. 검증 시에 알림자와 피알림자는 반드시 길드원이어야 하며, 게임측에서 ‘피알림자는 길드장’으로 설정해주시기를 요청드립니다. 결과는 OnRemindGuildLeaderV2Notify 를 통해 게임에 콜백합니다.
2) 인터페이스 선언
함수 호출 시에 파라미터 전송 순서에 주의해 주십시오.
void WGRemindGuildLeaderV2(GameGuild gameGuild);
3) 파라미터 설명
GameGuild: 설정 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
guildId | String | (필수 입력)길드 id;문자열(스트링)에 숫자가 적용되어야 합니다. 예를 들면 "123456" |
zoneId | String | (필수 입력) 대형 구역 id |
roleId | String | (필수 입력) 캐릭터 id |
roleName | String | (필수 입력) 캐릭터 이름 |
leaderOpenid | String | (필수 입력) 길드 회장의 openid |
leaderRoleId | String | (필수 입력) 길드 회장의 roleid |
leaderZoneId | String | (선택 입력) 회장 구역 서비스 정보는, 회장이 해당 구역 서비스 소속이 아닌 사람에게 양도할 수 있습니다. |
userZoneId | String | (선택 입력) 사용자의 구역 서비스 ID는, 회장이 해당 구역에 속하지 않은 사람에게 양도할 수 있으므로, 길드 구역 서비스가 반드시 사용자 구역 서비스인 것은 아닙니다. |
type | String | (선택 입력) "0” 길드(기본값), "1” 팀, "2” 이벤트 |
areaId | String | (선택 입력) 게임 대형 구역 ID, "1” qq(기본값), "2” 위챗(선택 입력) |
4) 반환값
없음,결과는 OnRemindGuildLeaderV2Notify 를 통해 게임에 콜백합니다.
5) 예시 코드:
GameGuild gameGuild = new GameGuild();
gameGuild.guildId = "100703379";
gameGuild.roleId = "12";
gameGuild.roleName = "징징"
gameGuild.zoneId = "100";
gameGuild.leaderOpenid = "78AADD8DC9CF80E655EE68039B1D02C9";
gameGuild.leaderZoneId= "1234";
WGPlatform::GetInstance()->WGRemindGuildLeaderV2(gameGuild);
6) 특수 설명
파라미터 설명에 따라 적절한 비율로 파라미터를 입력하고 선택 입력 파라미터는 필요에 따라 입력합니다.
7) 명칭 해석
없음
위챗 그룹 기능
1 개요 설명
먼저 그룹 기능 콜백을 등록한 후에 권장 절차에 따라 위챗 그룹 기능 인터페이스를 호출하면 위챗 그룹 기능에 액세스할 수 있습니다. 그룹 기능 콜백 등록 인터페이스 호출 절차는 다음 그림과 같습니다.
2 콜백
3 위챗 그룹 정보 검색 인터페이스 호출
1) 기능 설명
게임 내에서 길드위챗 그룹 정보를 검색하며, 위챗 길드 그룹이 생성되었는지 그리고 대응하는 사용자가 그룹에 가입했는지 확인하는 데 사용되며, 그 결과는 WGGroupObserver의 OnQueryGroupInfoNotify를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
public static void WGQueryWXGroupInfo(String unionid,String openIdList);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
unionid | String | 길드 id |
openIdList | String | 그룹 내에 사용자 openid 목록 유무 확인을 기다리며, 쉼표로 분할합니다. |
4) 반환값
없으며, 호출 결과는 WGGroupObserver의 OnQueryGroupInfoNotify를 통해 게임에 콜백할 수 있습니다.
5) 예시 코드
WGPlatform.WGQueryWXGroupInfo ("union1", "openid"););
6) 특수 설명
없음
7) 명칭 해석
없음
4 길드 위챗 그룹 생성 인터페이스 호출
1) 기능 설명
게임 내에서 길드 위챗 그룹을 생성하며, 그 결과는 OnCreateWXGroupNotify를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
public static void WGCreateWXGroup(String unionid,String chatRoomName,String chatRoomNickName);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
unionid | String | 길드 id |
chatRoomName | String | 채팅 그룹 이름 |
chatRoomNickName | String | 사용자의 채팅 그룹 내 자체 정의 닉네임 |
4) 반환값
없으며, 결과는 WGGroupObserver의 OnCreateWXGroupNotify를 통해 게임에 콜백할 수 있습니다.
5) 예시 코드
WGPlatform.WGCreateWXGroup ("union1", "MSDK길드", "사용자의 그룹 닉네임");
6) 특수 설명
없음
7) 명칭 해석
없음
길드 위챗 그룹 가입 인터페이스 호출
1) 기능 설명
게임 내에서 길드 위챗 그룹에 가입하며, 그 결과는 WGGroupObserver의 OnJoinWXGroupNotify를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
public static void WGJoinWXGroup(String unionid,String chatRoomNickName);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
unionid | String | 길드 id |
chatRoomNickName | String | 사용자의 채팅 그룹 내 자체 정의 닉네임 |
4) 반환값
없으며, 결과는 WGGroupObserver의 OnJoinWXGroupNotify를 통해 게임에 콜백합니다.
5) 예시 코드
WGPlatform.WGJoinWXGroup ("union1", "사용자의 그룹 닉네임");
6) 특수 설명
없음
7) 명칭 해석
없음
6 위챗 그룹 상태 검색 인터페이스(2.17.1a 이상 버전) 호출
1) 기능 설명
게임 내에서 지정된 길드 id가 이미 그룹을 생성했는지, 또는 그룹에 이미 가입했는지 확인하며, 그 결과는 WGGroupObserver의 OnQueryWXGroupStatusNotify를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
public static void WGQueryWXGroupStatus(String unionid, eStatusType type);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
unionid | String | 길드 그룹 id |
type | eStatusType | 열거 유형: ISCREATED(그룹 생성 여부), ISJONINED(그룹 참가 여부) |
4) 반환값
없으며, 결과는 WGGroupObserver의 OnQueryWXGroupStatusNotify를 통해 게임에 콜백합니다.
5) 예시 코드
WGPlatform.WGQueryWXGroupStatus ("union1", eStatusType.ISCREATED);
6) 특수 설명
없음
7) 명칭 해석
없음
7 위챗 그룹 결합 해제 인터페이스(2.17.1a 이상 버전)
1) 기능 설명
게임 내에서 지정된 길드 그룹을 결합 해제하며, 그 결과는 WGGroupObserver의 OnUnbindGroupNotify를 통해 게임에 콜백할 수 있습니다.
2) 인터페이스 선언
public static void WGUnbindWeiXinGroup(String unionid);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
unionid | String | 길드 id |
4) 반환값
없으며, 결과는 WGGroupObserver의 OnUnbindGroupInfoNotify를 통해 게임에 콜백할 수 있습니다.
5) 예시 코드
WGPlatform.WGUnbindWeiXinGroup ("union1");
6) 특수 설명
없음
7) 명칭 해석
없음
자주 묻는 질문
- 1개의 위챗 계정은 1건의 게임 하에서 매일 최대 1개의 위챗 길드 그룹만을 생성할 수 있으며, 반드시 24시간을 기다린 후에 다시 새로운 위챗 그룹을 생성할 수 있습니다. 1개의 위챗 계정은 1건의 게임 하에서 5개의 위챗 길드 그룹만을 만들 수 있으며, 생성한 위챗 길드 그룹은 삭제될 수 없습니다. 따라서, 테스트 시에 해당 게임의 그룹을 5개를 초과해 생성하는 경우, 1개의 계정을 변환해 길드 그룹을 만들어야 합니다.
- 1개의 위챗 계정은 ㅂ건의 게임 하에서 매일 최대 2개의 위챗 길드 그룹에만 가입할 수 있습니다. 1개의 위챗 계정은 1건의 게임 하에서 최대 10개의 위챗 길드 그룹에만 가입할 수 있습니다.
- 1개의 qq 계정은 매일 최대 8회까지 qq 길드 그룹(게임을 구분하지 않으며, 해당 그룹이 해산되어도 그룹 생성 1회로 계산됨)을 생성할 수 있습니다. 1개의 QQ 계정은 최대 100개까지 qq 길드 그룹을 생성할 수 있습니다.
- 1개의 qq 계정은 최대 500명까지 qq 길드 그룹에 가입할 수 있습니다.(게임을 구분하지 않음)
- QQ 그룹이 해산될 경우 두 가지 방식으로 결합 관계를 취소할 수 있습니다.
1.회장이 그룹 결합 해제 인터페이스를 호출해 그룹 관계를 해제함;
2.길드 구성원이 그룹 가입 인터페이스를 호출할 경우, 이 때는 그룹 ID를 찾을 수 없으므로 기본값으로 결합 해제를 실시할 수 있습니다
QQ 그룹이 해산되되고 상기 처리 중 어느 것도 수행하지 않은 경우, 결합 관계는 자동으로 취소될 수 없습니다.