04/28/2025 20:45:30

연동 가이드(iOS)

1 프로젝트 설정

1.1 파일 리스트

파일명 프로젝트 목록 비고
MSDKCore.framework MSDKSDK/ 주요로직
MSDKSensitivity.framework MSDKSDK/ idfa 플러그인 획득
MiniMSDK.framework ThirdSDK/MiniMSDK MSDKCore 에서 사용하는 기초 기능팩
ITopDns.framework ThirdSDK/HttpDns/ HttpDns 플러그인 유닛 팩
BeaconAPI_Base.framework ThirdSDK/Beacon/ HttpDns 에서 사용하는 Beacon 기반의 플러그인 유닛 팩
TDataMaster.framework ThirdSDK/TDM/ TData 의 iOS 접속층
MSDKAppSetting.bundle MSDKResource/ MSDKConfig.ini、 MSDKRetMsg.json 포함
MSDKConfig.ini MSDKAppSetting.bundle 제3자 및 내부 사용을 포함하여 사용자정의가 가능한 구성 항목
MSDKRetMsg.json MSDKAppSetting.bundle 에러코드 알림 메시지로, 복수 언어 설정이 가능하여 국제화 알림 메시지 지원
MSDKBuglyConfig.json MSDKAppSetting.bundle bugly 보고 시 사용되는 컴포넌트 설정

1.2 프로젝트 설정

  1. Framework Search Paths 에서 MSDK 관련 framework 경로 추가;
  2. Enable Bitcode 를 No 로 설정 ;
  3. 프로젝트에 다음과 같이 추가:
     libz.tbd
     libsqlite3.0.tbd
     libstdc++.tbd
     libc++.tbd
     Security.framework
     GameKit.framework
     AppTrackingTransparency.framework  (xcode 12 및 이상 버전에서 사용 가능)
    
  4. 프로젝트 Build Settings->Linking->Other Linker Flags 에서, -ObjC 신규 추가 xcode 설정

1.3 IDFA

iOS 14 Apple 에서 사용자의 개인정보 권한을 강화하였기 때문에 IDFA 를 수집하려면 info.plist 에서 설정을 추가하여 IDFA 를 취득한 용도에 대한 설명을 작성하여야 합니다. IDFA 인터페이스를 취득한 사용자를 호출할 때 사용자의 권한 여부를 묻고, 사용자가 권한을 부여하지 않을 경우, 획득한 IDFA 는 무의미한 00000-000000000-000000 입니다. IDFA 획득 모듈화, 신규 MSDKSensitivity.framework 는 실무에서 접속할 수 있습니다.

Xcode - Build Phases - Link Binary With Libraries 신규AppTrackingTransparency.framework Info.plist 에 key Privacy - Tracking Usage Description 추가,value 에 IDFA 사용 원인을 입력하세요

1.3.1 IDFA 수집하지 않는 방법

적용 버전: MSDK V 5.12 및 이상 버전

Apple 은 아동용 게임의 IDFA 수집이 허용되지 않기 때문에, MSDK 는 플러그인 유닛화 방식으로 IDFA 정보를 획득하여야 하며, 게임이 IDFA 수집을 허용하지 않을 경우, 게임에서 MSDKSensitivity.framework 를 삭제할 수 있습니다

Xcode 12 컴파일을 사용하려면 프로젝트에서 AppTrackingTransparency.framework 를 삭제해야 합니다

Unity 플러그인 유닛 위치 :

  • Plugins/iOS/GCloudSDK/MSDKCore/MSDKSensitivity.framework 삭제

UE4

  • Plugins/OneSDKPlugins/MSDKCore/Source/MSDKCore/lib/iOSMSDKSensitivity.embeddedframework.zip 파일 삭제
  • Plugins/OneSDKPlugins/MSDKCore/Source/MSDKCore/MSDKCore.Build.cs 파일에서 아래 내용 삭제
//IOSStart not delete
#if UE_4_22_OR_LATER 
PublicAdditionalFrameworks.Add(new Framework("MSDKSensitivity", "lib/iOS/MSDKCore/MSDKSensitivity.embeddedframework.zip", "MSDKAppSetting.bundle")); 
#else 
    PublicAdditionalFrameworks.Add(new UEBuildFramework("MSDKSensitivity", "lib/iOS/MSDKCore/MSDKSensitivity.embeddedframework.zip", "MSDKAppSetting.bundle")); 
#endif

2 프레임워크 실행 예제

2.1 초기화

AppDelegate.mm 파일에 MSDK 생명주기 함수 코드 심기를 추가합니다.

#import <MSDKCore/MSDKCore.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [[MSDKApplicationDelegate sharedInstance] application:application
                            didFinishLaunchingWithOptions:launchOptions];

    // 로그인 콜백, 다른 계정 로직 처리, 애플리케이션 실행 시 콜백 설정 필요함
    MSDKLogin::SetLoginObserver(new MyLoginObserver());

    return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [[MSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
}

- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary*)options {
    return [[MSDKApplicationDelegate sharedInstance] application:application
                                                         openURL:url
                                                         options:options];
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [[MSDKApplicationDelegate sharedInstance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    [[MSDKApplicationDelegate sharedInstance] application:application didFailToRegisterForRemoteNotificationsWithError:error];
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    [[MSDKApplicationDelegate sharedInstance] application:application didReceiveRemoteNotification:userInfo];
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [[MSDKApplicationDelegate sharedInstance] application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    [[MSDKApplicationDelegate sharedInstance] application:application didReceiveLocalNotification:notification];
}

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    return [[MSDKApplicationDelegate sharedInstance] application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
}
#pragma mark - Orientation

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
    return [[MSDKApplicationDelegate sharedInstance] application:application supportedInterfaceOrientationsForWindow:window];
}

2.2 인터페이스 호출 방법

1)콜백 리스너 생성

로그인 한 경우, MSDKLoginObserver 인터페이스를 활용하여 리스너를 생성할 수 있으며, 방법은 아래와 같습니다:

class MyLoginObserver : public MSDKLoginObserver {
    // 로그인 콜백, login、bind、autologin、switchuser 등 정보 포함
    void OnLoginRetNotify(const MSDKLoginRet &loginRet) {
        if (loginRet.retCode == MSDKError::NEED_REALNAME) {
            return;
        }
        handleCallback(loginRet, loginRet.methodNameID);
    };

    // 로그인 콜백, 애플리케이션 소환 콜백
    void OnBaseRetNotify(const MSDKBaseRet &baseRet) {
        if (baseRet.methodNameID == kMethodNameWakeUp) {
            handleDiffAccount(baseRet);
            return;
        }

        if (baseRet.retCode == MSDKError::NEED_REALNAME) {
            return;
        }
        handleCallback(baseRet, baseRet.methodNameID);
    };
};

로그인 성공의 경우 SUCCESS, 실패한 경우 실패 해당 에러코드를 발송하므로 상황에 맞춰 처리가 가능합니다.

2)콜백 리스너 설정

MSDKLogin 타입의 SetLoginObserver 를 통해 리스너 설정이 가능하며, 활용 예는 아래와 같습니다:

MSDKLogin::SetLoginObserver(new MyLoginObserver());

3)API 인터페이스 호출

MSDK 인터페이스는 모듈 별로 구분되어 있으므로 호출하기 전, 로그인/ 친구/WebView 등 해당 모듈을 찾아 주십시오. 로그인 상태에서의 호출 방법은 아래와 같습니다:

//채널에 따른 로그인 채널 설정
permissionList = @"snsapi_userinfo,snsapi_friend,snsapi_message";
//mSelectedChannel 채널 로그인
MSDKLogin::Login(self.currentChannel.UTF8String, permissionList.UTF8String, self.currentSubChannel.UTF8String);

주의:

  • 모듈마다 각각의 Observer가 있으며,리턴코드가 달라도 유사하게 호출될 수 있습니다
  • 하나의 모듈에는 하나의 Observer뿐이며, 여러 번의 설정 후, 최종 설정한 것으로 적용됩니다
  • 다른 계정으로 모듈에 로그인하여 Observer를 설정하는 경우,입구 didFinishLaunchingWithOptions 생명주기에도 콜백을 설정해야 합니다



Copyright © 2025 MSDK.
All rights reserved.

results matching ""

    No results matching ""