시스템 도구
Unity3D
모바일 QQ, 위챗 설치 여부 확인
모바일 QQ, 위챗 버전 획득
인터페이스 지원 여부 검사
MSDK 버전 획득
채널 설치 획득
채널 등록 획득
사용자 피드백
Deeplink 링크
자주 묻는 질문
Android
모바일 QQ, 위챗 설치 여부 확인
모바일 QQ, 위챗 버전 획득
인터페이스 지원 여부 검사
MSDK 버전 획득
채널 설치 획득
채널 등록 획득
사용자 피드백
Deeplink 링크
자주 묻는 질문
IOS
모바일 QQ, 위챗 설치 여부 확인
모바일 QQ, 위챗 버전 획득
인터페이스 지원 여부 검사
MSDK 버전 획득
채널 설치 획득
채널 등록 획득
사용자 피드백
Deeplink 링크
자주 묻는 질문
기타
데이터 구조
시스템 도구
시스템 도구 / IOS / 모바일 QQ, 위챗 설치 여부 확인

액세스 안내

이미 MSDK 액세스 설정 모듈 설명에 따라 액세스 설정

모바일 QQ, 위챗 설치 여부 확인

인터페이스 상세 설명은 다음과 같음

1) 인터페이스 선언
bool WGIsPlatformInstalled(ePlatform platformType);
2) 파라미터 설명
파라미터 이름 파라미터 유형 설명
platform ePlatform 게임을 입력한 플랫폼 유형은 다음 값일 수 있음: ePlatform_QQ, ePlatform_Weixin
3) 반환값
반환값 유형 설명
bool false는 설치되지 않았음을, 그리고 true는 설치되었음을 나타냄
4) 예시 코드
bool installed = WGPlatform::GetInstane()->WGIsPlatformInstalled(ePlatform_QQ);

MSDK 버전 획득

WGGetVersion 인터페이스를 호출해 MSDK 버전을 회신할 수 있습니다. 인터페이스 상세 설명은 다음과 같음

1) 인터페이스 선언
const std::string WGGetVersion();
2) 파라미터 설명

없음

3) 반환값
반환값 유형 설명
std::string MSDK 버전. 예: 2.14.5i
4) 예시 코드
std::string version = WGPlatform::GetInstane()->WGGetVersion()

채널 설치 획득

채널 설치: iOS에서 info.plist 내 CHANNEL_DENGTA 필드를 반환합니다.

WGGetChannelId를 호출해 게임 설치 채널을 반환할 수 있습니다. 인터페이스 상세 설명은 다음과 같음

1) 인터페이스 선언
const std::string WGGetChannelId();
2) 파라미터 설명

없음

3) 반환값
반환값 유형 설명
std::string 설치 채널 id 반환. 해당 인터페이스 반환값이 비어있을 경우, assets/channel.ini 내 채널번호를 읽어들이고,
게임이 테스트 단계인 경우에는 스스로 채널번호를 assets/channel.ini에 입력해 테스트에 사용합니다.
IOS는 plist 내 CHANNEL_DENGTA 필드를 반환
4) 예시 코드
std::string channelId = WGPlatform::GetInstane()->WGGetChannelId();

채널 등록 획득

채널 등록: 사용자가 위챗 또는 모바일 QQ 플랫폼에서 처음 로그인할 때 채널을 설치하며, 해당 값과 계정이 바인딩된 후 변경이 불가능합니다.

WGGetRegisterChannelId를 이용해 사용자의 등록 채널을 반환할 수 있습니다. 인터페이스 상세 설명은 다음과 같음

1) 인터페이스 선언
const std::string WGGetRegisterChannelId();
2) 파라미터 유형

없음

3) 반환값 유형
반환값 유형 설명
std::string 등록 채널 id 반환. 예: 1001
4) 예시 코드
std::string registerChannelId = WGPlatform::GetInstane()->WGGetRegisterChannelId();

MSDK 로그 열기

통합 및 테스트 환경 하에서 MSDK 로그를 확인하며 iOS 클라이언트 로그는 파일을 쓸 수 없고, 콘솔에서 출력만 가능하며 로그 스위치를 열어야 합니다.

1) 인터페이스 선언
void WGOpenMSDKLog(bool enabled);
2) 파라미터 유형
파라미터 이름 파라미터 유형 설명
enabled bool true: 개방, false: 폐쇄
3) 반환값 유형

없음

4) 예시 코드
WGPlatform::GetInstance()->WGOpenMSDKLog(true);

사용자 피드백

사용자 피드백: 해당 이벤트 인터페이스를 통해 사용자 피드백을 제공할 수 있으며, 피드백 내용은 http://mcloud.ied.com/queryLogSystem/ceQuery.html?token=545bcbcfada62a4d84d7b0ee8e4b44bf&gameid=0&projectid=ce를 통해 확인할 수 있습니다. 이 기능을 완료하려면 사용하는 인터페이스에 다음 사항이 있어야 합니다.: WGFeedback, 인터페이스 상세 설명은 다음과 같음

1) 인터페이스 선언
void WGFeedback(unsigned char* body);
2) 파라미터 설명
파라미터 명칭 유형 설명
body unsigned char* 피드백 내용
3) 반환값

없음

4) 예시 코드
WGPlatform::GetInstance()->WGFeedback((unsigned char*)"TestFeedBack");

Deeplink 링크

Deeplink는 각각 위챗 게임 센터 네이티브 페이지로 이동, 이벤트 페이지, 구체적인 표현 솔루션을 지원하며, 입구 표시는 게임의 실제 상황에 따라 정할 수 있습니다. 게임 센터 네이티브 페이지 포함 내용: 위챗 게임 센터 홈 화면, 위챗 게임 센터 상세 정보 페이지, 위챗 게임 센터 게임 데이터베이스 등. 게임 백그라운드 파라미터 설정을 통해 구현할 수 있습니다. 이벤트 페이지 포함 내용: 게임의 H5 페이지, 게임 백그라운드를 통해 링크 주소 배치 구현.

1) 인터페이스 선언
void WGOpenWeiXinDeeplink(unsigned char* link);
2) 파라미터 설명
파라미터 명칭 유형 설명
link unsigned char* 구체적으로 링크 deeplink는, 다음과 같이 입력 가능:
INDEX: 위챗 게임 센터 초기 페이지로 이동,
DETAIL: 위챗 게임 센터 상세 정보 페이지로 이동,
LIBRARY: 위챗 게임 센터 게임 데이터베이스로 이동,
구체적인 링크 url (위챗 게임 센터에서 이 url을 먼저 설정해야 함)
3) 반환값

없음

4) 예시 코드
WGPlatform::GetInstance()->WGOpenWeiXinDeeplink((unsigned char*)"INDEX");

Tencent 동영상 기동 특권

1 개요 설명

Tencent 동영상 풀업 기능은 MSDK에서 제공하며, 사용자는 Tencent 동영상 앱의 웹페이지 내에서 게임을 풀업해 데이터를 게임 기능으로 전송한 후, Tencent 동영상 기동 게임의 사용자가 포인트 및 경험 추가 등과 같은, Tencent 동영상 및 게임과의 협력에 사용할 수 있습니다.

2 콜백

1) 귀하께서는 Tencent 오픈 플랫폼 상에서 게임 등록을 하시고 심사에 통과하셨거나, 귀하의 Tencent 연락인이 내부 채널을 통해 귀하의 게임 등록을 도와드렸습니다.

2) 이미 MSDK 액세스 설정 모듈 설명에 따라 액세스 설정을 완료하셨습니다.

3) plist 내 상응하는 URL Types 설정 항목을 변경해야 하며, 사례 내 qqappid 부분을 귀하의 애플리케이션의 qqappid로 바꿔야 합니다.

Identifier:tencentvideo

URL Schemes:tencentlaunch100703379

Role:Editor

4) OnWakeupNotify 콜백을 구현해야 합니다.

그중에서, Tencent 동영상에서 게임을 풀업할 때, WGPlatformObserver의 OnWakeupNotify(WakeupRet)를 통해 게임에 통지할 수 있고, WakeupRet.platform은 풀업한 게임의 플랫폼을 나타내며, 이때 WakeupRet.platform은 EWakeupPlatform.eWakeupPlatform_TencentVideo입니다. WakeupRet.extInfo은 Vector 유형이며, 플랫폼 풀 데이터를 보유하고 있습니다.

3 인터페이스 호출

없음

4) 반환값

없음

5) 예시 코드
- (void)onWakeupNotify:(WakeupRet&)wakeupRet

{

    NSString *message = @"";

    switch (wakeupRet.flag)

    {

        //Tencent 동영상 풀업 논리 처리

        case eFlag_Succ: 

            NSLog(@"MSDKDemo: 환기 성공");







            if(wakeupRet.platform == eWakeupPlatform_TencentVideo){

                for(KVPair kv :wakeupRet.extInfo){

                    NSString *key = [NSString stringWithCString:kv.key.c_str() encoding:NSUTF8StringEncoding];

                    NSString *value =[NSString stringWithCString:kv.value.c_str() encoding:NSUTF8StringEncoding];

                    message = [NSString stringWithFormat:@"%@%@:%@\n",message,key,value];

                }

                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”Tencent 동영상 풀업"

                                                                message:message

                                                               delegate:nil

                                                      cancelButtonTitle:@"확정"

                                                      otherButtonTitles: nil

                                      ];

                [alert show];

            }

            break;

        case eFlag_NeedLogin: 

        {

           //Tencent 동영상 풀업 논리 처리

            if(wakeupRet.platform == eWakeupPlatform_TencentVideo){

                for(KVPair kv :wakeupRet.extInfo){

                    NSString *key = [NSString stringWithCString:kv.key.c_str() encoding:NSUTF8StringEncoding];

                    NSString *value =[NSString stringWithCString:kv.value.c_str() encoding:NSUTF8StringEncoding];

                    message = [NSString stringWithFormat:@"%@%@:%@\n",message,key,value];

                }

                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”Tencent 동영상 풀업"

                                                                message:message

                                                               delegate:nil

                                                      cancelButtonTitle:@"확정"

                                                      otherButtonTitles: nil

                                      ];

                [alert show];

            }else{

                NSLog(@"MSDKDemo:다른 계정이 발생하여 로그인 페이지로 이동해야 함");

                WGPlatform::GetInstance()->WGLogout();

                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"다른 계정"

                                                                message:@"다른 계정이 발견되어 로그인 페이지로 이동해야 함"

                                                               delegate:nil

                                                      cancelButtonTitle:@"확정"

                                                      otherButtonTitles:nil];

                [alert show];

            }



            NSArray *vcArray = self.navigationController.viewControllers;

            if (vcArray.count >= 2)

            {

                [self.navigationController popToRootViewControllerAnimated:YES];

            }

        }



            break;

        case eFlag_UrlLogin: 

        {

            NSLog(@"MSDKDemo:다른 계정이 발생했으며 외부 풀업을 통해 로그인 성공");

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"다른 계정"

                                                            message:@"다른 계정을 발견했으며 외부 풀업을 통해 로그인 성공 후 OnLoginNotify 콜백 대기 중"

                                                           delegate:nil

                                                  cancelButtonTitle:@"확정"

                                                  otherButtonTitles:nil];

            [alert show];

        }



            break;

        case eFlag_NeedSelectAccount: 

        {

            NSLog(@"MSDKDemo:다른 계정이 발생했으며 사용자에게 선택 메시지를 표시해야 함");

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"다른 계정"

                                                            message:@"다른 계정이 발견되었으며 사용자에게 선택 메시지를 표시해야 함"

                                                           delegate:self

                                                  cancelButtonTitle:@"변환하지 않고 본래의 계정 사용"

                                                  otherButtonTitles:@"외부 계정 로그인으로 변환", nil];

            [alert show];

        }

            break;

        case eFlag_AccountRefresh: 

            NSLog(@"MSDKDemo:외부 계정과 이미 로그인한 계정이 같습니다. 외부 토큰을 사용해 로컬 토큰을 업데이트하십시오.");

            break;

        default: 

            break;

    }