데이터 구조
Unity3D
CallbackRet
LoginRet
TokenRet
eTokenType
WakeupRet
LocationRet
RelationRet
PersonInfo
ShareRet
GroupRet
QQGroupInfo
WXGroupInfo
eFlag
eQQScene
eWechatScene
ePlatform
eBuglyLogLevel
NoticeInfo
Android
CallbackRet
LoginRet
TokenRet
eTokenType
WakeupRet
LocationRet
RelationRet
PersonInfo
ShareRet
GroupRet
QQGroupInfo
WXGroupInfo
eFlag
eQQScene
eWechatScene
ePlatform
eBuglyLogLevel
NoticeInfo
IOS
CallbackRet
LoginRet
TokenRet
eTokenType
WakeupRet
LocationRet
RelationRet
PersonInfo
ShareRet
GroupRet
QQGroupInfo
WXGroupInfo
eFlag
eQQScene
eWechatScene
ePlatform
eBuglyLogLevel
NoticeInfo
기타
데이터 구조
시스템 도구
데이터 구조 / IOS / CallbackRet

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;

ShareRet

정보 공유

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의 대응하는 값