Xamarin.iOS의 앱 내 구매 기본 사항 및 구성

앱 내 구매를 구현하려면 애플리케이션이 디바이스에서 StoreKit API를 활용해야 합니다. StoreKit은 Apple의 iTunes 서버와의 모든 통신을 관리하여 제품 정보를 얻고 트랜잭션을 수행합니다. 앱에서의 구매를 위해 프로비저닝 프로필을 구성해야 하며 제품 정보는 iTunes 커넥트 입력해야 합니다.

StoreKit manages all communication with Apple’s as shown in this chart

앱 스토어를 사용하여 앱 내 구매를 제공하려면 다음 설정 및 구성이 필요합니다.

  • iTunes 커넥트 – 제품을 판매하도록 구성하고 샌드박스 사용자 계정을 설정하여 구매를 테스트합니다. 또한 귀하를 대신하여 수집된 자금을 송금할 수 있도록 Apple에 은행 및 세금 정보를 제공해야 합니다.
  • iOS 프로비저닝 포털 – 번들 식별자를 만들고 앱에 대한 App Store 액세스를 사용하도록 설정합니다.
  • Store Kit – 제품 표시, 제품 구매 및 트랜잭션 복원을 위한 코드를 앱에 추가합니다.
  • 사용자 지정 코드 – 고객이 구매한 것을 추적하고 구매한 제품 또는 서비스를 제공합니다. 제품이 서버에서 다운로드한 콘텐츠(예: 책 및 잡지 문제)로 구성된 경우 영수증의 유효성을 검사하기 위해 서버 쪽 프로세스를 구현해야 할 수도 있습니다.

스토어 키트 "서버 환경"에는 다음 두 가지가 있습니다.

  • 프로덕션 – 실제 돈으로 거래합니다. Apple에서 제출하고 승인한 애플리케이션을 통해서만 액세스할 수 있습니다. 앱 내 구매 제품도 프로덕션 환경에서 사용할 수 있기 전에 검토하고 승인해야 합니다.
  • 샌드박스 – 테스트가 발생하는 위치입니다. 제품을 만든 직후 여기에서 사용할 수 있습니다(승인 프로세스는 프로덕션 환경에만 적용됨). 샌드박스의 트랜잭션을 수행하려면 테스트 사용자(실제 Apple ID가 아님)가 필요합니다.

앱 내 구매 규칙

앱 내의 디지털 제품 또는 서비스에 대한 다른 형태의 결제를 수락하거나 멘션 앱 내에서 사용자를 참조할 수 없습니다. 즉, 앱에서 바로 구매가 가장 적절한 결제 메커니즘인 경우 신용 카드 또는 PayPal을 수락할 수 없습니다. 앱 외부에서 디지털 제품을 구매하지만 특정 "로그인"과 연결된 웹 사이트에서 책을 구매하고 앱에서 해당 "로그인"을 사용하면 사용자가 구매한 책에 액세스할 수 있도록 하는 등 앱에서 사용하기 위한 특별한 경우가 있습니다. 이러한 방식으로 작동하는 애플리케이션은 외부 구매 기능에 멘션 또는 연결할 수 없습니다. 개발자는 이 기능을 다른 방식으로(아마도 전자 메일 마케팅 또는 다른 직접 채널을 통해) 사용자에게 전달해야 합니다.

그러나 실제 상품에는 앱 내 구매를 사용할 수 없으므로 이 경우 앱 내에서 대체 결제 메커니즘(예: 신용 카드, PayPal)을 사용할 수 있습니다.

Apple은 모든 제품을 판매하기 전에 승인해야 합니다. 검토하려면 이름, 설명 및 '제품' 스크린샷이 필요합니다. 제품 검토 시간은 애플리케이션 검토와 동일합니다.

제품에 대한 가격을 선택할 수 없습니다. Apple에서 지원하는 각 국가/통화에 특정 값이 있는 '가격 계층'만 선택할 수 있습니다. 다른 시장에서는 다른 가격 계층을 가질 수 없습니다.

구성

앱 내 구매 코드를 작성하기 전에 iTunes 커넥트(itunesconnect.apple.com) 및 iOS 프로비저닝 포털(developer.apple.com/iOS)에서 일부 설정 작업을 수행해야 합니다.

코드를 작성하기 전에 다음 세 단계를 완료해야 합니다.

  • Apple 개발자 계정 – 은행 및 과세 정보를 Apple에 제출합니다.
  • iOS 프로비저닝 포털 – 앱에 유효한 앱 ID(별표*가 있는 와일드가 아님카드)가 있고 앱 구매에서 사용하도록 설정되어 있는지 확인합니다.
  • iTunes 커넥트 애플리케이션 관리 – 애플리케이션에 제품을 추가합니다.

Apple 개발자 계정

무료 앱을 빌드하고 배포하려면 iTunes 커넥트 구성이 거의 필요하지 않습니다. 그러나 유료 앱 또는 앱 내 구매를 판매하려면 Apple에 은행 및 과세 정보를 제공해야 합니다. 여기에 표시된 기본 메뉴에서 계약, 세금 및 은행을 클릭합니다.

Click on Agreements, Tax and Banking from the main menu

개발자 계정에는 다음 스크린샷과 같이 iOS 유료 애플리케이션 계약이 적용됩니다.

Your Developer Account should have an iOS Paid Applications contract in effect

iOS 유료 애플리케이션 계약이 있을 때까지 StoreKit 기능을 테스트할 수 없습니다. Apple이 계약, 세금 및 은행 정보를 처리할 때까지 코드의 StoreKit 호출이 실패합니다.

iOS 프로비전 포털

새 애플리케이션은 iOS 프로비저닝 포털의 앱 ID 섹션에 설정됩니다. 새 앱 ID를 만들려면 iOS 프로비저닝 포털의 멤버 센터로 이동하여 포털의 인증서, 식별자 및 프로필 섹션으로 이동한 다음 iOS 앱에서 식별자를 클릭합니다. 그런 다음 오른쪽 위에 있는 "+"를 클릭하여 새 앱 ID를 생성합니다.

앱 ID를 만들기 위한 양식

다음과 같습니다.

The form for creating new App IDs

목록에서 이 앱 ID를 쉽게 식별할 수 있도록 설명에 적합한 항목을 입력합니다. 앱 ID 접두사에 대해 팀 ID를 선택합니다.

번들 식별자/앱 ID 접미사 형식

번들 식별자에 원하는 문자열을 사용할 수 있습니다(계정에서 고유한 경우). 그러나 Apple에서는 임의의 문자열을 사용하지 않고 역방향 DNS 형식을 따르는 것이 좋습니다. 이 문서와 함께 제공되는 샘플 애플리케이션은 번들 식별자에 com.xamarin.storekit.testing을 사용하지만 apple에서 권장하지 않더라도 my_store_example 같은 식별자를 사용하는 것도 똑같이 유효합니다.

Important

Apple은 또한 여러 애플리케이션에 단일 앱 ID를 사용할 수 있도록 번들 식별자의 끝에 야생 카드 별표가 추가되도록 허용합니다. 그러나 카드 앱 ID는 In-AppPurchase에 사용할 수 없습니다. 와일드 카드 번들 식별자의 예는 com.xamarin입니다.*

App Services 사용

앱에서 바로 구매는 서비스 목록에서 자동으로 사용하도록 설정됩니다.

In-App Purchase will be automatically enabled in the Services list

프로비전 프로필

정상적으로 개발 및 프로덕션 프로비저닝 프로필을 만들고 앱에서 바로 구매를 위해 설정한 앱 ID를 선택합니다. 자세한 내용은 앱 스토어 가이드에 대한 iOS 디바이스 프로비저닝게시를 참조 하세요.

iTunes Connect

iTunes 커넥트 내 앱 클릭하여 iOS 애플리케이션 항목을 만들거나 편집합니다. 애플리케이션 개요 페이지는 다음과 같습니다.

The application overview page

앱에서 구매를 클릭하여 판매용 제품을 만들거나 편집합니다. 이 스크린샷은 여러 제품이 이미 추가된 샘플 앱을 보여줍니다.

The sample app with several products already added

새 제품을 추가하는 프로세스에는 다음 두 단계가 있습니다.

  1. 제품 유형을 선택합니다. Choose the product type
  2. 제품 ID, 가격 책정 계층 및 지역화된 설명을 포함하여 제품의 특성을 입력합니다. Entering the products attributes

각 앱 내 구매 제품에 필요한 필드는 아래에 설명되어 있습니다.

참조 이름

참조 이름이 사용자에게 표시되지 않습니다. 내부용이며 iTunes 커넥트만 표시됩니다.

제품 ID 형식

제품 식별자는 영숫자(A-Z, a-z,0-9), 밑줄(_) 및 마침표(.) 문자만 포함할 수 있습니다. 식별자에 문자열을 사용할 수 있지만 Apple에서는 역방향 DNS 형식을 권장합니다. 예를 들어 샘플 애플리케이션은 다음 번들 식별자를 사용합니다.

com.xamarin.storekit.testing

따라서 앱에서 구매 제품을 식별하는 규칙은 다음과 같습니다.

com.xamarin.storekit.testing.consume5credits
com.xamarin.storekit.testing.consume10credits
com.xamarin.storekit.testing.sepia
com.xamarin.storekit.testing.greyscale

이 명명 규칙은 적용되지 않으며 단순히 제품을 관리하는 데 도움이 되는 권장 사항입니다. 또한 동일한 역방향 DNS 규칙을 따르지만 제품 식별자는 번들 식별자와 관련이 없으며 동일한 문자열로 시작할 필요가 없습니다. photo_product_greyscale 같은 식별자를 사용하는 것은 여전히 유효합니다(Apple은 권장하지 않더라도).

제품 ID는 사용자에게 표시되지 않지만 애플리케이션 코드에서 제품을 참조하는 데 사용됩니다.

제품 유형

다음 5가지 유형의 앱 내 구매 제품을 제공할 수 있습니다.

  1. 소모성 – 플레이어가 사용할 수 있는 게임 내 통화와 같이 '사용된' 항목입니다. 사용자가 백업/복원을 수행하거나 디바이스를 새로 고친 경우 소모성 트랜잭션도 복원되지 않습니다(이는 플레이어에게 동일한 이점을 다시 부여). 애플리케이션 코드는 트랜잭션이 완료되는 즉시 '소모성 항목'을 제공해야 합니다.
  2. 소모성 없음 – 디지털 잡지 문제 또는 게임 수준과 같이 사용자가 '소유'한 제품입니다.
  3. 자동 재생 가능 구독 - 실제 잡지 구독과 마찬가지로, 구독 기간이 끝나면 Apple은 자동으로 고객에게 다시 요금을 부과하고 구독 기간을 영원히 연장하거나 고객이 명시적으로 취소할 때까지 연장합니다. 이것은 Newsstand 앱에 대한 기본 결제 방법입니다(실제로 앱은 Newsstand 배포에 대해 승인되려면 이 결제 방법을 지원해야 합니다).
  4. 무료 구독 – Newsstand 지원 앱에서만 제공될 수 있으며 고객이 모든 디바이스의 구독 콘텐츠에 액세스할 수 있습니다. 무료 구독은 만료되지 않습니다.
  5. 비 갱신 구독 – 사진 보관함에 대한 1개월 액세스와 같은 정적 콘텐츠에 대한 시간 제한 액세스를 판매하는 데 사용해야 합니다.

이 문서에서는 현재 처음 두 가지 제품 유형(소모성 제품 및 비 소모성 제품)만 다룹니다.

가격 계층

앱 스토어에서는 제품의 임의 가격을 선택할 수 없습니다. Apple은 사용자가 선택할 수 있는 고정 가격 계층을 제공합니다. 가격은 각 통화로 고정되며 Apple은 상대 가격을 조정할 권리가 있습니다(예: 특정 통화와 미국 달러 간의 상대적 환율이 지속적으로 변경된 후).

Apple은 원하는 통화/가격에 대한 올바른 계층을 선택하는 데 도움이 되는 가격 행렬을 제공합니다. 가격표(2012년 8월)의 발췌 내용은 다음과 같습니다.

An excerpt of the price matrix August 2012

작성 당시(2013년 6월)에는 USD 0.99에서 USD 999.99까지 87개의 계층이 있습니다. 가격 책정 매트릭스는 고객이 지불할 가격과 Apple에서 받게 되는 금액을 보여 줍니다. 이는 30% 요금과 수집해야 하는 모든 지방세입니다(예: 미국과 캐나다 판매자가 99c 제품에 대해 70c를 받는 반면, 호주 판매자는 판매 가격에 부과된 '상품 서비스 세금'으로 인해 63c만 받음).

향후 날짜에 적용되는 예약된 가격 변경을 포함하여 언제든지 제품 가격을 업데이트할 수 있습니다. 이 스크린샷은 향후 날짜가 지정된 가격 변동이 추가되는 방식을 보여 하며, 가격은 9월 한 달 동안에만 계층 1에서 계층 3으로 일시적으로 변경됩니다.

A future-dated price change where the price is being temporarily changed from tier 1 to tier 3 for the month of September only

무료 제품은 지원되지 않습니다.

Apple은 Newsstand 앱에 대한 특별 무료 구독 옵션을 제공했지만 다른 앱 내 구매 유형에 대해 0(무료) 가격을 설정할 수는 없습니다. 판매 프로모션의 가격을 편집(즉, 더 낮은 가격)할 수 있지만 iTunes 커넥트 통해 앱에서 '무료'를 구매할 수는 없습니다.

지역화

iTunes 커넥트 지원되는 언어 수에 대해 다른 이름 및 설명 텍스트를 입력할 수 있습니다. 팝업을 통해 각 언어를 추가/편집할 수 있습니다.

Each language can be added/edited in via a popup

앱에 제품 정보를 표시하면 StoreKit을 통해 지역화된 텍스트를 표시할 수 있습니다. 또한 통화 표시는 올바른 기호와 10진수 서식을 표시하기 위해 지역화되어야 합니다. 이 서식은 문서의 뒷부분에서 설명합니다.

App Store 검토

앱과 동일 – 각 제품은 판매되기 전에 Apple에서 검토합니다. 제품 이름 또는 설명에서 부적절한 콘텐츠에 대해 제품이 거부되거나 Apple에서 잘못된 제품 유형을 선택했음을 결정할 수 있습니다(예: 책이나 잡지 문제를 만들었지만 소모품 제품 유형을 사용했습니다). 제품 검토는 앱 검토에 오래 걸릴 수 있습니다.

앱에서 바로 구매를 사용하도록 설정된 상태로 앱이 처음 제출될 때(새 앱이든, 기존 앱에 기능이 추가되었든) 제출할 일부 제품도 선택해야 합니다. 이 스크린샷과 같이 iTunes 커넥트 포털에서 이 작업을 수행하라는 메시지가 표시됩니다.

The iTunes Connect portal will prompt you to submit some products as well

애플리케이션과 앱에서 바로 구매가 함께 검토되므로 모두 한 번에 승인을 받습니다(승인된 제품 없이는 앱이 스토어에 들어가지 않도록 합니다!).

앱 내 구매 기능이 있는 첫 번째 버전이 승인된 후에는 제품을 더 추가하고 언제든지 검토를 위해 제출할 수 있습니다. 프롬프트에서 알 수 있듯이 버전 세부 정보 페이지를 사용하여 특정 앱 내 구매 제품과 함께 새 버전을 제출하도록 선택할 수도 있습니다.

자세한 내용은 App Store 검토 지침을 참조하세요.

2부 - 스토어 키트 개요 및 재처리 제품 정보