초기화
Unity3D
개요
액세스 내비게이션
자주 묻는 질문
Android
개요
액세스 내비게이션
자주 묻는 질문
IOS
개요
액세스 내비게이션
자주 묻는 질문
기타
데이터 구조
시스템 도구
초기화 / IOS / 개요

개요

MSDK는 Tencent IEG에서 자체 연구 및 제 3자 모바일 게임 개발 팀이 개발하여 제공하며, 게임이 신속히 Tencent의 각 주요 플랫폼에 액세스해 온라인 운영할 수 있도록 돕는 공개 구성 요소 및 서비스 라이브러리입니다.

액세스 내비게이션

1 사전 요구 사항

1) 먼저 MSDK iOS 버전 획득 여부를 확인하고, 획득하지 않은 경우에는 아래 링크를 클릭해 다운로드하십시오.

MSDK for iOS 내부 네트워크 다운로드

MSDK for iOS 외부 네트워크 다운로드

2) Xcode 7.0 이상의 환경이 설치되어 있어야 합니다.

2 설치 팩 구조

MSDK의 iOS 버전 팩에는 샘플 Demo 및 libstdc++와 libc++ 두 개 버전의 라이브러리 framework, framework가 있으며, MSDKDemo/Library 디렉토리에 저장된 것은 다음 그림과 같습니다.

그중에서 _C11이 파일 폴더 이름 안에 없는 것은 libstdc++ 버전으로, “Build Setting->C++ Language Dialect”에 사용하며, 설정은 GNU++98입니다. “Build Setting->C++ Standard Library”은 “libstdc++(GNU C++ standard library)”의 프로젝트입니다.

_C11이 파일 폴더 이름 안에 있는 것은 libc++ 버전으로, “Build Setting->C++ Language Dialect”에 사용하며, 설정은 GNU++11입니다. “Build Setting->C++ Standard Library”은 “libc++(LLVM C++ standard library with C++11 support)”의 프로젝트입니다.

3 모듈 설명

MSDKFoundation.framework, 기초 종속 라이브러리, 데이터 통계, Crash 보고 등 기능 포함.

MSDK.framework, 기초적인 로그인, 공유, LBS, 실명 등록 등의 기능 제공.

MSDKMarketing.framework, 내장 브라우저, 공지 관련 기능 제공.

MSDKXG.framework, 푸시 관련 기능 제공.

그중에서 MSDKFoundation.framework가 기초 종속 라이브러리인 경우에는, 반드시 별도의 3개를 옵션 라이브러리로 가져와야 하며, 실제 요청에 따라 입력할 수 있습니다.

4 MSDK 불러들이기

요청에 따라 각 framework를 프로그램 설정의 Target->Build Phases->Link Binary With Libraries 안에 입력합니다. 다음 그림과 같습니다.

주의사항

1) 실명 등록 및 내장 브라우저의 게임 액세스는, MSDK.framework, MSDKMarketing.framework 액세스 이외에도 리소스 파일 MSDKResources.bundle, WGPlatformResources.bundle를 프로젝트 설정의 Target->Build Phases->Copy Bundle Resources 내에 입력해야 합니다. 그렇게 하지 않을 경우, 실명 등록 인터페이스에서 버튼 이미지가 없어지거나, 내장 브라우저에서 Crash가 발생하는 등의 문제가 있을 수 있습니다.
2) 일부 게임은 framework 입력 후에 framework를 찾을 수 없는 상황이 발생할 수 있으며, 현재는 내장 브라우저를 열 수 없는 것으로 보입니다. 로그에서 “no MSDKWebViewService exist”를 출력하면, 이때 Other link flags에서 -ObjC-framework MSDKMarketing을 추가해야 합니다. 그 예시는 아래 그림과 같습니다.

5 시스템 종속 라이브러리 입력

libz.tdb
libstdc++.tdb//C11버전을 사용하는 게임은 libc++.tdb를 사용
libz.1.1.3.tdb
libsqlite3.tdb
libxml2.tdb
CoreTelephony.framework
SystemConfiguration.framework
UIKit.framework
Foundation.framework
CoreGraphics.framework
MobileCoreServices.framewrok
StoreKit.framework
CFNetwork.framewrok
CoreData.framework
Security.framework
CoreLocation.framework
ImageIO.framework
CoreText.framework
QuartzCore.framework
AdSupport.framework

6 게임 정보 설정

다음 몇 개 필드의 게임 정보는 모두 프로젝트의 info.plist 파일 내에서 설정해야 하며, 각 필드의 값은 귀하의 게임 운영 관리를 통해 페이잉(飞鹰) 시스템(dev.ied.com) 상에서 획득할 수 있습니다.

필드 유형 설명
MSDKKey String 이 게임의 MSDK 프론트/백그라운드 교류 시 사용하는 id
QQAppID String 게임의 모바일QQ 개발 플랫폼의 AppId
QQAppKey String 게임의 모바일QQ 개발 플랫폼의 AppKey(2.18.0 이후 버전은 QQAppKey 재설정 불요)
WXAppID String 게임의 위챗 개발 플랫폼의 AppId
MSDK_OfferId String Midas 플랫폼 iOS 결제 OfferId.
게임 운영측에서 RDM 공식 웹사이트 rdm.oa.com에서 애플 정보를 요청하고, 요청이 완료된 후에 정보가 RTX페이잉 비서에서 페이잉(飞鹰) 백그라운드에 기록됩니다. 그런 다음, 개발업체는 오픈 플랫폼 관리 센터에서 IAP 버전을 추가하고, IAP 버전 추가 후에는 안내에 따라 자동으로 OfferId를 생성합니다.

7 MSDK 관련 정보 설정

다음의 몇 가지 필드는 MSDK 기능 관련 설정 정보로, 게임 자체의 요구에 따라 프로젝트 info.plist 파일 내에 설정해야 합니다. 구체적인 설정 및 설명은 다음과 같습니다.

필드 유형 설명
MSDK_ENV String MSDK 환경 선택, 통합 및 테스트 시에 테스트 환경 test를 선택할 수 있으며, 정식 발표 시에는 반드시 정식 release를 선택해야 합니다.
AutoRefreshToken Boolean MSDK 위챗에서 자동으로 토큰 새로고침을 켜고 끕니다. 기본 스위치에 관한 상세 정보는 로그인 모듈
MSDK_PUSH_SWITCH Boolean 전서구(信鸽) 푸시 기능 스위치이며 기본값은 꺼져 있습니다.
NeedNotice Boolean MSDK 공지 기능 스위치로 기본값은 꺼져 있습니다.
NoticeTime Number MSDK 공지 시스템이 데이터 갱신 시간(네트워크 접속 공지 데이터 요청)을 공지하고, 단위는 초(최소 300초)이며 기본값은 600초입니다.
MSDK_REAL_NAME_AUTH_SWITCH Number 실명 인증 설정으로, 기본값은 0입니다.
0: MSDK 실명 인증 UI를 사용해 인증 후에 로그인 페이지로 돌아갑니다.
1: MSDK 실명 인증 UI를 사용하며, 인증 후에 게임에 로그인 진입합니다.
2: 게임 자체 정의 인증 UI를 사용하며 인증 후에 게임으로 돌아갑니다.
CHANNEL_DENGTA String iOS 시스템 채널 번호
NSLocationWhenInUseUsageDescription String iOS8 하에서 LBS 포지셔닝 기능에 사용되며 값은 공백이 될 수 있음
MSDK_Webview_Portrait_NavBar_Hideable Boolean 내장 브라우저 세로 화면 시에 탐색창 감추기 기능 스위치이며 기본값은 껴져 있습니다.
MSDK_Webview_Landscape_NavBar_Hideable Boolean 가로 화면 시에 탐색창 감추기 기능 스위치이며 기본값은 껴져 있습니다.
MSDK_DO_BEACON_EVENT_IP_SWITCH String Msdk 내부 등대 보고 스위치 사용이며, 기본값은 1 켜짐
MSDK_DO_BEACON_EVENT_SWITCH String Msdk 내부 등대 보고 스위치 사용이며, 기본값은 1 켜짐

8 Scheme 화이트리스트 ATS 정보 설정

iOS9 시스템의 제한으로 인해, info.plist 파일 내에 이동 Scheme 화이트리스트를 설정해야 모바일QQ, 위챗의 승인 및 공유를 정상적으로 풀업할 수 있습니다. 그렇게 하지 않을 경우, 승인 또는 공유 시에 "-canOpenURL:failed for URL:"mqq://" - error:"This app is not allowed to query for scheme mqq"”와 유사한 오류로 인해 승인 및 공유가 불가능할 수 있습니다. 또한, http 전송 지원을 설정해야 하며, 그렇게 하지 않을 경우, iOS9 이상의 시스템의 모든 http 요청이 시스템에 의해 차단(2.16.0 버전은 ATS를 재설정할 수 없으며, ATS 선언의 게임 심사 제출 시에 애플에 설명해야 함)될 수 있습니다. 다음 정보를 info.plist 안에 직접 copy할 수 있습니다.:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>mqq</string>
    <string>mqqapi</string>
    <string>wtloginmqq2</string>
    <string>mqqopensdkapiV4</string>
    <string>mqqopensdkapiV3</string>
    <string>mqqopensdkapiV2</string>
    <string>mqqwpa</string>
    <string>mqqOpensdkSSoLogin</string>
    <string>mqqgamebindinggroup</string>
    <string>mqqopensdkfriend</string>
    <string>mqzone</string>
    <string>weixin</string>
    <string>wechat</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

9 URL Types 설정

게임은 또한 프로젝트 설정의 Target->Info->URL Types 내에 다음 URL Scheme을 설정해야 플랫폼 승인 후, 플랫폼 게임 센터에서, 공유 정보 클릭 등을 통해 게임을 정상적으로 풀업할 수 있습니다. 구체적인 설정 정보는 다음과 같습니다.

Identifier URL Scheme 예시 비고
weixin 게임 위챗 AppID wxcde873f99466f74a 위챗 액세스 시 필수 입력
tencentopenapi 형식: tencent + 게임의 QQAppID tencent100703379 모바일QQ 액세스 시 필수 입력이며 중간에 공백 없음
QQ 형식: QQ + 게임의 QQAppID의 16자리 QQ06009C93 모바일QQ 액세스 시 필수 입력이며 중간에 공백 없음
QQLaunch 형식: tencentlaunce + 게임의 QQAppID tencentlaunch100703379 모바일QQ 액세스 시 필수 입력이며 중간에 공백 없음

설정 결과는 다음 그림과 같습니다.

10 투명 전송 플랫폼 풀업 URL 파라미터

게임은 플랫폼에 의해 풀업되는 메소드에서 풀업된 URL 파라미터를 MSDK에 투명 전송하며, 그렇지 않을 경우에는 MSDK의 승인된 로그인, 공유 콜백을 수신할 수 없습니다. 구체적인 메소드는 AppDelegate.m- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 메소드이며, 그 예시는 다음과 같습니다.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!url == %@",url);
    //MSDK 초기화
    WGPlatform *plat = WGPlatform::GetInstance();
    WGPlatformObserver *ob = plat->GetObserver();
    if (!ob)
    {
        //콜백 설정
        MyObserver* ob = MyObserver::GetInstance();
        plat->WGSetObserver(ob);
        plat->WGSetADObserver(ob);
        plat->WGSetGroupObserver(ob);
    }
    //URL 파라미터를 MSDK에 투명 전송
    return  [WGInterface  HandleOpenURL:url];
}

MSDK 초기화

게임은 AppDelegate.m 내 다음의 두 게임 기동 액세스 포인트에서 MSDK를 초기화하고 콜백 Observer를 설정할 수 있습니다. 먼저 헤드 파일 #import <MSDK/MSDK.h>을 입력해야 한다는 점에 유의해 주십시오.

액세스 포인트1 정상 기동

참고 예시:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    //MSDK 초기화
    WGPlatform *plat = WGPlatform::GetInstance();
    WGPlatformObserver *ob = plat->GetObserver();
    if (!ob)
    {
        //콜백 설정
        MyObserver *ob = MyObserver::GetInstance();
        plat->WGSetObserver(ob);
        plat->WGSetGroupObserver(ob);
        plat->WGSetWebviewObserver(ob);
    }
    return YES;
}

액세스 포인트2 플랫폼에서 풀업

예시 코드:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!url == %@",url);
    //MSDK 초기화
    WGPlatform *plat = WGPlatform::GetInstance();
    WGPlatformObserver *ob = plat->GetObserver();
    if (!ob)
    {
        //콜백 설정
        MyObserver* ob = MyObserver::GetInstance();
        plat->WGSetObserver(ob);
        plat->WGSetADObserver(ob);
        plat->WGSetGroupObserver(ob);
    }
    //URL 파라미터를 MSDK에 투명 전송
    return  [WGInterface  HandleOpenURL:url];
}

로그인 콜백, 플랫폼 풀업 콜백 처리

로그인 콜백, 플랫폼 풀업 콜백은 게임이 관련 인터페이스를 호출하지 않았을 때 촉발할 수 있으므로 게임이 MSDK를 초기화하기 전에 등록해야 합니다.

로그인 콜백

로그인 이벤트 결과 통지, 게임이 모바일QQ/위챗의 로그인 상태에서 로그인 콜백을 기준으로 합니다. 상세 설정에 대해서는 로그인 모듈의 콜백 설정을 참조하십시오. 예시 코드:

void MyObserver::OnLoginNotify(LoginRet& loginRet)
{
    if(loginRet.flag == eFlag_Succ)
    {
        //로그인 성공
        //게임 TODO: 게임 진입
    }
    else if (loginRet.flag == eFlag_NeedRealNameAuth)
    {
        //실명 인증을 해야 하며, 작업은 자체적으로 실명 인증 절차를 설정할 수 있음. info.plist 내에서 MSDK_REAL_NAME_AUTH_SWITCH을 설정하고, 기본값은 0이 됨
        //0, 작업에서 어떠한 조작도 하지 않고 로그인 페이지에 계속 있으면 되며, MSDK에서 자동으로 실명 등록 인터페이스가 팝업되어 사용자에게 등록을 안내하고, 등록을 완료하면 사용자의 재로그인을 안내함.
        //1, 작업에서 어떠한 조작도 하지 않고 로그인 페이지에 계속 있으면 되며, MSDK에서 자동으로 실명 등록 인터페이스가 팝업되어 사용자에게 등록을 안내함. 작업은 로그인 콜백을 다시 모니터링해야 하며 실명 등록에 성공하면 MSDK는 자동으로 로컬 토큰 로그인 인터페이스를 호출해 자동 로그인할 수 있음
       //2, 작업 자체 정의 실명 인증 인터페이스로 자체적으로 실명 인증 절차를 실시함
        //자체 정의 인터페이스 인증 절차

        //1 실명 인증 인터페이스를 팝업해 사용자에게 관련 정보를 입력하게 함
        //2 WGSetRealNameAuthObserver 인터페이스를 호출해 실명 인증 콜백을 설정
        //3 MSDK 실명 인증 인터페이스를 호출해 인증 및 콜백 대기 실행
        //4 OnRealNameAuthNotify 콜백 처리
    }
    else
    {
        //로그인 실패
        //게임 TODO: flag에 따라 플레이어 관련 정보를 제시
    }
}

플랫폼 풀업 콜백

모바일QQ, 위챗 내에서 게임을 풀업할 때 이 콜백으로 돌아갈 수 있으며, 풀업 안에는 풀업 계정, 플랫폼 데이터 투명 정보 등의 정보를 포함합니다. 상세 설정 정보는 로그인 모듈의 다른 계정 처리를 참조하십시오.

예시 코드:

void MyObserver::OnWakeupNotify(WakeupRet& wakeupRet)
{
    switch (wakeupRet.flag)
    {
        case eFlag_Succ: 
            //로컬 계정 로그인 성공 후 직접 게임 진입이 가능하며, 자동 로그인 인터페이스 WGLogin()을 호출해 로그인 콜백을 기다릴 수 있습니다.
            break;
        case eFlag_NeedLogin: 
            //유효한 토큰이 없을 경우, 게임에서 로그아웃되며 사용자에게 다시 로그인하게 함
            break;
        case eFlag_UrlLogin: 
            //로컬에 계정 정보가 없으며 자동으로 풀업한 계정으로 로그인하고 로그인 콜백을 기다림
            break;
        case eFlag_NeedSelectAccount: 
            // 팝업창을 띄어 고객으로 하여금 로그인해야 할 계정을 선택하게 하며, 사용자의 선택에 따라 WGSwitchUser 인터페이스를 호출
            break;
        case eFlag_AccountRefresh: 
            //외부 계정과 이미 로그인한 계정이 같음. 외부 토큰을 사용해 로컬 토큰을 업데이트해야 함
            break;
        default: 
            break;
    }
}

자주 묻는 질문