App Store에 Xamarin.iOS 앱 게시Publishing Xamarin.iOS apps to the App Store

앱을 앱 스토어에 게시하려면, 앱 개발자는 먼저 Apple에 검토를 위해 앱과 함께 스크린샷, 설명, 아이콘 및 기타 정보를 제출해야 합니다.To publish an app to the App Store, an app developer must first submit it – along with screenshots, a description, icons, and other information – to Apple for review. 앱이 승인되면 Apple은 사용자가 구매하고 iOS 디바이스에서 직접 설치할 수 있도록 앱 스토어에 앱을 배치합니다.After approving the app, Apple places it on the App Store, where users can purchase it and install it directly from their iOS devices.

이 가이드에서는 앱 스토어를 위해 앱을 준비하고 검토를 위해 Apple에 전송하는 단계를 설명합니다.This guide describes the steps to follow to prepare an app for the App Store and send it to Apple for review. 특히, 다음과 같은 내용을 설명합니다.In particular, it describes:

  • 앱 스토어 검토 지침 따르기Following the App Store Review Guidelines
  • 앱 ID 및 자격 설정Setting up an App ID and entitlements
  • 앱 스토어 아이콘 및 앱 아이콘 제공Providing an App Store icon and app icons
  • 앱 스토어 프로비전 프로필 설정Setting up an App Store provisioning profile
  • 릴리스 빌드 구성 업데이트Updating the Release build configuration
  • iTunes Connect에서 앱 구성Configuring your app in iTunes Connect
  • 앱을 빌드하고 Apple에 제출Building your app and submitting it to Apple


Apple은 2019년 3월부터 App Store에 제출된 모든 앱과 업데이트가 iOS 12.1 SDK 이상에서 빌드되어 Xcode 10.1 이상에 포함된다고 발표했습니다.Apple has indicated that starting in March 2019, all apps and updates submitted to the App Store must have been built with the iOS 12.1 SDK or later, included in Xcode 10.1 or later. 앱은 iPhone XS 및 12.9인치 iPad Pro 화면 크기도 지원해야 합니다.Apps should also support the iPhone XS and 12.9" iPad Pro screen sizes.

앱 스토어 지침App Store guidelines

앱 스토어 게시를 위해 앱을 제출하기 전에 Apple 앱 스토어 검토 지침에 정의된 표준을 충족하는지 확인합니다.Before submitting an app for publication in the App Store, make sure that it meets the standards defined by Apple's App Store Review Guidelines. 앱 스토어에 앱을 제출하면 Apple은 이러한 요구 사항을 충족하는지 검토합니다.When you submit an app to the App Store, Apple reviews it to make sure that it meets these requirements. 충족하지 않는 경우 Apple은 해당 앱을 반려하며 귀하는 언급된 문제를 해결하여 다시 제출해야 합니다.If it does not, Apple will reject it – and you will need to address the cited problems and resubmit. 따라서 개발 프로세스에서 최대한 빨리 지침에 익숙해지는 것이 좋습니다.Therefore, it is a good idea to become familiar the guidelines as early as possible in the development process.

앱을 제출할 때 주의해야 할 몇 가지 사항은 다음과 같습니다.A couple of things to watch out for when submitting an app:

  1. 앱 설명이 해당 기능과 일치해야 합니다.Make sure the app’s description matches its functionality.
  2. 정상적인 사용에서 앱이 충돌하지 않는지 테스트합니다.Test that the app doesn’t crash under normal usage. 여기에는 지원하는 모든 iOS 디바이스에서의 사용이 포함됩니다.This includes usage on every iOS device it supports.

또한 Apple에서 제공하는 앱 스토어 관련 리소스를 살펴봅니다.Also take a look at App Store-related resources that Apple provides.

앱 ID 및 자격 설정Set up an App ID and entitlements

모든 iOS 앱에는 자격이라고 하는 연관된 애플리케이션 서비스 집합이 있는 고유한 앱 ID가 있습니다.Every iOS app has a unique App ID, which has an associated set of application services called entitlements. HealthKit 등과 같은 푸시 알림 수신, iOS 액세스 기능과 같은 다양한 작업을 수행하도록 앱을 허용하는 자격을 부여합니다.Entitlements allow apps to do various things such as receive push notification, access iOS features such as HealthKit, and more.

앱 ID를 만들고 필요한 자격을 선택하려면 Apple Developer 포털을 방문하여 다음 단계를 수행합니다:To create an App ID and select any needed entitlements, visit the Apple Developer Portal and follow these steps:

  1. 인증서, 식별자 및 프로필 섹션에서 식별자 > 앱 ID를 차례로 선택합니다.In the Certificates, IDs & Profiles section, select Identifiers > App IDs.
  2. + 단추를 클릭하고 새 애플리케이션에 대한 이름번들 ID를 제공합니다.Click the + button and provide a Name and Bundle ID for the new application.
  3. 화면 아래쪽으로 스크롤하여 Xamarin.iOS 애플리케이션에 필요한 모든 App Services를 선택합니다.Scroll to the bottom of the screen and select any App Services that will be required by your Xamarin.iOS application. App Services에 대한 자세한 내용은 Xamarin.iOS에서 기능을 사용하여 작업하기에 나와있습니다.App Services are further described in the Working with capabilities in Xamarin.iOS guide.
  4. 계속 단추를 클릭하고 화면의 지시에 따라 새 앱 ID를 만듭니다.Click the Continue button and follow the on-screen instructions to create the new App ID.

앱 ID를 정의할 때 필요한 애플리케이션 서비스를 선택하고 구성하는 것 외에도, Info.plistEntitlements.plist 파일을 편집하여 Xamarin.iOS 프로젝트에서 자격 및 앱 ID를 구성해야 합니다.In addition to selecting and configuring the required application services when defining your App ID, you must configure the App ID and entitlements in your Xamarin.iOS project by editing the Info.plist and Entitlements.plist files. 자세한 내용은 Xamarin.iOS에서 자격 작업하기 가이드를 살펴봅니다. 해당 가이드는 Entitlements.plist 파일 생성 방법 및 다양한 권한 설정의 의미에 대한 설명을 포함합니다.For more information, take a look at the Working with Entitlements in Xamarin.iOS guide, which describes how to create an Entitlements.plist file and the meaning of the various entitlement settings it contains.

앱 스토어 아이콘을 포함합니다.Include an App Store icon

Apple에 앱을 제출할 때 앱 스토어 아이콘이 들어 있는 자산 카탈로그를 포함해야 합니다.When you submit an app to Apple, be sure that it includes an asset catalog that contains an App Store icon. 이 작업을 수행 하는 방법에 알아보려면 Xamarin.iOS 내의 앱 스토어 아이콘 가이드를 참조합니다.To learn how to do this, take a look at the App Store icons in Xamarin.iOS guide.

앱 아이콘 및 시작 화면 설정Set the apps icons and launch screens

Apple이 IOS 앱을 앱 스토어에서 사용할 수 있도록 하려면, 앱이 실행되는 모든 iOS 디바이스에 대해 적절한 아이콘 및 시작 화면이 있어야 합니다.For Apple to make an iOS app available on the App Store, it must have proper icons and launch screens for all of the iOS devices on which it can run. 앱 아이콘 및 시작 화면을 설정하는 방법에 대한 자세한 내용은 다음 가이드를 읽어보세요.For more information about setting up app icons and launch screens, read the following guides:

앱 스토어 프로비전 프로필 생성 및 설치Create and install an App Store provisioning profile

iOS는 프로비전 프로필을 사용하여 특정 애플리케이션 빌드를 배포하는 방법을 제어합니다.iOS uses provisioning profiles to control how a particular application build can be deployed. 이러한 파일은 앱 서명에 사용된 인증서, 앱 ID 및 앱을 설치할 수 있는 위치에 대한 정보가 포함된 파일입니다.These are files that contain information about the certificate used to sign an app, the App ID, and where the app can be installed. 개발 및 임시 배포의 경우 프로비전 프로필에는 앱이 배포될 수 있도록 허용되는 디바이스 목록도 포함됩니다.For development and ad hoc distribution, the provisioning profile also includes the list of allowed devices to which you can deploy the app. 그러나 앱 스토어 배포의 경우 앱 스토어를 통한 공개 배포만이 유일한 메커니즘이므로 인증서 및 앱 ID 정보만 포함됩니다.However, for App Store distribution, only certificate and App ID information are included since the only mechanism for public distribution is the App Store.

앱 스토어 프로비전 프로필을 만들고 설치 하려면 다음 단계를 수행합니다.To create and install an App Store provisioning profile, follow these steps:

  1. Apple 개발자 포털 로그인Log in to the Apple Developer Portal.
  2. 인증서, ID 및 프로필에서 프로비전 프로필 > 배포를 선택합니다.In Certificates, IDs & Profiles, select Provisioning Profiles > Distribution.
  3. + 단추를 클릭하고 앱 스토어를 선택한 후, 계속을 클릭합니다.Click the + button, select App Store, and click Continue.
  4. 목록에서 앱의 앱 ID를 선택하고 계속을 클릭합니다.Select your app's App ID from the list and click Continue.
  5. 서명 인증서를 선택하고 계속을 클릭합니다.Select a signing certificate and click Continue.
  6. 프로필 이름을 입력하고 계속을 클릭하여 프로필을 생성합니다.Enter a Profile Name and click Continue to generate the profile.
  7. Xamarin의 Apple 계정 관리 도구를 사용하여 Mac에 새로 만든 프로비전 프로필을 다운로드합니다.Use Xamarin's Apple Account Management tools to download the newly-created provisioning profile to your Mac. Mac을 사용하는 경우 Apple Developer 포털에서 직접 프로비전 프로필을 다운로드할 수 있으며 더블 클릭하여 설치할 수 있습니다.If you're on a Mac, you can also download the provisioning profile directly from the Apple Developer Portal and double-click on it to install.

자세한 지침은 배포 프로필 만들기Xamarin.iOS 프로젝트에서 배포 프로필 선택하기를 참조하세요.For detailed instructions, see the Creating a distribution profile and Selecting a distribution profile in a Xamarin.iOS project.

릴리스 빌드 구성 업데이트Update the Release build configuration

새 Xamarin.iOS 프로젝트는 자동으로 디버그릴리스_빌드 구성_을 설정합니다.New Xamarin.iOS projects automatically set up Debug and Release build configurations. 릴리스 빌드를 올바르게 구성하려면, 다음 단계를 수행합니다.To properly configure the Release build, follow these steps:

  1. Solution Pad에서 Info.plist를 엽니다.From the Solution Pad, open Info.plist. 수동 프로비저닝을 선택합니다.Select Manual Provisioning. 파일을 저장한 후 닫습니다.Save and close the file.

  2. Solution Pad에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 옵션을 선택한 후, iOS 빌드 탭으로 이동합니다.Right-click on the Project Name in the Solution Pad, select Options, and navigate to the iOS Build tab.

  3. 구성릴리스로 설정하고 플랫폼iPhone으로 설정합니다.Set Configuration to Release and Platform to iPhone.

  4. 특정 iOS SDK를 빌드하려면 SDK 버전 목록에서 선택합니다.To build with a specific iOS SDK, select it from the SDK version list. 그렇지 않으면 이 값을 기본으로 둡니다.Otherwise, leave this value at Default.

  5. 링크하면 사용되지 않는 코드를 제거하여 애플리케이션의 전체 크기를 줄일 수 있습니다.Linking reduces the overall size of your application by stripping out unused code. 대부분의 경우 링커 동작은 기본값인 프레임 워크 SDK만 링크로 설정해야 합니다.In most cases, Linker behavior should be set to the default value of Link Framework SDKs only. 일부 타사 라이브러리를 사용할 때와 같은 일부 상황에서는 필요한 코드가 제거되지 않도록 이 값을 연결 안 함으로 설정할 필요가 있습니다.In some situations, such as when using some third-party libraries, it may be necessary to set this value to Don't Link to ensure that needed code is not removed. 자세한 내용은 Xamarin.iOS 앱 연결하기 가이드를 참조하세요.For more information, refer to the Linking Xamarin.iOS apps guide.

  6. PNG 이미지 최적화를 확인하여 추가로 애플리케이션의 크기를 줄일 수 있는지 알아봅니다.Check Optimize PNG images to further decrease your application's size.

  7. 디버깅은 빌드를 쓸데없이 크게 만들므로 사용하지 않도록 설정해야 합니다.Debugging should not be enabled, as it will make the build unnecessarily large.

  8. iOS 11의 경우 ARM64를 지원하는 디바이스 아키텍처 중 하나를 선택합니다.For iOS 11, select one of the device architectures that supports ARM64. 64비트 iOS 디바이스 빌드에 대한 자세한 내용은 32/64비트 플랫폼 고려 사항 설명서의 Xamarin.iOS 앱의 64비트 빌드 활성화 섹션을 참조하세요.For more information on building for 64-bit iOS devices, please see the Enabling 64-Bit Builds of Xamarin.iOS Apps section of the 32/64-bit platform considerations documentation.

  9. 더 작고 빠른 코드를 빌드하기 위해 LLVM 컴파일러를 사용하고자 할 수 있습니다.You may wish to use the LLVM compiler to build smaller and faster code. 그러나 이 옵션은 컴파일 시간을 증가시킵니다.However, this option increases compile times.

  10. 애플리케이션의 요구에 따라 사용할 가비지 수집의 형식 및 국제화에 대한 설정을 조정할 수도 있습니다.Based on your application's needs, you may also wish to adjust the type of Garbage Collection being used and set up for Internationalization.

    위에서 설명하는 옵션을 설정한 다음, 빌드 설정은 다음과 유사하게 됩니다.After setting the options described above, your build settings should look similar to this:

    iOS 빌드 설정iOS Build settings

    또한 빌드 설정에 대한 추가 설명이 있는 iOS 빌드 메커니즘 가이드를 참조합니다.Also take a look at ths iOS build mechanics guide, which further describes build settings.

  11. iOS 번들 서명 탭으로 이동합니다. 여기서 옵션을 편집할 수 없으면 Info.plist 파일에서 수동 프로비전이 선택되었는지 확인합니다.Navigate to the iOS Bundle Signing tab. If the options here are not editable, make sure that Manual Provisioning is selected in the Info.plist file.

  12. 구성릴리스로 설정되고 플랫폼iPhone으로 설정되었는지 확인합니다.Make sure that Configuration is set to Release and Platform is set to iPhone.

  13. 서명 ID배포(자동) 로 설정합니다.Set Signing Identity to Distribution (Automatic).

  14. 프로비전 프로필위에서 만든 앱 스토어 프로비전 프로필을 선택합니다.For Provisioning Profile, select the App Store provisioning profile created above.

    프로젝트의 번들 서명 옵션은 이제 다음과 유사 하게 표시됩니다.Your project's bundle signing options should now look similar to this:

    iOS 번들 서명iOS Bundle Signing

  15. OK를 클릭하여 변경 내용을 프로젝트 속성에 저장합니다.Click OK to save changes to the project properties.

iTunes Connect에서 앱 구성Configure your app in iTunes Connect

iTunes Connect는 앱 스토어에서 iOS 애플리케이션을 관리하는 웹 기반 도구 모음입니다.iTunes Connect is a suite of web-based tools for managing your iOS applications on the App Store. 먼저 iTunes Connect에서 Xamarin.iOS 애플리케이션을 제대로 구성한 후에, Apple 검토 및 앱 스토어 릴리스를 위해 제출해야 합니다.Your Xamarin.iOS application must be properly configured in iTunes Connect before it can be submitted to Apple for review and released on the App Store.

이 작업을 수행하는 방법에 대해 알아보려면, iTunes Connect에서에서 앱 구성 가이드를 참조합니다.To learn how to do this, read the Configuring an app in iTunes Connect guide.

앱 빌드 및 제출Build and submit your app

빌드 설정을 올바르게 구성하고 iTunes Connect가 제출 대기 중인 경우, 이제 앱을 빌드하고 Apple에 제출할 수 있습니다.With your build settings properly configured and iTunes Connect awaiting your submission, you can now build your app and submit it to Apple.

  1. Mac용 Visual Studio에서 빌드 구성 및 빌드할 디바이스(시뮬레이터는 해당사항 없음) 릴리스를 선택합니다.In Visual Studio for Mac, select the Release build configuration and a device (not a simulator) for which to build.

    빌드 구성 및 플랫폼 선택Build configuration and platform selection

  2. 빌드 메뉴에서 게시를 위해 보관을 선택합니다.From the Build menu, select Archive for Publishing.

  3. 보관이 만들어지면 보관 보기가 표시됩니다.Once the archive has been created, the Archives view will be displayed. 서명 및 배포를 클릭하여 게시 마법사를 엽니다.Click Sign and Distribute... to open the publishing wizard.

    보관 보기의 서명 및 배포 단추 위치 스크린샷.Screenshot of the Sign and Distribute button location in the Archives view.


    기본적으로는 보관 보기는 열려 있는 솔루션의 보관만 표시합니다.By default the Archives view only shows archives for the open solution. 보관이 있는 솔루션을 모두 보려면 모든 보관 표시 체크박스를 체크합니다.To see all solutions that have archives, check the Show all archives checkbox. 포함한 디버그 정보가 필요한 경우 충돌 보고서를 기호화하여 사용될 수 있도록 이전 보관을 보관하는 것이 좋습니다.It is a good idea to keep old archives so that the debug information they include can be used to symbolicate crash reports if necessary.

  4. 앱 스토어 배포 채널을 선택합니다.Select the App Store distribution channel. 다음을 클릭합니다.Click Next.

  5. 대상으로 업로드를 선택합니다.Select Upload as the destination. 다음을 클릭합니다.Click Next.

  6. 프로비전 프로필 창에서 서명 ID, 앱 및 프로비전 프로필을 선택합니다.In the Provisioning profile window, select your signing identity, app, and provisioning profile. 다음을 클릭합니다.Click Next.

    유효한 서명 ID, 앱 및 프로비저닝 프로필 선택을 보여 주는 프로비저닝 프로필 마법사 페이지의 스크린샷.Screenshot of the Provisioning profile wizard page showing a valid signing identity, app, and provisioning profile selection.

  7. App Store 연결 정보 창의 메뉴에서 Apple ID 사용자 이름을 선택하고 앱별 암호를 입력합니다.In the App Store Connect information window, select an Apple ID username from the menu and enter an app-specific password. 다음을 클릭합니다.Click Next.

    선택한 Apple ID 사용자 이름을 보여 주는 App Store 연결 정보 마법사 페이지의 스크린샷.Screenshot of the App Store Connect information wizard page showing an Apple ID user name selected.

  8. 패키지의 세부 정보를 확인하고 게시를 클릭합니다.Verify the details of your package and click Publish. .ipa 파일을 저장할 위치를 선택하면 마법사가 앱을 App Store 연결에 업로드합니다.After selecting a location to save the .ipa file, the wizard will upload your app to App Store Connect.


    Apple은 .ipa 파일에 포함된 iTunesMetadata.plist가 있는 앱을 거부할 수 있으며 다음과 같은 오류가 발생합니다.Apple may reject apps with the iTunesMetadata.plist included in the .ipa file, resulting in an error such as the following:

    ERROR: ERROR ITMS-90047: "Disallowed paths ( "iTunesMetadata.plist" ) found at: Payload/"

    이 오류의 해결 방법은 Xamarin 포럼의 이 게시물을 참조합니다.For a workaround to this error, take a look at this post in the Xamarin Forums.

iTunes Connect 상태iTunes Connect status

앱 등록 상태를 보려면 iTunes Connect에 로그인하고 앱을 선택합니다.To see the status of your app submission, log in to iTunes Connect and select your app. 초기 상태는 검토 대기 중이지만 처리 중에는 수신 업로드로 일시적으로 나타날 수 있습니다.The initial status should be Waiting For Review, though it may temporarily read Upload Received while it is being processed.

검토 대기 중Waiting For Review

팁과 요령Tips and tricks

IPA 위치 사용자 지정Customize the .ipa location

MSBuild 속성으로서IpaPackageDir .ipa 파일 출력 위치를 사용자 지정할 수 있습니다.An MSBuild property, IpaPackageDir, makes it possible to customize the .ipa file output location. IpaPackageDir을 사용자 지정 위치로 설정하면 .ipa 파일이 기본 타임스탬프가 적용된 하위 디렉터리 대신 해당 위치에 배치됩니다.If IpaPackageDir is set to a custom location, the .ipa file will be placed in that location instead of the default timestamped subdirectory. 이는 CI(지속적인 통합) 빌드에 사용되는 것과 같이 특정 디렉터리 경로를 올바르게 사용하도록 자동화된 빌드를 만들 때 유용할 수 있습니다.This can be useful when creating automated builds that rely on a specific directory path to work correctly, such as those used for Continuous Integration (CI) builds.

새 속성을 사용하는 방법에는 여러 가지가 있습니다.There are several possible ways to use the new property. 예를 들어 .ipa 파일을 이전의 기본 디렉터리(Xamarin.iOS 9.6 이하)로 출력하려면 다음 방법 중 하나를 사용하여 IpaPackageDir 속성을 $(OutputPath)로 설정할 수 있습니다.For example, to output the .ipa file to the old default directory (as in Xamarin.iOS 9.6 and lower), you can set the IpaPackageDir property to $(OutputPath) using one of the following approaches. 두 방법은 모두 IDE 빌드 및 msbuild 또는 mdtool을 사용하는 명령줄 빌드를 포함하여 모든 Unified API Xamarin.iOS 빌드와 호환됩니다.Both approaches are compatible with all Unified API Xamarin.iOS builds, including IDE builds as well as command-line builds that use msbuild or mdtool:

  • 첫 번째 옵션은 MSBuild 파일의 <PropertyGroup> 요소 내에 IpaPackageDir 속성을 설정하는 것입니다.The first option is to set the IpaPackageDir property within a <PropertyGroup> element in an MSBuild file. 예를 들어 다음 <PropertyGroup>을 .csproj iOS 앱 프로젝트 파일의 아래쪽(닫은 </Project> 태그 바로 앞)에 추가할 수 있습니다.For example, you could add the following <PropertyGroup> to the bottom of the iOS app project .csproj file (just before the closing </Project> tag):

  • .ipa 파일을 빌드하는 데 사용되는 구성에 해당하는 기존 <PropertyGroup>의 아래쪽에 <IpaPackageDir> 요소를 추가하는 것이 더 좋습니다.A better approach is to add a <IpaPackageDir> element to the bottom of the existing <PropertyGroup> that corresponds to the configuration used to build the .ipa file. 이는 iOS IPA 옵션 프로젝트 속성 페이지에서 계획된 설정과의 향후 호환성을 위해 프로젝트를 준비하기 때문입니다.This is better because it will prepare the project for future compatibility with a planned setting on the iOS IPA Options project properties page. 현재 Release|iPhone 구성을 사용하여 .ipa 파일을 빌드하는 경우 업데이트된 속성 그룹 전체는 다음과 비슷할 수 있습니다.If you currently use the Release|iPhone configuration to build the .ipa file, the complete updated property group might look similar to the following:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone'">
       <CodesignKey>iPhone Developer</CodesignKey>
       <MtouchArch>ARMv7, ARM64</MtouchArch>

msbuild 명령줄 빌드에 대한 또 다른 방법은 /p: 명령줄 인수를 추가하여 IpaPackageDir 속성을 설정하는 것입니다.An alternate technique for msbuild command-line builds is to add a /p: command line argument to set the IpaPackageDir property. 이 경우 msbuild는 명령줄에서 전달된 $() 식을 확장하지 않으므로 $(OutputPath) 구문을 사용할 수 없습니다.In this case note that msbuild does not expand $() expressions passed in on the command line, so it is not possible to use the $(OutputPath) syntax. 대신 전체 경로 이름을 제공해야 합니다.You must instead provide a full path name.

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:ServerAddress="" /p:ServerUser="macuser" /p:IpaPackageDir="%USERPROFILE%\Builds" /t:Build SingleViewIphone1.sln

또는 Mac에서 다음과 같습니다.Or the following on Mac:

msbuild /p:Configuration="Release" /p:Platform="iPhone" /p:IpaPackageDir="$HOME/Builds" /t:Build SingleViewIphone1.sln

배포 빌드를 만들고 보관했으므로 이제 iTunes Connect에 애플리케이션을 제출할 준비가 되었습니다.With your distribution build created and archived, you are now ready to submit your application to iTunes Connect.


이 문서에서는 구성, 빌드 및 릴리스하기 위해 앱 스토어에 iOS 앱을 제출하는 방법을 설명합니다.This article described how to configure, build, and submit an iOS app for release on the App Store.