LoginRet
사용자 로그인 후 획득한 정보를 저장
typedef struct loginRet_ {
int flag; //표기, 표시 반환 성공 및 실패 유형
std::string desc; //설명 반환
int platform; //현재 로그인된 플랫폼
std::string open_id;
std::vector<TokenRet> token;
std::string user_id; //사용자 ID, 우선 보류, 위챗과의 협의 대기
std::string pf;
std::string pf_key;
#ifdef __APPLE__
loginRet_ ():flag(-1),platform(0){};
#endif
}LoginRet;
eMSDK_SCREENDIR
typedef enum _eMSDK_SCREENDIR {
eMSDK_SCREENDIR_SENSOR=0, //가로, 세로 화면
eMSDK_SCREENDIR_PORTRAIT=1, //세로 화면
eMSDK_SCREENDIR_LANDSCAPE=2, //가로 화면
}eMSDK_SCREENDIR;
WGWebviewObserver
class WGWebviewObserver
{
public:
/*! @brief Webview 콜백
*
* 생성된 조작 결과를 상위 App에 통지
* @param WebviewRet 생성 결과
* @return void
*/
virtual void OnWebviewNotify(WebviewRet& webviewRet)=0;
virtual ~WGWebviewObserver() {};
};
WebviewRet
typedef struct {
int flag; //0 성공
std::string msgData; //webviewNotify 내 H5 페이지 js를 게임의 자체 정의 데이터에 전송
}WebviewRet;
토큰 정보
typedef struct {
int type;
std::string value;
long long expiration;
}TokenRet;
token 종류
typedef enum _eTokenType
{
eToken_QQ_Access=1, // 모바일QQ accessToken
eToken_QQ_Pay, // 모바일QQ payToken
eToken_WX_Access, // 위챗 accessToken
eToken_WX_Code, // 위챗 code,
eToken_WX_Refresh, // 위챗 refreshToken
eToken_Guest_Access // Guest 모드에서의 토큰
}eTokenType;
|플랫폼|token 유형|token 기능|type|유효 기한|
|: ------- :|: ------- :|: ------- :|: ------- :|: ------- :|: ------- :|
|모바일QQ |accesstoken|모바일QQ 개인, 친구, 관계 사슬, 공유 등 검색 기능|eToken_QQ_Access| 90일|
|모바일QQ |paytoken |결제 관련|eToken_QQ_Pay| 7일|
|위챗| accesstoken|위챗 개인, 친구, 관계 사슬, 공유 등 검색 기능| eToken_WX_Access| 2시간|
|위챗|refreshtoken| 새로고침accesstoken| eToken_WX_Refresh| 30일|
WakeupRet
게임 저장이 플랫폼에 의해 소환될 때, 플랫폼이 클라이언트 정보를 전달
typedef struct
{
int flag; //오류 코드
int platform; //불러오는 플랫폼
std::string media_tag_name; //wx에서 회신하는 meidaTagName
std::string open_id; //qq에서 전송하는 openid
std::string desc; //설명
std::string lang; //언어 현재 위챗 5.1 이상에서만 사용, 모바일QQ 사용 안함 */
std::string country; //국가 현재 위챗 5.1 이상에서만 사용, 모바일QQ 사용 안함 */
std::string messageExt; //게임에서 입력되는 자체 정의 문자열을 공유하며, 플랫폼 풀업 게임은 어떠한 반환 처리도 하지 않음 현재 위챗 5.1 이상에서만 사용, 모바일QQ 사용 안함 */
std::vector<KVPair> extInfo; //게임- 플랫폼 보유 자체 정의 파라미터 모바일QQ 전용
}WakeupRet;
LocationRet
지리적 위치 정보
typedef struct {
int flag;
std::string desc;
double longitude;
double latitude;
}LocationRet;
RelationRet
관계 사슬 정보, 곧 “같은 그룹” 친구 정보
typedef struct {
int flag; //검색 결과 flag, 0은 성공
std::string desc; // 설명
std::vector<PersonInfo> persons;//친구 또는 개인 정보 저장
std::string extInfo; //게임 검색은 입력되는 자체 정의 필드이며, 1회 검색을 표시함
eRelationRetType type; //콜백 출처를 구분해 0은 개인 정보 콜백 1은 같은 게임 플레이 친구 콜백
}RelationRet;
PersonInfo
친구 정보
typedef struct {
std::string nickName; //닉네임
std::string openId; //계정 고유 표시
std::string gender; //성별
std::string pictureSmall; //소형 프로필 사진
std::string pictureMiddle; //중간 크기 프로필 사진
std::string pictureLarge; //datouxiang
std::string provice; //성(省)(이전 버전 속성으로 외부 app이 코드를 변경하지 못하게 하며 AddressInfo에 위치시키지 않음)
std::string city; //도시(이전 버전 속성으로 외부 app이 코드를 변경하지 못하게 하며 AddressInfo에 위치시키지 않음)
bool isFriend; //친구 여부
int distance; //이번 위치 정보로부터의 거리
std::string lang; //언어
std::string country; //국가
std::string gpsCity; //GPS 정보에 따라 획득한 도시
}PersonInfo;
정보 공유
typedef struct
{
int platform; //플랫폼 유형
int flag; //조작 결과
std::string desc; //결과 설명(보류)
std::string extInfo; //게임 공유는 입력한 자체 정의 문자열이며 공유 표시
}ShareRet;
GroupRet
그룹 정보
typedef struct {
int flag; //0 성공
int errorCode; //플랫폼 반환 파라미터, flag가 0이 아닐 경우 주의해야 함
std::string desc; //오류 정보
int platform; //플랫폼
WXGroupInfo wxGroupInfo; //위챗 그룹 정보
QQGroupInfo qqGroupInfo; //QQ 그룹 정보
}GroupRet;
QQGroupInfo
QQ그룹 정보
typedef struct {
std::string groupName=""; /*그룹 이름 */
std::string fingerMemo="";/*그룹 관련 소개 */
std::string memberNum=""; /*그룹 구성원 수 */
std::string maxNum=""; /*해당 그룹 수용 가능 구성원 수 */
std::string ownerOpenid=""; /*그룹 주인 openid */
std::string unionid=""; /*해당 QQ 그룹과 결합된 길드 ID */
std::string zoneid=""; /*대형 구역 ID */
std::string adminOpenids=""; /*관리자 openid. 관리자가 복수일 경우, “,”로 구분. 예: 0000000000000000000000002329FBEF,0000000000000000000000002329FAFF //그룹 openID
std::string groupOpenid; //게임 길드 ID와 결합된 QQ 그룹의 groupOpenid
//그룹 가입용 그룹 key
std::string groupKey; //가입해야 할 QQ 그룹에 대응하는 key
std::string relation; //사용자와 그룹 사이의 관계를 다음과 같이 나타냄. 1: 그룹 주인, 2: 관리자, 3: 일반 구성원, 4: 비 구성원
}QQGroupInfo;
WXGroupInfo
위챗 그룹 정보
typedef struct {
std::string openIdList; //그룹 구성원 openId, ","로 구분
std::string memberNum; //그룹 구성원 수
std::string chatRoomURL; //그룹 채팅 생성(가입) URL
int status; //그룹 상태 검색 반환값 0은 그룹에 생성했거나 가입하지 않았음을, 1은 그룹을 이미 생성했거나 가입했음을 나타냄
}WXGroupInfo;
eFlag
로그인 반환 코드
typedef enum _eFlag
{
eFlag_Succ =0,
eFlag_QQ_NoAcessToken =1000, //QQ&QZone login fail and can't get accesstoken
eFlag_QQ_UserCancel =1001, //QQ&QZone user has cancelled login process (tencentDidNotLogin)
eFlag_QQ_LoginFail =1002, //QQ&QZone login fail (tencentDidNotLogin)
eFlag_Login_NetworkErr =1003, //QQ&QZone&wx login networkErr
eFlag_QQ_NotInstall =1004, //QQ is not install
eFlag_QQ_NotSupportApi =1005, //QQ don't support open api
eFlag_QQ_AccessTokenExpired=1006, // QQ Actoken 무효가 됨. 재로그인해야 함
eFlag_QQ_PayTokenExpired=1007, // QQ Pay token 기한 만료
eFlag_QQ_UnRegistered=1008, // qq에 등록되어 있지 않음
eFlag_QQ_MessageTypeErr=1009, // QQ 메시지 유형 오류
eFlag_QQ_MessageContentEmpty=1010, // QQ 메시지가 공백임
eFlag_QQ_MessageContentErr=1011, // QQ 메시지를 사용할 수 없음(너무 길거나 다른 원인)
eFlag_WX_NotInstall =2000, //Weixin is not installed
eFlag_WX_NotSupportApi =2001, //Weixin don't support api
eFlag_WX_UserCancel =2002, //Weixin user has cancelled
eFlag_WX_UserDeny =2003, //Weixin User has deny
eFlag_WX_LoginFail =2004, //Weixin login fail
eFlag_WX_RefreshTokenSucc=2005, // Weixin 토큰 새로고침 성공
eFlag_WX_RefreshTokenFail=2006, // Weixin 토큰 새로고침 실패
eFlag_WX_AccessTokenExpired=2007, // Weixin AccessToken 무효가 됨. 이때 refreshToken을 이용해 토큰 변환을 시도할 수 있음
eFlag_WX_RefreshTokenExpired=2008, // Weixin refresh token 기한 만료됨. 재승인해야 함
eFlag_WX_Group_HasNoAuthority=2009, //게임에 그룹 생성 권한이 없음
eFlag_WX_Group_ParameterError=2010, //파라미터 검사 오류
eFlag_WX_Group_HadExist=2011, //위챗 그룹이 이미 있음
eFlag_WX_Group_AmountBeyond=2012, //그룹 생성 제한 수 초과
eFlag_WX_Group_IDNotExist=2013, //그룹 ID가 없음
eFlag_Error =-1,
eFlag_Local_Invalid=-2, // 로컬 토큰 무효화됨. 게임 로그인 인터페이스에서 재승인해야 함
eFlag_LbsNeedOpenLocationService=-4, // 사용자에게 위치 정보 서비스를 활성화하도록 안내해야 함
eFlag_LbsLocateFail=-5, // 위치 정보 획득 실패
eFlag_UrlTooLong=-6, // for WGOpenUrl
eFlag_NeedLogin=3001, //로그인 페이지로 이동해야 함
eFlag_UrlLogin=3002, //URL 사용 로그인 성공
eFlag_NeedSelectAccount=3003, //팝업 메시지로 다른 계정을 표시해야 함
eFlag_AccountRefresh=3004, //URL을 통해 토큰을 새로고침함
eFlag_NeedRealNameAuth=3005, //실명 인증이 필요함
eFlag_WebviewClosed=6001 //내장 브라우저 닫기
eFlag_Webview_page_event=7000 //전달하는 js 메시지
#ifdef ANDROID
,
eFlag_NotInWhiteList=-3 // 화이트리스트 상에 없음
#endif
#ifdef __APPLE__
,
eFlag_InvalidOnGuest=-7, //해당 기능은 Guest 모드 하에서 사용할 수 없음
eFlag_Guest_AccessTokenInvalid=4001, //Guest 토큰 무효화됨
eFlag_Guest_LoginFailed=4002, //Guest 모드 로그인 실패
eFlag_Guest_RegisterFailed=4003, //Guest 모드 등록 실패
eFlag_Checking_Token=5001
eFlag_Logining=5002, //로그인 중... 로그인 콜백을 기다린 후에 재조작해 주십시오.
eFlag_Login_Timeout=5003, //로그인 중... 로그인 콜백을 기다린 후에 재조작해 주십시오.
eFlag_RequestTooFrequently=5004,//인터페이스 호출 횟수 과다
#endif
}eFlag;
``
모바일QQ 관련:
반환 코드 | 이름 | 설명 | 권장 처리 |
---|---|---|---|
1000 | eFlag_QQ_NoAcessToken | 모바일QQ 로그인 실패, accesstoken 획득 못함 | 로그인 인터페이스로 돌아가 플레이어가 다시 로그인 승인하도록 안내함 |
1001 | eFlag_QQ_UserCancel | 플레이어가 모바일QQ 승인 로그인을 취소함 | 로그인 인터페이스로 돌아가 플레이어에게 모바일QQ 승인 로그인이 취소되었음을 통지함 |
1002 | eFlag_QQ_LoginFail | 모바일QQ 로그인 실패 | 로그인 인터페이스로 돌아가 플레이어가 다시 로그인 승인하도록 안내함 |
1003 | eFlag_QQ_NetworkErr | 네트워크 오류 | 재시도 |
1004 | eFlag_QQ_NotInstall | 플레이어의 기기에 모바일QQ 클라이언트 미설치 | 플레이어가 모바일QQ 클라이언트를 설치하도록 안내함 |
1005 | eFlag_QQ_NotSupportApi | 플레이어의 모바일QQ 클라이언트가 해당 인터페이스를 지원하지 않음 | 플레이어가 모바일QQ 클라이언트를 업그레이드하도록 안내함 |
1006 | eFlag_QQ_AccessTokenExpired | accesstoken 기한 만료 | 로그인 인터페이스로 돌아가 플레이어가 다시 로그인 승인하도록 안내함 |
1007 | eFlag_QQ_PayTokenExpired | paytoken 기한 만료 | 로그인 인터페이스로 돌아가 플레이어가 다시 로그인 승인하도록 안내함 |
위챗 관련:
반환 코드 | 이름 | 설명 | 권장 처리 |
---|---|---|---|
2000 | eFlag_WX_NotInstall | 플레이어의 기기에 위챗 클라이언트 미설치 | 플레이어가 위챗 클라이언트를 설치하도록 안내함 |
2001 | eFlag_WX_NotSupportApi | 플레이어의 위챗 클라이언트가 해당 인터페이스를 지원하지 않음 | 플레이어가 위챗 클라이언트를 업그레이드하도록 안내함 |
2002 | eFlag_WX_UserCancel | 플레이어가 위챗 승인 로그인을 취소함 | 로그인 인터페이스로 돌아가 플레이어에게 위챗 승인 로그인이 취소되었음을 통지함 |
2003 | eFlag_WX_UserDeny | 플레이어가 위챗 승인 로그인을 거부함 | 로그인 인터페이스로 돌아가서 플레이어에게 위챗 승인 로그인을 거부했음을 통지함 |
2004 | eFlag_WX_LoginFail | 위챗 로그인 실패 | 로그인 인터페이스로 돌아가 플레이어가 다시 로그인 승인하도록 안내함 |
2005 | eFlag_WX_RefreshTokenSucc | 위챗 토큰 새로고침 성공 | 위챗 토큰을 획득해 게임에 로그인 진입 |
2006 | eFlag_WX_RefreshTokenFail | 위챗 토큰 새로고침 실패 | 로그인 인터페이스로 돌아가 플레이어가 다시 로그인 승인하도록 안내함 |
2007 | eFlag_WX_AccessTokenExpired | 위챗 accessToken 기한 만료 | refreshtoken으로 토큰 새로고침을 시도함 |
2008 | eFlag_WX_RefreshTokenExpired | 위챗 refreshtoken 기한 만료 | 로그인 인터페이스로 돌아가 플레이어가 다시 로그인 승인하도록 안내함 |
다른 계정 관련:
반환코드 | 이름 | 설명 | 권장 처리 |
---|---|---|---|
3001 | eFlag_NeedLogin | 게임 로컬 계정과 풀업 계정 모두 로그인 불가 | 로그인 인터페이스로 돌아가 플레이어가 다시 로그인 승인하도록 안내함 |
3002 | eFlag_UrlLogin | 다른 계정이 없고, 게임에서 계정을 풀업해 빠른 로그인 성공 | LoginRet 구조체 내 토큰을 읽어들여 게임 승인 절차 수행 |
3003 | eFlag_NeedSelectAccount | 게임 로컬 계정과 풀업 계정에 다른 계정이 존재함 | 팝업 세션 프레임이 사용자에게 로그인 계정을 선택하게 함 |
3004 | eFlag_AccountRefresh | 다른 계정이 없고, MSDK에서 새로고침 인터페이스를 통해서 로컬 계정 토큰을 새로고침함 | LoginRet구조체 내 토큰을 읽어들여 게임 승인 절차를 수행함 |
모바일QQ 그룹(v2) 관련:
|반환코드|설명|권장 처리|
|: ------- :|: ------- :|: ------- :|
|221001| 이미 결합된 그룹 |처리 불요|
|221002 |아직 결합되지 않은 그룹 |처리 불요|
|221003 |그룹 결합 회신 패키지 오류 |처리 불요|
|221004 |uin 및 tskey 획득 실패 |로그인 상태 정확성 검증|
|221005 |현재 사용자가 그룹 주인이 아님 |처리 불요|
|221006 |무효한 openid |openid 유효성 검사|
|221007 |파라미터 무효 |appid,guild_id,zone_id,gc 등등의 인터페이스 파라미터 검사, 구체적인 정보는 인터페이스 파라미터 목록 참조|
|221008 |인터페이스 호출 권한 없음 |권한 관리 신청 권한 참조|
|-182001 |그룹 백그라운드 cgi 요청 실패 |처리 불요|
|-182002 |cmem 조작 실패 |처리 불요|
|-182003 |그룹 생성 실패 |처리 불요|
|-182004 |그룹 검색 실패 |처리 불요|
|-182005 |openid의 uin 전송 실패 |처리 불요|
|-182008 |idip 검사 실패 |처리 불요|
|-500003~-500009 |작업 분석 데이터 회신 실패 |처리 불요|
|-120000 |로그인 상태 검증 실패 |등록 상태 유효성 검사|
위챗 그룹(그룹 생성, 그룹 결합) 관련:
|반환 코드|설명|권장 처리|
|: ------- :|: ------- :|: ------- :|
-1 | 시스템 에러 | 재시도해 보시고, 실패할 경우에는 기업 QQ(800013811)를 통해 모바일 네트워크 게임 MSDK 기술 지원 인원에게 연락해 주십시오. |
---|---|---|
-10001 | 해당 게임에는 그룹 생성 권한이 없음 | 게임에 게임 센터에서 그룹을 생성할 권한이 없습니다. |
-10002 | 시스템 에러 | 재시도해 보시고, 실패할 경우에는 기업 QQ(800013811)를 통해 모바일 네트워크 게임 MSDK 기술 지원 인원에게 연락해 주십시오. |
-10003 | 링크 없음(그룹과 무관) | 없음 |
-10004 | 이동 링크 획득 실패(그룹과 무관) | 없음 |
-10005 | 그룹 ID 있음 | 그룹 중복 생성하지 말 것 |
-10006 | 생성한 그룹 수가 제한값을 초과함 | 사용자를 변환해 그룹 생성 |
-10007 | 그룹 ID 없음 | 존재하는 그룹 ID로 변환 |
-10008 | 그룹 ID 사용 불가 | 그룹ID 1일 1회의 그룹 채팅만 생성 가능하며, 해당 그룹 ID는 다음 날이 되어야 계속해서 생성 가능(결합이 해제된 그룹은 24시간 이내에 그룹 생성 불가) |
-10009 | 사용자가 그룹 내에 없음 | 없음 |
-20001 | 사용자가 생성한 그룹 수가 제한값을 초과함 | 사용자가 생성하는 그룹은 20개를 초과할 수 없으며, 결합 그룹은 20개를 초과할 수 없습니다. |
-201608 | kv 읽기 실패 | 위챗 관련 인터페이스 인원에게 연락 |
-201609 | kv 쓰기 실패 | 위챗 관련 인터페이스 인원에게 연락 |
위챗 그룹(그룹 생성, 그룹 결합 해제)2.18.0 이후 버전부터 사용하며, 이 오류 코드 anroid 및 ios는 같은 관련성이 있습니다.
|반환 코드|설명|권장 처리|
|: ------- :|: ------- :|: ------- :|
|-1 |시스템 에러 |재시도해 보시고, 실패할 경우에는 기업 QQ(800013811)를 통해 모바일 네트워크 게임 MSDK 기술 지원 인원에게 연락해 주십시오. | |2014 |오늘은 이미 그룹을 만들었습니다. 매일 각 ID 당 1회에 한해 그룹 채팅 생성 가능|id를 변환해 생성. | |2015 |추가 그룹 수가 제한값 초과, 각 ID당1일 최대 2개의 그룹 추가 가능|다음 날 재시도해 주십시오. | |2009 |그룹 생성 권한 없음| 제품 담당자에게 연락해 권한 개통. | |2012 |그룹 생성 또는 결합 해제 횟수 제한값 초과, 1명의 사용자의 그룹 생성 또는 그룹 결합 해제는 20개를 초과할 수 없음|없음|
|2011 |위챗 그룹이 이미 존재함 |없음| |2013 |그룹 ID 없음 |없음| |2010 |파라미터 검색 오류 |없음|
eQQScene
모바일QQ 환경 열거
typedef enum _eQQScene
{
QQScene_QZone =1,//기본 팝업으로 Qzone의 팝업창에서 공유
QQScene_Session=2,//기본 팝업으로 친구 팝업창에서 공유
}eQQScene;
eWechatScene
위챗 환경 열거
typedef enum _eWechatScene
{
WechatScene_Session =0,
WechatScene_Timeline=1,
}eWechatScene;
ePlatform
플랫폼 열거
typedef enum _ePlatform
{
ePlatform_None,
ePlatform_Weixin,
ePlatform_QQ
#ifdef ANDROID
,
ePlatform_WTLogin,
ePlatform_QQHall
#endif
#ifdef __APPLE__
,
ePlatform_Guest=5,
ePlatform_Auto=6
#endif
}ePlatform;
eStatusType
public enum eStatusType{
ISCREATED=0,
ISJONINED=1
}
eRelationRetType
public enum eRelationRetType{
eRet_QueryMyInfo=0,
eRet_QueryGameFriends=1
}
NoticeInfo
공지 정보
typedef struct
{
std::string msg_id; //공지 id
std::string open_id; //사용자 open_id
std::string msg_url; //공지 이동 링크
eMSG_NOTICETYPE msg_type; //공지 유형, eMSG_NOTICETYPE
std::string msg_scene; //공지 디스플레이 환경, 관리 클라이언트 백그라운드에서 설정
std::string start_time; //공지 활성화 시작 시간
std::string end_time; //공지 활성화 종료 시간
eMSG_CONTENTTYPE content_type; //공지 내용 유형, eMSG_CONTENTTYPE
//웹페이지 광고 특수 필드
std::string content_url; //웹페이지 공지 URL
//이미지 공지 특수 필드
std::vector<PicInfo> picArray; //이미지 데이터 배열
//본문 공지 특수 필드
std::string msg_title; //공지 제목
std::string msg_content; //공지 내용
int msg_order; //공지 우선 등급, 클수록 우선 순위가 높으며, MSDK2.8.0 버전에서 새로 추가된 기능
std::string msg_custom; //공지 자체 정의 파라미터
}NoticeInfo;
eBuglyLogLevel
보고 로그에서 bugly의 로그 등급으로
typedef enum _eBuglyLogLevel
{
eBuglyLogLevel_S=0, // Silent
eBuglyLogLevel_E=1, // Error
eBuglyLogLevel_W=2, // Warnning
eBuglyLogLevel_I=3, // Info
eBuglyLogLevel_D=4, // Debug
eBuglyLogLevel_V=5 // Verbose
}eBuglyLogLevel;
LocalMessage
typedef struct
{
std::string fireDate: //로컬 푸시 발송 시간, 형식 yyyy-MM-dd HH:mm:ss
std::string alertBody; //푸시 내용
int badge; //코너 표시 숫자
std::string alertAction; //팝업창 교환 버튼 텍스트 내용(기본값은 “활성화")
std::vector<KVPair> userInfo; //파라미터 자체 정의, 표식을 이용해 푸시 및 부가 정보 추가가 가능
std::string userInfoKey; //로컬 푸시의 프론트에서 푸시하는 표식 Key
std::string userInfoValue; //로컬 푸시의 프론트에서 푸시하는 표식 Key의 대응하는 값