Unreal iOS
Hive SDK Unreal Engine 4 iOS 및 Hive SDK Unreal Engine 5 iOS로 앱 개발을 완료한 후 앱을 빌드할 때 다음 항목을 설정해야 합니다.
- Unreal 에디터에서 편집 > 프로젝트 세팅을 클릭하세요. 프로젝트 설정 창이 화면에 나타납니다.
- 프로젝트 설정 창의 좌측 패널에서 플랫폼 제목 아래의 iOS를 선택하세요. iOS 설정 화면이 나타나면, 그룹별로 안내된 항목을 설정하세요.
그룹별 설정¶
그룹별 설정 안내입니다.
-
Bundle Information 그룹: 번들 식별자(Bundle Identifier) 필드에 App ID를 입력하세요.
-
OS Info 그룹: Unreal Engine 4.25부터 지원하는 OS 버전이 11.0 이상으로 변경되었습니다. Minimum OSVersion 필드 값을 11.0으로 설정하세요.
-
Build 그룹: Additional Non-Shipping Linker Flags 필드와 Additional Shipping Linker Flags 필드에 -ObjC를 입력하세요.
Extra PList Data 그룹 설정¶
Additional PList Data 필드에 아래에서 안내하는 각 설정 항목에 따라 코드 라인들을 입력하세요. 아래 모든 코드들을 합쳐 한 줄로 입력해야 합니다.
접근 권한 요청 설정¶
접근 권한 요청 설정을 위해 Additional PList Data 필드에 다음 코드를 추가하세요.
<key>NSCameraUsageDescription</key>
<string>Approval required to take pictures.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Approval required to upload image files.</string>
<key>NSUserTrackingUsageDescription</key>
<string>We need your permission to use the Advertising Identifiers (IDFA) for promotion targeting and tracking analysis.</string>
인증: Facebook, QQ, VK, WeChat, LINE 설정¶
Facebook, QQ, VK, WeChat, LINE 인증을 이용할 경우, 서버 Whitelist를 설정하기 위해 Additional PList Data 필드에 다음 코드를 추가하세요.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>vk-share</string>
<string>vkauthorize</string>
<string>vk</string>
<string>weixinULAPI</string>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqopensdkapiV2</string>
<string>lineauth2</string>
<string>mqqopensdkapiV3</string>
<string>wtloginmqq2</string>
<string>mqq</string>
<string>mqqapi</string>
</array>
Facebook 이용 시 다음의 코드를 이용하여 Facebook AppID와 ClientToken을 추가하세요. 반드시 앱에 대한 Facebook AppID와 ClientToken 값을 입력하세요.
<key>FacebookAppID</key><string>926000000000000</string>
<key>FacebookClientToken</key><string>d123783h7sdfyh8031h23unf81h3</string>
각 IdP별로 URL Scheme을 설정합니다.
<key>CFBundleURLTypes</key>
<array>
<!--Facebook 이용을 위함. 여러분의 앱의 Facebook App ID 값을 넣어 주세요-->
<dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLSchemes</key><array><string>fb926000000000000</string></array></dict>
<!--Hive 플랫폼에서 딥링크 사용을 위함. 여러분의 AppID 값을 넣어 주세요-->
<dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLSchemes</key><array><string>com.com2us.misample.normal.freefull.apple.global.ios.universal</string></array></dict>
<!--Google Sign-in을 위함. 여러분 앱의 Google Sign-in 키 값을 넣어 주세요-->
<dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLSchemes</key><array><string>com.googleusercontent.apps.270000000000-0m7r8tb2co1q00000000000000000000</string></array></dict>
<!--QQ Sign-in을 위함. 여러분 앱의 QQ 키 값을 넣어 주세요-->
<dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>tencent</string>
<key>CFBundleURLSchemes</key><array><string>tencent1106227203</string></array></dict>
<!--Wechat Sign-in을 위함. 여러분 앱의 Wechat 키 값을 넣어 주세요-->
<dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>weixin</string><key>CFBundleURLSchemes</key><array><string>wx78176cf0c698c0f9</string></array></dict>
<!--VK Sign-in을 위함. 여러분 앱의 VK 키 값을 넣어 주세요-->
<dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>vk6270065</string><key>CFBundleURLSchemes</key><array><string>vk6270065</string></array></dict>
<!--Line Sign-in을 위함-->
<dict><key>CFBundleTypeRole</key><string>Editor</string>
<key>CFBundleURLSchemes</key><array><string>line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER)</string></array></dict>
</array>
다음은 위 안내의 모든 값을 Additional PList Data 필드에 넣은 값의 예제입니다.
<key>NSCameraUsageDescription</key>
<string>Approval required to take pictures.</string>
<key>NSContactsUsageDescription</key>
<string>You must agree to add friends from your Contacts.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Approval required to upload image files.</string>
<key>NSUserTrackingUsageDescription</key>
<string>We need your permission to use the Advertising Identifiers (IDFA) for promotion targeting and tracking analysis.</string>
<key>FacebookAppID</key>
<string>1809615065921877</string>
<key>FacebookClientToken</key>
<string>c41e47ba5512ea3fb5bfb29d5cfeb244</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER)</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>fb926000000000000</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.com2us.hivesdk.normal.freefull.apple.global.ios.universal</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>com.googleusercontent.apps.331526026701-s41n272jsv6c0f72kt5o7of0jns350gl</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>tencent</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tencent1106227203</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>weixin</string>
<key>CFBundleURLSchemes</key>
<array>
<string>wx78176cf0c698c0f9</string>
</array>
</dict>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>vk6270065</string>
<key>CFBundleURLSchemes</key>
<array>
<string>vk6270065</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>vk-share</string>
<string>vkauthorize</string>
<string>vk</string>
<string>weixinULAPI</string>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqopensdkapiV2</string>
<string>lineauth2</string>
<string>mqqopensdkapiV3</string>
<string>wtloginmqq2</string>
<string>mqq</string>
<string>mqqapi</string>
</array>
Sign in with Apple 설정¶
Sign in with Apple 지원을 위해 프로젝트 폴더 > Config > DefaultEngine.ini 파일에 아래 코드를 추가하세요.
다국어 설정¶
앱을 다국어로 서비스하려면 다국어 설정 파일을 추가해야 합니다. 다국어 설정 파일을 다운로드하여 압축을 해제하면 localize 폴더 하위에 언어별 .lproj 폴더가 존재합니다.
Note
App Store에 표기되는 앱의 지원 언어는 앱에 포함된 .lproj 폴더를 기준으로 정해집니다. 앱에서 실제로 서비스하는 언어의 .lproj 폴더만 추가하세요. Base.lproj는 지원하지 않는 언어의 기기에서 표시되는 기본 문구이므로 반드시 포함하세요. App Store에 노출되는 앱의 지원 언어 목록은 앱 번들에 포함된 .lproj 폴더를 기준으로 판별됩니다. 따라서 앱에서 실제로 서비스하는 언어의 .lproj 폴더만 추가하세요.
단, <i>Base.lproj</i>는 지원하지 않는 언어의 기기에서 표시되는 기본 문구이므로 반드시 포함하세요.
Unreal Engine은 빌드할 때마다 Xcode 프로젝트를 새로 생성하므로, Xcode에서 직접 추가한 다국어 파일은 다음 빌드 시 유실됩니다. 앱 모듈의 Build.cs 파일에 다국어 폴더를 앱 번들 리소스로 등록하도록 설정해야 합니다.
- 사용할 .lproj 폴더를 앱 모듈 폴더 하위의 localize 폴더로 복사합니다. (예: Source/MyGame/localize/Base.lproj, Source/MyGame/localize/ko.lproj)
-
앱 모듈의 Build.cs 파일(예: Source/MyGame/MyGame.Build.cs) 생성자에 아래 코드를 추가합니다.
if (Target.Platform == UnrealTargetPlatform.IOS) { string localizeDir = System.IO.Path.Combine(ModuleDirectory, "localize"); if (System.IO.Directory.Exists(localizeDir)) { foreach (string lprojDir in System.IO.Directory.GetDirectories(localizeDir, "*.lproj")) { AdditionalBundleResources.Add(new BundleResource(lprojDir)); } } } -
iOS 빌드 후 생성된 앱 번들(.app) 최상위 경로에 .lproj 폴더가 포함되었는지 확인합니다.
Note
다국어 파일을 적용하면 접근 권한 요청 팝업에는 기기 언어에 맞는 InfoPlist.strings의 문구가 표시됩니다.
Unreal Engine 프로젝트 설정의 Additional PList Data에 직접 입력한 문구는 .lproj 폴더를 추가하지 않았거나 해당 언어 세트가 없을 때 노출되는 기본값으로 동작합니다.



