App Store에 Xamarin.iOS 앱 게시

앱을 앱 스토어에 게시하려면, 앱 개발자는 먼저 Apple에 검토를 위해 앱과 함께 스크린샷, 설명, 아이콘 및 기타 정보를 제출해야 합니다. 앱이 승인되면 Apple은 사용자가 구매하고 iOS 디바이스에서 직접 설치할 수 있도록 앱 스토어에 앱을 배치합니다.

이 가이드에서는 앱 스토어를 위해 앱을 준비하고 검토를 위해 Apple에 전송하는 단계를 설명합니다. 특히, 다음과 같은 내용을 설명합니다.

  • 앱 스토어 검토 지침 따르기
  • 앱 ID 및 자격 설정
  • 앱 스토어 아이콘 및 앱 아이콘 제공
  • 앱 스토어 프로비전 프로필 설정
  • 릴리스 빌드 구성 업데이트
  • iTunes Connect에서 앱 구성
  • 앱을 빌드하고 Apple에 제출

Important

Apple은 2019년 3월부터 App Store에 제출된 모든 앱과 업데이트가 iOS 12.1 SDK 이상에서 빌드되어 Xcode 10.1 이상에 포함된다고 발표했습니다. 앱은 iPhone XS 및 12.9인치 iPad Pro 화면 크기도 지원해야 합니다.

앱 스토어 지침

앱 스토어 게시를 위해 앱을 제출하기 전에 Apple 앱 스토어 검토 지침에 정의된 표준을 충족하는지 확인합니다. 앱 스토어에 앱을 제출하면 Apple은 이러한 요구 사항을 충족하는지 검토합니다. 충족하지 않는 경우 Apple은 해당 앱을 반려하며 귀하는 언급된 문제를 해결하여 다시 제출해야 합니다. 따라서 개발 프로세스에서 최대한 빨리 지침에 익숙해지는 것이 좋습니다.

앱을 제출할 때 주의해야 할 몇 가지 사항은 다음과 같습니다.

  1. 앱 설명이 해당 기능과 일치해야 합니다.
  2. 정상적인 사용에서 앱이 충돌하지 않는지 테스트합니다. 여기에는 지원하는 모든 iOS 디바이스에서의 사용이 포함됩니다.

또한 Apple에서 제공하는 앱 스토어 관련 리소스를 살펴봅니다.

앱 ID 및 자격 설정

모든 iOS 앱에는 자격이라고 하는 연관된 애플리케이션 서비스 집합이 있는 고유한 앱 ID가 있습니다. HealthKit 등과 같은 푸시 알림 수신, iOS 액세스 기능과 같은 다양한 작업을 수행하도록 앱을 허용하는 자격을 부여합니다.

앱 ID를 만들고 필요한 자격을 선택하려면 Apple Developer 포털을 방문하여 다음 단계를 수행합니다:

  1. Apple 개발자 포털에 로그인합니다. Apple ID가 아직 없는 경우 먼저 Apple ID를 만듭니다.
  2. Certificates, IDs & Profiles(인증서, ID 및 프로필) 섹션으로 이동한 다음 식별자 섹션으로 이동합니다.
  3. 페이지 맨 위의 식별자 제목 옆에 있는 + 단추를 클릭합니다.
  4. 앱 ID를 선택하고 계속을 클릭합니다.
  5. 을 선택하고 계속을 클릭합니다.
  6. 새 애플리케이션에 대한 설명번들 ID를 입력하고 Xamarin.iOS 애플리케이션에 필요한 기능을 선택합니다. App Services에 대한 자세한 내용은 Xamarin.iOS에서 기능을 사용하여 작업하기에 나와있습니다. 선택한 후에 계속을 클릭합니다.
  7. 등록 단추를 클릭하면 새 앱 ID를 만드는 프로세스가 완료됩니다.

앱 ID를 정의할 때 필요한 애플리케이션 서비스를 선택하고 구성하는 것 외에도, Info.plistEntitlements.plist 파일을 편집하여 Xamarin.iOS 프로젝트에서 자격 및 앱 ID를 구성해야 합니다. 자세한 내용은 Xamarin.iOS에서 자격 작업하기 가이드를 살펴봅니다. 해당 가이드는 Entitlements.plist 파일 생성 방법 및 다양한 권한 설정의 의미에 대한 설명을 포함합니다.

앱 스토어 아이콘을 포함합니다.

Apple에 앱을 제출할 때 앱 스토어 아이콘이 들어 있는 자산 카탈로그를 포함해야 합니다. 이 작업을 수행 하는 방법에 알아보려면 Xamarin.iOS 내의 앱 스토어 아이콘 가이드를 참조합니다.

앱 아이콘 및 시작 화면 설정

Apple이 IOS 앱을 앱 스토어에서 사용할 수 있도록 하려면, 앱이 실행되는 모든 iOS 디바이스에 대해 적절한 아이콘 및 시작 화면이 있어야 합니다. 앱 아이콘 및 시작 화면을 설정하는 방법에 대한 자세한 내용은 다음 가이드를 읽어보세요.

앱 스토어 프로비전 프로필 생성 및 설치

iOS는 프로비전 프로필을 사용하여 특정 애플리케이션 빌드를 배포하는 방법을 제어합니다. 이러한 파일은 앱 서명에 사용된 인증서, 앱 ID 및 앱을 설치할 수 있는 위치에 대한 정보가 포함된 파일입니다. 개발 및 임시 배포의 경우 프로비전 프로필에는 앱이 배포될 수 있도록 허용되는 디바이스 목록도 포함됩니다. 그러나 앱 스토어 배포의 경우 앱 스토어를 통한 공개 배포만이 유일한 메커니즘이므로 인증서 및 앱 ID 정보만 포함됩니다.

앱 스토어 프로비전 프로필을 만들고 설치 하려면 다음 단계를 수행합니다.

  1. Apple 개발자 포털에 로그인합니다.
  2. Certificates, IDs & Profiles(인증서, ID 및 프로필) 섹션으로 이동한 다음 프로필 섹션으로 이동합니다.
  3. + 단추를 클릭하고 iOS 앱 개발App Store를 선택한 다음 계속을 클릭합니다.
  4. 목록에서 앱의 앱 ID를 선택하고 계속을 클릭합니다.
  5. 서명 인증서를 선택하고 계속을 클릭합니다.
  6. 이 프로필에 포함할 디바이스를 선택하고 계속을 클릭합니다.
  7. Provisioning Profile Name(프로비저닝 프로필 이름)을 입력하고 생성을 클릭하여 프로필을 생성합니다.
  8. Xamarin의 Apple 계정 관리 도구를 사용하여 Mac에 새로 만든 프로비전 프로필을 다운로드합니다. Mac을 사용하는 경우 Apple Developer 포털에서 직접 프로비전 프로필을 다운로드할 수 있으며 더블 클릭하여 설치할 수 있습니다.

자세한 지침은 배포 프로필 만들기Xamarin.iOS 프로젝트에서 배포 프로필 선택하기를 참조하세요.

릴리스 빌드 구성 업데이트

새 Xamarin.iOS 프로젝트는 자동으로 디버그릴리스빌드 구성을 설정합니다. 릴리스 빌드를 올바르게 구성하려면, 다음 단계를 수행합니다.

  1. Solution Pad에서 iOS 프로젝트 내에 있는 Info.plist 파일을 엽니다.

  2. 애플리케이션 보기에 있는지 확인합니다. 이 보기는 맨 아래 탐색 모음에서 옵션을 클릭하여 설정할 수 있습니다.

  3. 서명 옵션으로 수동 프로비저닝을 선택합니다. 파일을 저장하고 닫습니다.

  4. Solution Pad에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 옵션을 선택한 후, iOS 빌드 탭으로 이동합니다.

  5. 구성릴리스로 설정하고 플랫폼iPhone으로 설정합니다.

  6. 특정 iOS SDK를 빌드하려면 SDK 버전 목록에서 선택합니다. 그렇지 않으면 이 값을 기본으로 둡니다.

  7. 링크하면 사용되지 않는 코드를 제거하여 애플리케이션의 전체 크기를 줄일 수 있습니다.

    • 대부분의 경우 링커 동작은 기본값인 프레임 워크 SDK만 링크로 설정해야 합니다.
    • 연결하지 않음 옵션을 사용하면 프레임워크 SDK만 링크 옵션을 사용하여 연결되는 Xamarin.iOS의 퍼블릭이 아닌 iOS API의 존재 때문에 Apple에서 앱을 거부할 수 있습니다.
    • Link All(모두 연결)은 타사 라이브러리를 비롯하여 프로젝트의 모든 어셈블리에서 코드를 제거하므로 주의해서 사용해야 합니다. 또한 사용되는 라이브러리 코드를 확인하기 위해 정적 코드 분석을 수행하기 때문에 타사 라이브러리는 링커가 검색할 수 없는 리플렉션을 통해서만 사용할 수 있는 코드를 제거할 수 있습니다. 코드 누락으로 인한 런타임 오류를 방지하기 위해 일부 클래스 및/또는 메서드를 수동으로 유지해야 할 수 있으므로 Link All(모두 연결)은 주의해서 사용해야 합니다.
    • 자세한 내용은 Xamarin.iOS 앱 연결하기 가이드를 참조하세요.
  8. iOS 11의 경우 ARM64를 지원하는 디바이스 아키텍처 중 하나를 선택합니다. 64비트 iOS 디바이스 빌드에 대한 자세한 내용은 32/64비트 플랫폼 고려 사항 설명서의 Xamarin.iOS 앱의 64비트 빌드 활성화 섹션을 참조하세요.

  9. 더 작고 빠른 코드를 빌드하기 위해 LLVM 컴파일러를 사용하고자 할 수 있습니다. 그러나 이 옵션은 컴파일 시간을 증가시킵니다.

  10. PNG 이미지 최적화를 확인하여 추가로 애플리케이션의 크기를 줄일 수 있는지 알아봅니다.

  11. 디버깅은 빌드를 쓸데없이 크게 만들므로 사용하지 않도록 설정해야 합니다.

  12. 애플리케이션의 요구에 따라 사용할 가비지 수집의 형식 및 국제화에 대한 설정을 조정할 수도 있습니다.

    위에서 설명하는 옵션을 설정하고 나면 빌드 설정은 다음과 유사하게 표시됩니다.

    iOS Build settings

    빌드 설정에 대한 추가 설명이 있는 iOS 빌드 메커니즘 가이드도 참조하세요.

  13. iOS 번들 서명 탭으로 이동합니다. 여기에 있는 옵션을 편집할 수 없는 경우 Info.plist 파일에서 수동 프로비저닝선택되어 있는지 확인합니다.

  14. 구성릴리스로 설정되고 플랫폼iPhone으로 설정되었는지 확인합니다.

  15. 서명 ID배포(자동)로 설정합니다.

  16. 프로비전 프로필위에서 만든 앱 스토어 프로비전 프로필을 선택합니다.

    프로젝트의 번들 서명 옵션은 이제 다음과 유사 하게 표시됩니다.

    iOS Bundle Signing

  17. OK를 클릭하여 변경 내용을 프로젝트 속성에 저장합니다.

iTunes Connect에서 앱 구성

iTunes Connect는 앱 스토어에서 iOS 애플리케이션을 관리하는 웹 기반 도구 모음입니다. 먼저 iTunes Connect에서 Xamarin.iOS 애플리케이션을 제대로 구성한 후에, Apple 검토 및 앱 스토어 릴리스를 위해 제출해야 합니다.

이 작업을 수행하는 방법에 대해 알아보려면, iTunes Connect에서에서 앱 구성 가이드를 참조합니다.

앱 빌드 및 제출

빌드 설정을 올바르게 구성하고 iTunes Connect가 제출 대기 중인 경우, 이제 앱을 빌드하고 Apple에 제출할 수 있습니다.

  1. Mac용 Visual Studio에서 빌드 구성 및 빌드할 디바이스(시뮬레이터는 해당사항 없음) 릴리스를 선택합니다.

    Build configuration and platform selection

  2. 빌드 메뉴에서 게시를 위해 보관을 선택합니다.

  3. 보관이 만들어지면 보관 보기가 표시됩니다. 서명 및 배포를 클릭하여 게시 마법사를 엽니다.

    Screenshot of the Sign and Distribute button location in the Archives view.

    참고 항목

    기본적으로는 보관 보기는 열려 있는 솔루션의 보관만 표시합니다. 보관이 있는 솔루션을 모두 보려면 모든 보관 표시 체크박스를 체크합니다. 포함한 디버그 정보가 필요한 경우 충돌 보고서를 기호화하여 사용될 수 있도록 이전 보관을 보관하는 것이 좋습니다.

  4. 앱 스토어 배포 채널을 선택합니다. 다음을 클릭합니다.

  5. 대상으로 업로드를 선택합니다. 다음을 클릭합니다.

  6. 프로비전 프로필 창에서 서명 ID, 앱 및 프로비전 프로필을 선택합니다. 다음을 클릭합니다.

    Screenshot of the Provisioning profile wizard page showing a valid signing identity, app, and provisioning profile selection.

  7. App Store 연결 정보 창의 메뉴에서 Apple ID 사용자 이름을 선택하고 앱별 암호를 입력합니다. 다음을 클릭합니다.

    Screenshot of the App Store Connect information wizard page showing an Apple ID user name selected.

  8. 패키지의 세부 정보를 확인하고 게시를 클릭합니다. .ipa 파일을 저장할 위치를 선택하면 마법사가 앱을 App Store 연결에 업로드합니다.

    참고 항목

    Apple은 .ipa 파일에 포함된 iTunesMetadata.plist가 있는 앱을 거부할 수 있으며 다음과 같은 오류가 발생합니다.

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

    이 오류의 해결 방법은 Xamarin 포럼의 이 게시물을 참조합니다.

iTunes Connect 상태

앱 등록 상태를 보려면 iTunes Connect에 로그인하고 앱을 선택합니다. 초기 상태는 검토 대기 중이지만 처리 중에는 수신 업로드로 일시적으로 나타날 수 있습니다.

Waiting For Review

팁 및 요령

IPA 위치 사용자 지정

MSBuild 속성으로서IpaPackageDir .ipa 파일 출력 위치를 사용자 지정할 수 있습니다. IpaPackageDir을 사용자 지정 위치로 설정하면 .ipa 파일이 기본 타임스탬프가 적용된 하위 디렉터리 대신 해당 위치에 배치됩니다. 이는 CI(지속적인 통합) 빌드에 사용되는 것과 같이 특정 디렉터리 경로를 올바르게 사용하도록 자동화된 빌드를 만들 때 유용할 수 있습니다.

새 속성을 사용하는 방법에는 여러 가지가 있습니다. 예를 들어 .ipa 파일을 이전의 기본 디렉터리(Xamarin.iOS 9.6 이하)로 출력하려면 다음 방법 중 하나를 사용하여 IpaPackageDir 속성을 $(OutputPath)로 설정할 수 있습니다. 두 방법은 모두 IDE 빌드 및 msbuild 또는 mdtool을 사용하는 명령줄 빌드를 포함하여 모든 Unified API Xamarin.iOS 빌드와 호환됩니다.

  • 첫 번째 옵션은 MSBuild 파일의 <PropertyGroup> 요소 내에 IpaPackageDir 속성을 설정하는 것입니다. 예를 들어 다음 <PropertyGroup>을 .csproj iOS 앱 프로젝트 파일의 아래쪽(닫은 </Project> 태그 바로 앞)에 추가할 수 있습니다.

    <PropertyGroup>
      <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    
  • .ipa 파일을 빌드하는 데 사용되는 구성에 해당하는 기존 <PropertyGroup>의 아래쪽에 <IpaPackageDir> 요소를 추가하는 것이 더 좋습니다. 이는 iOS IPA 옵션 프로젝트 속성 페이지에서 계획된 설정과의 향후 호환성을 위해 프로젝트를 준비하기 때문입니다. 현재 Release|iPhone 구성을 사용하여 .ipa 파일을 빌드하는 경우 업데이트된 속성 그룹 전체는 다음과 비슷할 수 있습니다.

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone'">
       <Optimize>true</Optimize>
       <OutputPath>bin\iPhone\Release</OutputPath>
       <ErrorReport>prompt</ErrorReport>
       <WarningLevel>4</WarningLevel>
       <ConsolePause>false</ConsolePause>
       <CodesignKey>iPhone Developer</CodesignKey>
       <MtouchUseSGen>true</MtouchUseSGen>
       <MtouchUseRefCounting>true</MtouchUseRefCounting>
       <MtouchFloat32>true</MtouchFloat32>
       <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
       <MtouchLink>SdkOnly</MtouchLink>
       <MtouchArch>ARMv7, ARM64</MtouchArch>
       <MtouchHttpClientHandler>HttpClientHandler</MtouchHttpClientHandler>
       <MtouchTlsProvider>Default</MtouchTlsProvider>
       <BuildIpa>true</BuildIpa>
       <IpaPackageDir>$(OutputPath)</IpaPackageDir>
    </PropertyGroup>
    

msbuild 명령줄 빌드에 대한 또 다른 방법은 /p: 명령줄 인수를 추가하여 IpaPackageDir 속성을 설정하는 것입니다. 이 경우 msbuild는 명령줄에서 전달된 $() 식을 확장하지 않으므로 $(OutputPath) 구문을 사용할 수 없습니다. 대신 전체 경로 이름을 제공해야 합니다.

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

또는 Mac에서 다음과 같습니다.

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

배포 빌드를 만들고 보관했으므로 이제 iTunes Connect에 애플리케이션을 제출할 준비가 되었습니다.

요약

이 문서에서는 구성, 빌드 및 릴리스하기 위해 앱 스토어에 iOS 앱을 제출하는 방법을 설명합니다.