04/28/2025 20:45:30

제3자 App 부팅 특권

1 개요

제3자 APP 부팅 특권은, 사용자가 제3자 APP 에서 게임을 소환하여 게임에 데이터를 받을 수 있도록 하는 기능으로 제3자 APP 과 게임의 협업에 사용됩니다.

2 연동 가이드

2.1 전제 조건

  1. Unity 레이어 CSharp 파일을 이미 Unity 프로젝트로 도입해 온 경우
  2. iOS 및 Android 관련 파일을 Unity 프로젝트 디렉토리: Assets/Plugins/iOS (Android) 로 도입하려는 경우
  3. 다음 순서에 따라 게임 기능을 부팅시키는 연동을 완료합니다

2.2 Activity 정보 실행 설정

1)scheme 정보 설정

  • Android 설정

Android 의 프로젝트 AndroidManifest.xml 에서의 설정:

<activity android:name="com.tencent.gcloud.msdk.SchemeActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="tencentmsdk${MSDK_GAME_ID}" />
    </intent-filter>
</activity>

Android 는 Assets/Plugins/Android/assets/MSDKConfig.ini 에 설정되어야 합니다:(데이터 전달을 위한 구성 항목)

MSDK_LIFECYCLE_SCHEME = 1
  • iOS 설정

iOS 의 프로젝트 info.plist 에서의 설정:

<dict>
    <key>CFBundleTypeRole</key>
    <string>Editor</string>
    <key>CFBundleURLSchemes</key>
    <array>
        <string>tencentmsdk${MSDK_GAME_ID}</string>
    </array>
</dict>

iOS 는 Assets/Plugins/iOS/GCloudSDK/MSDKCore/MSDKAppSetting.bundle/MSDKConfig.ini 에 설정되어야 합니다:(데이터 전달을 위한 구성 항목)

MSDK_LIFECYCLE_SCHEME = 1

설명:Android 와 iOS 의 scheme 협의는 모두 반드시 tencentmsdk 로 시작되어야 하며, 뒤에 본인의 MSDK_GAME_ID 를 추가하는 것을 권장합니다.

2)등록과 콜백 구현

  • 기능 설명 제3자 데이터 전송 특권을 시작하고 MSDK 로 로그인 모듈에 콜백을 등록합니다. 게임에서 처리를 위해 콜백 함수 기능을 등록하여야 합니다. 주의사항:애플리케이션 실행함수에 게임 등록을 해야 합니다.

  • 인터페이스 성명, 성명 애플리케이션으로 콜백 소환

C#
C++
// 로그아웃 콜백, 애플리케이션 콜백 소환
public static event OnMSDKRetEventHandler<MSDKBaseRet> LoginBaseRetEvent;

// 로그인 콜백, login, bind, autologin, switchuser 등 포함
public static event OnMSDKRetEventHandler<MSDKLoginRet> LoginRetEvent;
class MSDKLoginObserver
{
public:
    // 로그인 콜백, login, bind, autologin, switchuser 등 포함
    virtual void OnLoginRetNotify(const MSDKLoginRet &loginRet) {};

    // 로그아웃 콜백, 애플리케이션 콜백 소환
    virtual void OnBaseRetNotify(const MSDKBaseRet &baseRet) {};
};

3)샘플 코드

C#
C++
MSDKLogin.LoginRetEvent += OnLoginRetEvent;
MSDKLogin.LoginBaseRetEvent += OnLoginBaseRetEvent;

private void OnLoginRetEvent(MSDKLoginRet loginRet)
{
    // login thing...
}

private void OnLoginBaseRetEvent(MSDKBaseRet baseRet)
{
    Debug.Log ("OnBaseRetNotify in Login");
    if (baseRet.MethodNameId == (int)MSDKMethodNameID.MSDK_LOGIN_SCHEME)
    {
        // TODO get the data baseRet from third App
        SampleInstance.showRetDialog(methodTag, baseRet);
    }
    else
    {
        // other thing...
    }
}
MSDKLogin::SetLoginObserver(new MSDKDemoBaseLoginObserver());

class  MSDKDemoBaseLoginObserver: public GCloud::MSDK::MSDKLoginObserver
{

public:
    // 로그인 콜백, login, bind, autologin, switchuser 등 포함
    virtual void OnLoginRetNotify(const GCloud::MSDK::MSDKLoginRet &loginRet)
    {
        // other thing...
    };

    // 로그아웃 콜백, 애플리케이션 콜백 소환
    virtual void OnBaseRetNotify(const GCloud::MSDK::MSDKBaseRet &baseRet)
    {
        String ret = MSDKUtils::FormatJson(MSDKJsonManager::ToJson(baseRet));
        if (baseRet.methodNameID == KMethodNameScheme)
        {
            // TODO get the data baseRet from third App

        }
        else
        {
            // other thing...
        }        
    };
};

3 데이터 전달 포맷

제3자 애플리케이션에서 게임을 열면, MSDK 는 제3자가 전하는 데이터를 게임에 발송해 extraJson 의 params 에서 대응하는 필드를 가져옵니다

데이터 포맷은 다음과 같습니다:

{
    "extraJson":"{\"params\":\"{ \\\"gamedata\\\":\\\"\\\",\\\"atoken\\\":\\\"4F36036C72D22D1B0BA83962A6F3567C\\\",\\\"openid\\\":\\\"9BD458A9B32ED23EF2D82F2B60AA4720\\\",\\\"ptoken\\\":\\\"2B70BDF836B9361ED3AE490F975E4856\\\",\\\"user_openid\\\":\\\"9BD458A9B32ED23EF2D82F2B60AA4720\\\",\\\"platformdata\\\":\\\"tencent1106977030\\\",\\\"launchfrom\\\":\\\"sq_gamecenter\\\",\\\"platform\\\":\\\"qq_m\\\"}\"}",
    "methodNameID":120,
    "retCode":0,
    "retMsg":"Success",
    "ret":1,
    "msg":""
}

설명:extraJson 의 params 에서 대응하는 필드, 이름과 콘텐츠는 모두 제3자 애플리케이션에서 전달하는 것입니다.



Copyright © 2025 MSDK.
All rights reserved.

results matching ""

    No results matching ""