IAP 버전 4에서 버전 5로 업그레이드
이 가이드를 따라 Unity 인앱 구매 버전 4에서 버전 5로 마이그레이션합니다.
읽는 시간 2분최근 업데이트: 9일 전
인앱 구매(IAP) 버전 5(v5)는 연결 및 구매 흐름의 각 단계를 더 잘 제어할 수 있도록 아키텍처를 크게 개선했습니다. 마이그레이션을 수행하려면 기존 IAP 구현을 상당히 업데이트해야 하지만, 이 가이드에서는 전환에 도움이 되는 단계별 지침과 코드 샘플을 제공합니다.
변경 사항 개요
다음 표에는 IAP v5의 변경 사항과 구현 시 업데이트해야 하는 사항이 요약되어 있습니다. 업그레이드의 이점에 대한 자세한 내용은 Unity 인앱 구매(IAP) v5.x 지원 문서를 참고하십시오.변경 | 필수 업데이트 |
|---|---|
| 초기화는 스토어 연결, 상품 페치, 구매 페치에 대한 별도의 비동기 호출로 분할됩니다. | Replace UnityPurchasing.Initialize() |
| ConfigurationBuilder 교체 |
| 스토어 확장 기능은 스토어 확장 서비스로 대체됩니다. | ConfigurationBuilder 교체 |
| IDetailedStoreListener 및 IStoreListener 교체 |
| IStoreController 교체 |
| 구매 흐름 교체 |
| 복원 거래 |
자격 검사는 이제 | 자격 검사 대체 |
Apple 앱 스토어 영수증 확인은 지원이 중단됩니다. Google Play 영수증 확인은 이제 | 영수증 확인 업데이트 |
| 코드리스 IAP 업데이트 |
Replace UnityPurchasing.Initialize()
IAP v5부터 Unity IAP 패키지를 유연하게 초기화할 수 있습니다. 스토어에 연결하고 제품을 가져오고 구매를 독립적으로 비동기식으로 처리할 수 있습니다. 이 접근 방식은 성공적인 초기화를 차단할 수 있는 문제를 식별하고 해결하는 데 도움이 될 수 있습니다.
다음 단계에 따라
UnityPurchasing.Initialize()- 전화 및 대기 :
StoreController.Connect()- 이 호출이 완료되면 IAP가 현재 앱 스토어 연결됩니다.
- 호출:
- 제품을 에 추가하는 것과 마찬가지로 제품을
ConfigurationBuilder인스턴스에 추가할 수 있습니다.CatalogProvider목록을ProductDefinitions또는ProductService.FetchProducts()에 전달할 수도 있습니다. 자세한 내용은 새 초기화 프로세스의 코드 샘플을 참고하십시오.StoreController.FetchProducts() - 요청이 성공적으로 완료되면 이벤트 핸들러가 호출됩니다. 지정된 제품을 가져올 수 없으면
OnProductsFetched가 호출됩니다.OnProductsFetchFailed
- 제품을
- 제품이 성공적으로 페치되면 를 호출합니다.
FetchPurchases()- 요청이 성공적으로 완료되면 이벤트 핸들러가 호출됩니다.
OnPurchasesFetched객체는 앱 스토어에서 반환한 모든 디퍼드, 보류 중, 완료된 주문의 필터링 가능한 컬렉션을 포함합니다. 실패 시Orders가 호출됩니다.OnPurchasesFetchFailed
- 요청이 성공적으로 완료되면
StoreController를 사용한 새 초기화 프로세스의 코드 샘플
다음 예시는 IAP v5를 초기화하는 방법을 보여 줍니다.StoreController m_StoreController; async void InitializeIAP() { m_StoreController = UnityIAPServices.StoreController(); m_StoreController.OnPurchasePending += OnPurchasePending; await m_StoreController.Connect(); m_StoreController.OnProductsFetched += OnProductsFetched; m_StoreController.OnPurchasesFetched += OnPurchasesFetched; var initialProductsToFetch = new List<ProductDefinition> { new(goldProductId, ProductType.Consumable), new(diamondProductId, ProductType.Consumable) }; m_StoreController.FetchProducts(initialProductsToFetch); }void OnProductsFetched(List<Product> products) { // Handle fetched products m_StoreController.FetchPurchases(); } void OnPurchasesFetched(Orders orders) { // Process purchases, for example, check for entitlements from completed orders }
IDetailedStoreListener와 IStoreListener 교체
IAP v5에서는 구매 또는 초기화 처리를 위한IDetailedStoreListenerIStoreListenerIDetailedStoreListenerStoreControllerProductServicePurchaseServiceStoreServiceStoreController
마이그레이션하려면 각
IDetailedStoreListener함수 | IAP v5 교체 |
|---|---|
| |
| |
| |
| |
| |
ConfigurationBuilder 교체
다음ConfigurationBuilder함수 | IAP v5 교체 |
|---|---|
| |
| 4 및 5 | 확장 스토어 서비스(예: |
IStoreController 교체
IStoreControllerStoreControllerStoreControllerIStoreListenerUnityIAPServices.StoreController()StoreControllerIStoreControllerStoreControllerIStoreController | StoreController | 참고 사항 |
|---|---|---|
| | |
| | |
| | |
| | |
구매 플로 교체
구매를 시작하려면Purchase()PurchaseProduct()StoreControllerPurchaseServicePendingOrderStoreController.ConfirmPurchase(PendingOrder)PurchaseService.ConfirmPurchase(PendingOrder)ProcessPurchase- : 새 구매가 호출되었습니다.
OnPurchasePending - : 복원된 구매에 대해 호출됩니다.
OnPurchasesFetched
ProcessPurchase거래 복원
RestoreTransactionsStoreControllerPurchaseServiceFetchPurchases()CheckEntitlement()자격 검사 교체
제품에 대한 사용자의 권한을 확인하기 위해 IAP는 이벤트에 의존합니다.FetchPurchasesOnPurchasesFetchedCheckEntitlementOnCheckEntitlement추가 상품 페치
추가 제품 목록과 함께StoreControllerProductServiceFetchProductsOnPurchasesFetchedCatalogProviderFetchProductsProductServiceCatalogProviderFetchProducts영수증 확인
Apple 앱 스토어 영수증 확인은 지원이 중단되었습니다. 영수증 확인은 Google Play 스토어에서만 지원됩니다. 영수증을 가져오려면Product.ReceiptOrderOrder.Info.Receipt코드리스 IAP 세부 사항
다음의CodelessIAPStoreListener
| IAP v5 교체 |
|---|---|
| |