Skip to content

프로젝트 구성 ​

SDK 파일 임포트 완료 후, 다음으로 프로젝트 구성을 해야 합니다. 각각 다음과 같은 단계로 구성합니다.


1. 기본 정보 구성 (필수 구성 항목) 구성 ​

모든 구성은 info.plist 파일에서 완료되며, 구성에 필요한 값은 configuration_data.txt 파일에 표시됩니다.

    1. Bundle id 구성: info.plist에서 Key가 Bundle identifier인 항목을 찾아 해당 값을 입력합니다(예: com.gamedreamer.demo).
    1. Build Settings에서 Other Linker Flags를 찾아 -ObjC 항목을 추가합니다. 다음과 같이 표시됩니다:
    1. 버전 번호 구성: 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. 푸시 기능 구성 (필수 구성 항목) ​

    1. Xcode 11.0 이하 버전에서 알림 푸시 활성화: Project -> Targets -> Capabilities에서 Push Notifications를 찾아 활성화합니다.

다음과 같이 표시됩니다:

    1. Xcode 11.0 이상 버전에서 알림 푸시 활성화: Project -> Targets -> Signing & Capabilities -> +Capability에서 Push Notifications를 찾아 더블클릭하여 추가합니다.

다음과 같이 표시됩니다:


4. 권한 정보 구성 (필수 구성 항목) ​

    1. 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 값을 구성할 필요가 없습니다) 다음과 같이 표시됩니다:
    1. 앨범 사용 권한 구성: 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 관련 정보 구성 (필수 구성 항목) ​

    1. Facebook App ID 구성: info.plist에 Key가 FacebookAppID인 항목을 추가하고, Type을 String으로 설정한 후 해당 값을 입력합니다(해당 값은 configuration_data.txt 파일에 있습니다).
    1. URL Schemes 구성: Project -> Targets -> Info -> URL Types의 URL Schemes 입력란에 해당 값을 입력합니다. 입력 규칙은 문자열"fb"+facebook app id입니다.
    1. Facebook Client Token 구성: info.plist에 Key가 FacebookClientToken인 항목을 추가하고, Type을 String으로 설정한 후 해당 값을 입력합니다(해당 값은 configuration_data.txt 파일에 있습니다).
    1. 프로젝트 구성 Build Phases -> Link Binary With Libraries -> 시스템 라이브러리 Accelerate.framework 추가.

다음과 같이 표시됩니다:


6. Line 관련 정보 구성 (선택 구성 항목) ​

    1. Line App ID 구성: info.plist에 Key가 LineSDKConfig인 항목을 추가하고, Type을 Dictionary로 설정한 후 LineSDKConfig에 String 타입의 ChannelID 항목을 추가하고 해당 값을 입력합니다(해당 값은 configuration_data.txt 파일에 있습니다).
    1. URL Schemes 구성: Project -> Targets -> Info -> URL Types의 URL Schemes에 항목을 추가하며, 해당 값은 line3rdp.프로젝트의bundleId입니다.

다음과 같이 표시됩니다:


7. Twitter 관련 정보 구성 (선택 구성 항목) ​

    1. Twitter ID 찾기: configuration_data.txt 파일에서 Twitter에 해당하는 값을 확인합니다. Twitter 필드가 없는 경우 무시하세요. 다음과 같이 표시됩니다:
    1. URL Schemes 구성: Project -> Targets -> Info -> URL Types의 URL Schemes에 항목을 추가하며, 해당 값은 이전 단계에서 얻은 Twitter ID입니다.

다음과 같이 표시됩니다:


8. Google 관련 정보 구성 (선택 구성 항목) ​

    1. Google ID 찾기: configuration_data.txt 파일에서 Google에 해당하는 값을 확인합니다. Google 필드가 없는 경우 무시하세요. 다음과 같이 표시됩니다:
    1. URL Schemes 구성: Project -> Targets -> Info -> URL Types의 URL Schemes에 항목을 추가하며, 해당 값은 이전 단계에서 얻은 Google ID입니다.

다음과 같이 표시됩니다:


9. AppsFlyer 관련 정보 구성 ​

    1. AppsFlyer 보고 주소 Advertising attribution report endpoint URL 구성: info.plist에 Key가 Advertising attribution report endpoint URL인 항목을 추가하고, Type을 String으로 설정한 후 https://appsflyer-skadnetwork.com/를 입력합니다.

다음과 같이 표시됩니다:

    1. AppsFlyer URL Schemes 구성: Project -> Targets -> Info -> URL Types의 URL Schemes 입력란에 해당 값을 입력합니다. 입력 규칙은 소문자GameCode+facebook app id이며, GamedreamerResources.bundle -> GamedreamerConfig.plist에서 GameCode 매개변수 값을 가져와 소문자로 변환할 수 있습니다.

다음과 같이 표시됩니다:


10. iOS 14 IDFA 권한 구성 (필수 구성 항목) ​

    1. info.plist

다음과 같습니다:

xml
<key>NSUserTrackingUsageDescription</key>
<string>[xxxx]는 귀하의 장치 광고 식별자(IDFA)를 가져오고자 합니다. 이 정보는 귀하에게 더 나은 광고 경험을 제공하는 데 사용됩니다. 추적을 허용한 후, 귀하의 웹사이트 활동 정보에 따라 개인화된 광고를 게재합니다.</string>

11. Apple 계정 로그인 기능 구성 (선택 구성 항목) ​

    1. Apple 계정 로그인 활성화: Project -> Targets -> Signing & Capabilities -> +Capability에서 Sign In With Apple을 찾아 더블클릭하여 추가합니다.

다음과 같이 표시됩니다:


    1. Universal Link 기능 활성화: Project -> Targets -> Signing & Capabilities -> +Capability에서 Associated Domain을 찾아 더블클릭하여 추가합니다. 다음과 같이 표시됩니다:
    1. 추가된 associated domain에 링크를 추가하며, 링크 내용은 기술 담당자에게 확인하세요. 다음과 같이 표시됩니다:

13. 프라이버시 목록 파일 구성 (권장 구성 항목, 심사 문제 방지) ​

  1. 주 프로젝트에 PrivacyInfo 파일 추가, info.plist -> 우클릭하여 New File from Template에서 App Privacy를 찾아 클릭하여 생성합니다. 다음과 같이 표시됩니다:

  2. 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>