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 프로젝트 설정
- Framework Search Paths 에서 MSDK 관련 framework 경로 추가;
- Enable Bitcode 를 No 로 설정 ;
- 프로젝트에 다음과 같이 추가:
libz.tbd libsqlite3.0.tbd libstdc++.tbd libc++.tbd Security.framework GameKit.framework AppTrackingTransparency.framework (xcode 12 및 이상 버전에서 사용 가능)
- 프로젝트 Build Settings->Linking->Other Linker Flags 에서, -ObjC 신규 추가
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 생명주기에도 콜백을 설정해야 합니다
All rights reserved.