Xamarin.iOS에서 비 소모성 제품 구매

소모성이 없는 제품은 고객이 '소유'합니다. 기대는 그들의 장치가 분실/도난 또는 그들은 새로운 하나를 구입 하는 경우에 그들은 항상 그들에 게 액세스할 수 있을 것입니다. 책, 잡지 문제, 게임 수준, 사진 필터, '프로 기능' 등에 유용합니다. 사용자가 소모성 제품을 구매한 후에는 비용을 다시 지불할 필요가 없습니다. 코드에서 실수로 시도하면 StoreKit에서 이미 구매했다는 메시지가 표시됩니다.

비 소모성 제품 샘플

InAppPurchaseSample 코드에는 NonConsumables라는 프로젝트가 포함되어 있습니다. 코드 샘플에서는 사진 필터를 예로 사용하여 소모성이 없는 제품을 구현하는 방법을 보여 줍니다. 필터를 구매한 후에는 사진에 필터를 반복해서 적용할 수 있습니다. 다시 구매할 필요가 없습니다.

구매 프로세스는 이 일련의 스크린샷에 표시됩니다. 구매 단추는 기능 활성화 단추가 됩니다.

The purchase process is shown in this series of screenshots

구매 프로세스는 소모성 제품과 동일합니다. 주요 차이점은 애플리케이션 코드에서 구매를 추적하는 방법에 있습니다. 이 예제에서 구매 단추는 제품을 아직 구입하지 않은 경우에만 사용할 수 있으며, 그렇지 않으면 단추가 기능 자체를 활성화합니다.

다음 다이어그램에서는 소모성 제품 구매를 수행하기 위해 클래스와 App Store 서버 간의 상호 작용을 보여 줍니다.

The interactions between classes and the App Store server to perform a non-consumable product purchase

소모성 예제와 주요 차이점은 구매가 완료되면 사용자 인터페이스가 업데이트되어 재 구매를 방지한다는 것입니다. 이 예제에서는 트랜잭션 성공 알림이 사용자 인터페이스를 업데이트하여 구매 단추가 기능 자체를 활성화하는 단추로 변환되도록 합니다.

비 소모성 제품 다시 구매

코드는 일반적으로 제품을 성공적으로 구매한 후 구매 단추를 숨기거나 용도를 변경하여 사용자가 제품을 다시 구매하지 못하도록 해야 합니다. 샘플 애플리케이션은 예제 사진 필터가 작동하게 하는 단추로 구매 단추를 변경하여 이 작업을 수행합니다.

애플리케이션에서 소모성 제품이 이미 구매되었는지 여부를 알 수 없는 상황이 있습니다.

  • 애플리케이션이 삭제되고 디바이스에 다시 설치되면 사용자가 백업 복원을 수행하지 않는 한 모든 구매 레코드가 사라집니다.
  • 사용자가 애플리케이션을 두 개 이상의 디바이스에 설치하고 디바이스 중 하나에서 구매하는 경우 다른 장치는 구매할 수 있는 제품을 계속 표시합니다.
  • 이러한 상황에서 고객이 소모성 제품을 다시 구입하려고 하면 App Store에서 무료로 제품을 다시 이행합니다. 사용자 인터페이스는 처음에 구매를 수행하는 것처럼 보이지만(예: 확인 경고가 표시되고 Apple ID가 필요) 사용자는 제품을 이미 구매했음을 알리는 메시지가 표시됩니다.

이 시나리오의 코드 경로는 일반 구매와 정확히 동일하며 유일한 차이점은 다음과 같습니다.

  • 사용자에게 제품에 대한 요금이 다시 청구되지 않습니다.
  • 애플리케이션에 전달된 개체에는 SKPaymentTransactionOriginalTransaction 제품을 처음 구매할 때 생성된 트랜잭션을 참조하는 속성이 있습니다.
  • 소모성이 없는 제품을 판매하는 애플리케이션은 사용자가 기존 구매를 검색할 수 있도록 StoreKit의 복원 기능도 구현해야 합니다.