Unity IAP Codeless

2021년 11월 23일
제작기간 2021년 11월 23일
태그 Unity

Reference 👉👉 Unity Manual Codeless IAP

  • Test 환경: iPhone SE, IOS 15.0.1
  • In App Purchasing Package Version: 4.0.3
  • Unity Editor Version: 2020.3.22f1

Unity를 이용해 In-App 결제를 구현한 과정과 구현하며 겪은 몇 가지의 이슈를 정리한다.

구현

가장 상단에 첨부한 링크를 그대로 시행하면 큰 문제없이 인앱결제를 구현할 수 있다.

이 매뉴얼은 코드를 작성하지 않고도 인앱결제를 구현할 수 있도록 설명하고 있으며, 사전에 IAP Package만 import해주면 된다(Package Manager). 혹시나 샘플 코드가 필요하다면 ‘Samples’에서 제공하고 있으니 함께 import하면 된다.

IAP Button - Purchase

IAP Button 컴포넌트에는 Non-Consumable한 지, Consumable한 지 체크하는 박스가 존재한다. 해당 아이템의 성격에 따라 주의깊게 설정해야하는 부분이다.

인앱결제 테스트 (Sandbox)

Restore

이 부분은 IAP Button의 Button Type을 Restore로 지정하면 쉽게 구현할 수 있지만, 내가 사용한 프로젝트에서는 수동으로 처리해주는 편이 편했기 때문에 따로 스크립트를 작성하였다.

IStoreController _controller = CodelessIAPStoreListener.Instance.StoreController;

#if UNITY_ANDROID
_googlePlayExtensions = CodelessIAPStoreListener.Instance.GetStoreExtensions<IGooglePlayStoreExtensions>();
#elif UNITY_IOS
_appleExtensions = CodelessIAPStoreListener.Instance.GetStoreExtensions<IAppleExtensions>();
#endif

Codeless IAP를 이용한다면 스크립트 상에서 controller를 한 번도 만든 적이 없을 텐데, 위와 같이 접근할 수 있다.

if (_controller.products.WithID("ProductID").hasReceipt)
{
    // Sucess
}

위처럼 단순하게 영수증 여부를 가지고 판단하여 Restore처리 하였다.

IOS Product가 로드되지 않는 문제

메뉴얼대로 따라하고, TestFlight에도 앱을 등록하였는데, 자동 UnityPurchasing Initialize에서 products 로드가 하나도 되지 않는 문제가 발생하였다.

특별히 스크립트 상의 문제가 발견되지 않는 경우, App Store Connect의 설정 문제를 의심할 수 있다. 계약, 세금 및 금융거래애서 유료 앱의 계약 진행 상태가 활성이 되어야 정상적으로 인앱 products가 로드가 된다. (이 문제가 유니티 상의 세팅 오류인 줄 알고 긴 시간을 허비했다.😂)

후기

유니티가 제공하는 Package는 점점 더 편해지는 것 같다.🥳