프로젝트 구성
SDK 파일 임포트 완료 후, 다음으로 프로젝트 구성을 해야 합니다. 각각 다음과 같은 단계로 구성합니다.
1. 기본 정보 구성 (필수 구성 항목) 구성
모든 구성은 info.plist 파일에서 완료되며, 구성에 필요한 값은
configuration_data.txt파일에 표시됩니다.
Bundle id구성:info.plist에서 Key가Bundle identifier인 항목을 찾아 해당 값을 입력합니다(예: com.gamedreamer.demo).
- Build Settings에서 Other Linker Flags를 찾아
-ObjC항목을 추가합니다. 다음과 같이 표시됩니다:
- Build Settings에서 Other Linker Flags를 찾아
버전 번호구성:info.plist에서 Key가Bundle version과Bundle versions string, short인 항목을 찾아 해당 값을 입력합니다(이 값은 게임 담당자와 협의해야 합니다).
다음과 같이 표시됩니다:
2. 프로젝트 Swift 구성 (필수 구성 항목)
SDK의 최신 버전이 Swift 언어에 의존하기 때문에, Xcode 프로젝트에 Swift 종속성을 추가해야 합니다(20.12.22 이후 버전에서 구성 필요):
다음 두 가지 사항에 유의해야 합니다. 첫 번째는 필수 항목이고, 두 번째는 선택 항목입니다:
xml
1. Target -> Build Settings -> Build Options -> Always Embed Swift Standard Libraries -> YES
2. 일부 엔진에서 내보낸 Xcode 버전이 낮아 Swift compiler가 없는 경우, 게임 프로젝트에 내용이 없는 Swift 파일을 수동으로 추가하면 Swift compiler를 자동으로 추가할 수 있습니다.3. 푸시 기능 구성 (필수 구성 항목)
- Xcode 11.0 이하 버전에서
알림 푸시활성화:Project -> Targets -> Capabilities에서Push Notifications를 찾아 활성화합니다.
- Xcode 11.0 이하 버전에서
다음과 같이 표시됩니다:
- Xcode 11.0 이상 버전에서
알림 푸시활성화:Project -> Targets -> Signing & Capabilities -> +Capability에서Push Notifications를 찾아 더블클릭하여 추가합니다.
- Xcode 11.0 이상 버전에서
다음과 같이 표시됩니다:
4. 권한 정보 구성 (필수 구성 항목)
Schemes 화이트리스트구성:info.plist에 Key가LSApplicationQueriesSchemes인 항목을 추가하고,Type을Array로 설정하며, 해당 배열에 8개의String타입 항목을 추가합니다. Value는 각각fbauth2,fbapi,fbshareextension,fb-messenger-share-api,line3rdp.프로젝트의bundleId,lineauth,twitter,twitterauth입니다. *(1.8.0421 및 이전 버전의 SDK에서는twitter,twitterauth값을 구성할 필요가 없습니다) 다음과 같이 표시됩니다:
앨범 사용 권한구성:info.plist에 Key가NSPhotoLibraryUsageDescription과NSPhotoLibraryAddUsageDescription인 항목을 추가하고,Type을string으로 설정합니다. 이 두 항목의value는 동일하며, 값은 다음과 같습니다(게임 출시 지역 언어에 따라 값이 다릅니다):
| 지역 언어 | 입력 값 |
|---|---|
| 번체 중국어 | 將您的遊客安全資料存儲到手機相冊 |
| 간체 중국어 | 将您的游客安全资料存储到手机相册 |
| 태국어 | บัญชีข้อมูลของคุณจะถูกจัดเก็บในอัลบั้มโทรศัพท์ |
| 인도네시아어 | Data anda akan disimpan di Albums |
| 영어 | Save your information of guest account into the album of your device |
| 한국어 | 게스트정보는 캘러리에서 저장되었습니다 |
| 일본어 | ゲストアカウント資料をアルバムに保存する |
다음과 같이 표시됩니다:
5. Facebook 관련 정보 구성 (필수 구성 항목)
Facebook App ID구성:info.plist에 Key가FacebookAppID인 항목을 추가하고,Type을String으로 설정한 후 해당 값을 입력합니다(해당 값은configuration_data.txt파일에 있습니다).
URL Schemes구성:Project -> Targets -> Info -> URL Types의URL Schemes입력란에 해당 값을 입력합니다. 입력 규칙은문자열"fb"+facebook app id입니다.
Facebook Client Token구성:info.plist에 Key가FacebookClientToken인 항목을 추가하고,Type을String으로 설정한 후 해당 값을 입력합니다(해당 값은configuration_data.txt파일에 있습니다).
- 프로젝트 구성 Build Phases -> Link Binary With Libraries -> 시스템 라이브러리 Accelerate.framework 추가.
다음과 같이 표시됩니다:
6. Line 관련 정보 구성 (선택 구성 항목)
Line App ID구성:info.plist에 Key가LineSDKConfig인 항목을 추가하고,Type을Dictionary로 설정한 후 LineSDKConfig에String타입의 ChannelID 항목을 추가하고 해당 값을 입력합니다(해당 값은configuration_data.txt파일에 있습니다).
URL Schemes구성:Project -> Targets -> Info -> URL Types의URL Schemes에 항목을 추가하며, 해당 값은line3rdp.프로젝트의bundleId입니다.
다음과 같이 표시됩니다:
7. Twitter 관련 정보 구성 (선택 구성 항목)
Twitter ID찾기:configuration_data.txt파일에서Twitter에 해당하는 값을 확인합니다. Twitter 필드가 없는 경우 무시하세요. 다음과 같이 표시됩니다:
URL Schemes구성:Project -> Targets -> Info -> URL Types의URL Schemes에 항목을 추가하며, 해당 값은 이전 단계에서 얻은Twitter ID입니다.
다음과 같이 표시됩니다:
8. Google 관련 정보 구성 (선택 구성 항목)
Google ID찾기:configuration_data.txt파일에서Google에 해당하는 값을 확인합니다. Google 필드가 없는 경우 무시하세요. 다음과 같이 표시됩니다:
URL Schemes구성:Project -> Targets -> Info -> URL Types의URL Schemes에 항목을 추가하며, 해당 값은 이전 단계에서 얻은Google ID입니다.
다음과 같이 표시됩니다:
9. AppsFlyer 관련 정보 구성
- AppsFlyer 보고 주소
Advertising attribution report endpoint URL구성:info.plist에 Key가Advertising attribution report endpoint URL인 항목을 추가하고,Type을String으로 설정한 후https://appsflyer-skadnetwork.com/를 입력합니다.
- AppsFlyer 보고 주소
다음과 같이 표시됩니다:
- AppsFlyer
URL Schemes구성:Project -> Targets -> Info -> URL Types의URL Schemes입력란에 해당 값을 입력합니다. 입력 규칙은소문자GameCode+facebook app id이며,GamedreamerResources.bundle -> GamedreamerConfig.plist에서GameCode매개변수 값을 가져와 소문자로 변환할 수 있습니다.
- AppsFlyer
다음과 같이 표시됩니다:
10. iOS 14 IDFA 권한 구성 (필수 구성 항목)
- info.plist
다음과 같습니다:
xml
<key>NSUserTrackingUsageDescription</key>
<string>[xxxx]는 귀하의 장치 광고 식별자(IDFA)를 가져오고자 합니다. 이 정보는 귀하에게 더 나은 광고 경험을 제공하는 데 사용됩니다. 추적을 허용한 후, 귀하의 웹사이트 활동 정보에 따라 개인화된 광고를 게재합니다.</string>11. Apple 계정 로그인 기능 구성 (선택 구성 항목)
Apple 계정 로그인활성화:Project -> Targets -> Signing & Capabilities -> +Capability에서Sign In With Apple을 찾아 더블클릭하여 추가합니다.
다음과 같이 표시됩니다:
12. Universal Link 구성(선택 구성 항목, 기술 담당자에게 구성 여부를 확인하세요)
- Universal Link 기능 활성화:
Project -> Targets -> Signing & Capabilities -> +Capability에서Associated Domain을 찾아 더블클릭하여 추가합니다. 다음과 같이 표시됩니다:
- Universal Link 기능 활성화:
- 추가된 associated domain에 링크를 추가하며, 링크 내용은 기술 담당자에게 확인하세요. 다음과 같이 표시됩니다:

- 추가된 associated domain에 링크를 추가하며, 링크 내용은 기술 담당자에게 확인하세요. 다음과 같이 표시됩니다:
13. 프라이버시 목록 파일 구성 (권장 구성 항목, 심사 문제 방지)
주 프로젝트에 PrivacyInfo 파일 추가,
info.plist -> 우클릭하여 New File from Template에서App Privacy를 찾아 클릭하여 생성합니다. 다음과 같이 표시됩니다:
PrivacyInfo 파일 구성 참조는 다음과 같습니다:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyTracking</key>
<true/>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<true/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
<string>NSPrivacyCollectedDataTypePurposeDeveloperAdvertising</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeEmailAddress</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePhoneNumber</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePhotosorVideos</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeUserID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeOtherUsageData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeCrashData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<false/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<key>NSPrivacyTrackingDomains</key>
<array>
<string>ep1.facebook.com</string>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
</dict>
</plist>