04/28/2025 20:45:30
제3자 App 부팅 특권
1 개요
제3자 APP 부팅 특권은, 사용자가 제3자 APP 에서 게임을 소환하여 게임에 데이터를 받을 수 있도록 하는 기능으로 제3자 APP 과 게임의 협업에 사용됩니다.
2 연동 가이드
2.1 전제 조건
- Unity 레이어 CSharp 파일을 이미 Unity 프로젝트로 도입해 온 경우
- iOS 및 Android 관련 파일을 Unity 프로젝트 디렉토리: Assets/Plugins/iOS (Android) 로 도입하려는 경우
- 다음 순서에 따라 게임 기능을 부팅시키는 연동을 완료합니다
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 로 로그인 모듈에 콜백을 등록합니다. 게임에서 처리를 위해 콜백 함수 기능을 등록하여야 합니다. 주의사항:애플리케이션 실행함수에 게임 등록을 해야 합니다.
인터페이스 성명, 성명 애플리케이션으로 콜백 소환
// 로그아웃 콜백, 애플리케이션 콜백 소환
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)샘플 코드
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자 애플리케이션에서 전달하는 것입니다.
All rights reserved.