IAP バージョン 4 からバージョン 5 へのアップグレード
このガイドに従って、Unityアプリ内課金バージョン4からバージョン5に移行します。
読み終わるまでの所要時間 5 分最終更新 1ヶ月前
アプリ内課金(IAP)バージョン5(v5)では、接続と購入フローの各ステップをより適切にコントロールできるように、アーキテクチャが大幅に改善されました。移行には既存の IAP 実装を大幅に更新する必要がありますが、このガイドでは遷移に役立つステップバイステップの手順とコードサンプルを提供します。
変更点の概要
以下の表は、IAP v5の変更点と、実装の更新が必要な点をまとめたものです。アップグレードのメリットの詳細については、Unityアプリ内課金(IAP)v5.xにアップグレードする理由に関するサポート記事を参照してください。
変更 | 必要な更新 |
|---|---|
| 初期化は、ストア接続、プロダクトフェッチ、購入フェッチの別々の非同期呼び出しに分割されます。 | Replace UnityPurchasing.Initialize() |
| Replace ConfigurationBuilder |
| ストア拡張はストア拡張サービスに置き換えられます。 | Replace ConfigurationBuilder |
| Replace IDetailedStoreListener and IStoreListener |
| Replace IStoreController |
| 購入フローの置き換え |
| 復元トランザクション |
エンタイトルメントチェックは、 | エンタイトルメントチェックの置き換え |
Apple App Store レシート検証は非推奨です。google playレシート検証で | 更新レシート検証 |
| Codeless IAP 更新 |
Replace UnityPurchasing.Initialize()
IAP v5 では、Unity Iap パッケージをより柔軟に初期化できます。ストアへの接続、製品のフェッチ、購入のハンドルは、個別に非同期で行うことができます。このアプローチは、初期化の成功を妨げる可能性のある問題を特定して解決するのにヘルプます。
UnityPurchasing.Initialize()- 呼び出しと待機の:
StoreController.Connect()- この呼び出しが完了すると、IAP が現在のアプリストアに接続されます。
- 以下を呼び出します。
- のインスタンスに製品を追加できます。これは、
CatalogProviderに製品を追加するのと似ています。ConfigurationBuilderのリストを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では、購入または初期化の処理にまたはの実装が不要になりました。イベントハンドラーを、または個々の、、 サービスにアタッチすることで、 によって処理されていた機能を置き換えます。
IDetailedStoreListenerIStoreListenerStoreControllerProductServicePurchaseServiceStoreServiceIDetailedStoreListenerイベントハンドラを に追加する例については、新しい初期化プロセスのコードサンプル を参照してください。
StoreController移行するには、各機能を以下に置き換えます。
IDetailedStoreListener関数 | IAP v5への置き換え |
|---|---|
| |
| |
| |
| |
| |
ConfigurationBuilder を置き換える
以下の関数を以下の動作に置き換えます。
ConfigurationBuilder関数 | IAP v5への置き換え |
|---|---|
| |
| |
IStoreController を置き換える
IStoreControllerStoreControllerStoreControllerIStoreListenerUnityIAPServices.StoreController()StoreControllerこれらの のメソッドを の以下のメソッドに置き換えます。
IStoreControllerStoreControllerIStoreController | StoreController | ノート |
|---|---|---|
| | |
| | |
| | |
| | |
購入フローの置き換え
購入を開始するには、またはまたはで呼び出します。保留中の購入を確認するには、確認したいでまたはを呼び出します。購入フローの詳細については、購入 を参照してください。
Purchase()StoreControllerPurchaseService``PurchaseProduct()PendingOrderStoreController.ConfirmPurchase(PendingOrder)PurchaseService.ConfirmPurchase(PendingOrder)IAP v4 以前では、 メソッドは自動的にすべての購入イベントを処理していました。IAP v5では、購入処理に以下のコールバックが使用されます。
ProcessPurchase- : 新規購入のために呼び出されます。
OnPurchasePending - : 復元された購入のために呼び出されます。
OnPurchasesFetched
これらの新しいコールバック内で既存のロジックを使用します。
ProcessPurchase復元トランザクション
RestoreTransactionsStoreControllerPurchaseService確定した購入は、 を呼び出すか、 を呼び出すと自動的に復元されます。
FetchPurchases()CheckEntitlement()エンタイトルメントチェックの置き換え
製品に対するユーザーのエンタイトルメントを確認するには、IAP はイベントに依存します。 を呼び出して イベントを処理することで、フェッチされたすべての製品のエンタイトルメントを確認できます。1 つの製品のエンタイトルメントを確認するには、 を呼び出し、 イベントをハンドルします。
FetchPurchasesOnPurchasesFetchedCheckEntitlementOnCheckEntitlement追加プロダクトの取得
StoreControllerProductServiceFetchProductsOnPurchasesFetchedCatalogProviderFetchProductsProductServiceCatalogProviderFetchProductsレシート検証
Apple App Store レシートのレシート検証は非推奨になりました。レシート検証は Google Play ストアでのみサポートされます。レシートをフェッチするには、ではなくからを使用します。
OrderProduct.ReceiptOrder.Info.ReceiptCodeless IAP の詳細
以下の 機能を以下に置き換えます。
CodelessIAPStoreListener
| IAP v5への置き換え |
|---|---|
| |