Unity プラグイン変更履歴
このページでは、AppCoins iOS Unity プラグインのバージョンごとの API 変更を記載します。各エントリには、互換性のない変更、新機能、および該当する場合は移行手順が含まれます。
バージョン 5.x(予定)
互換性のない変更
-
API の全面的な置き換え — 従来の直接 API(
AppCoinsSDK.Instance.*)は、Unity IAP v5 のカスタムストアアダプターに完全に置き換えられました。互換レイヤーは提供されません。AppCoinsSDK.Instanceのメソッドを呼び出しているコードはすべて、Unity IAP v5 のStoreControllerパターンで書き直す必要があります。 -
AppCoinsSDK.Instanceの削除 — 次のインスタンスメソッドは存在しなくなりました。削除されたメソッド 代替 AppCoinsSDK.Instance.IsAvailable()AppCoinsStoreMode.Automatic(実行時の自動判定)AppCoinsSDK.Instance.GetProducts(skus)controller.OnProductsFetchedイベントAppCoinsSDK.Instance.Purchase(sku, payload)controller.InitiatePurchase(productId)とOnPurchasePendingAppCoinsSDK.Instance.ConsumePurchase(sku)controller.ConfirmPurchase(order)AppCoinsSDK.Instance.GetUnfinishedPurchases()controller.FetchPurchases()とcontroller.CheckEntitlement() -
AppCoinsPurchaseManager.OnPurchaseUpdatedの削除 —controller.OnPurchasePending、controller.OnPurchaseConfirmed、controller.OnPurchaseFailedの購読に置き換えてください。 -
PurchaseIntentの削除 —ConfirmPurchaseIntentとRejectPurchaseIntentは存在しなくなりました。新しい API にはインテントの確認ステップがありません。 -
AppCoinsSDKPurchaseResultの削除 — Unity IAP v5 の注文型に置き換えられました。旧型/定数 代替 .State文字列を持つAppCoinsSDKPurchaseResultUnity IAP の PendingOrder、ConfirmedOrder、FailedOrder型AppCoinsSDK.PURCHASE_STATE_SUCCESScontroller.OnPurchaseConfirmedイベントAppCoinsSDK.PURCHASE_STATE_FAILEDcontroller.OnPurchaseFailedイベント -
AppCoinsSDKResult<T>の削除 — 結果は Unity IAP v5 のイベントコールバックを通じて配信されるようになりました。 -
Unity IAP v5 が必須 — パッケージ依存関係として
com.unity.purchasing5.0 以降を追加する必要があります。 -
Unity 2022.3 以降が必須 — サポートされる最小 Unity バージョンが 2019.4 から 2022.3 に引き上げられました。
新機能
-
AppCoinsIAP.ConfigureStoreAsync(AppCoinsStoreMode)— プラグイン設定の唯一のエントリポイントです。StoreController.Connect()より前に呼び出す必要があります。選択されたストア名("AppCoinsAppStore"または"AppleAppStore")を返します。 -
AppCoinsStoreMode.Automatic— 実行時にチェックを行い、iOS のバージョンとインストール元に基づいて AppCoins または Apple 課金を選択します。実行時判定の仕組み を参照してください。 -
Unity IAP v5 との完全な互換性 — 標準的な Unity IAP v5 のイベント(
OnProductsFetched、OnPurchasePending、OnPurchaseConfirmed、OnPurchaseFailed)は、有効なストアにかかわらず同じように動作します。 -
検証データを含む組み込みレシート —
order.Info.Receiptには、サーバーサイド検証用のPayload.verification.data.purchaseTokenを含む JSON ペイロードが含まれます。
移行手順
-
Assets から旧プラグインを削除します。
AppCoinsSDK.cs、AppCoinsPurchaseManager.cs、AppCoinsSDKPurchaseResult.cs、AppCoinsSDKResult.cs、および関連ファイルを削除してください。 -
GitHub リリースから新しいプラグインを追加します。 最新の
.unitypackageをダウンロードし、Assets フォルダーにインポートします。 -
Package Manager から
com.unity.purchasing5.0 以降を追加します。 Window → Package Manager を開き、In App Purchasing を検索してバージョン 5.0 以降をインストールしてください。 -
AppCoinsSDK.Instance.*の呼び出しをすべて Unity IAP v5 のStoreControllerパターンに置き換えます。IsAvailable()→AppCoinsIAP.ConfigureStoreAsync(AppCoinsStoreMode.Automatic)GetProducts(skus)→controller.OnProductsFetchedを購読Instance.Purchase(sku, payload)→controller.InitiatePurchase(productId)- 購入結果は
controller.OnPurchasePendingで処理
-
ConsumePurchase(sku)をcontroller.ConfirmPurchase(order)に置き換えます。 新しいメソッドは SKU 文字列ではなく、OnPurchasePendingから受け取ったPendingOrderオブジェクトを受け取ります。 -
controller.Connect()の前にConfigureStoreAsyncの呼び出しを 1 つ追加します。await AppCoinsIAP.ConfigureStoreAsync(AppCoinsStoreMode.Automatic);
await _controller.Connect();
変更前後の完全な例を含む移行ガイドの全文は、以前の AppCoins Unity プラグインからの更新 を参照してください。
バージョン 4.x(現行)
v4.3.3 — 2026 年 7 月
バグ修正および改善
- 指数バックオフによる再試行ロジックにより、アトリビューションの信頼性を向上しました。
- SDK のライフサイクルログがデバイス上に確実に保持されるよう、ログレベルを引き上げました。
v4.3.2 — 2026 年 3 月
バグ修正および改善
- ゲストアカウントからユーザーアカウントへの変換後に
getWalletListが重複したウォレットを返す不具合を修正しました。
v4.3.1 — 2026 年 3 月
バグ修正および改善
PURCHASE_STATE_USER_CANCELLED定数の値と AppCoins SDK の戻り値が一致しない問題を修正しました。
v4.3.0 — 2026 年 3 月
バグ修正および改善
- 他のパッケージとの名前の競合を避けるため、プラグインのクラスに
AppCoins名前空間を追加しました。 - SDK がメインターゲットと
UnityFrameworkの両方にリンクされ、Xcode でクラスの重複警告が発生する問題を修正しました。 - Apple の MessageProtection フレームワークと競合していた SwiftyRSA 依存関係を削除しました。この競合に対する回避策を追加していた場合は、削除して構いません。
v4.2.0 — 2026 年 2 月
バグ修正および改善
- アトリビューションの精度向上のため、Web Checkout URL に
installation_originおよびoem_idパラメータを追加しました。
v4.1.2 — 2026 年 2 月
バグ修正および改善
- インストール元にかかわらず MMP のインストールイベントが発火していた問題を修正しました。このイベントは Aptoide 経由のインストールでのみ発火するようになりました。
v4.1.1 — 2026 年 2 月
新機能
- CTC(Catappult Token Contribution)のトランザクションレポートを追加しました。Xcode のポストビルドスクリプトが
Info.plistのMKSellsDigitalGoodsを自動的にYESに設定するため、手動での設定は不要です。
v4.0.1 — 2025 年 12 月
バグ修正および改善
AppCoinsSDK.Instance.IsAvailable()が再び既定でfalseを返すようになりました。この既定値を変更していた以前の修正は取り消されました。- Swift 6.2 との互換性のため、web3swift パッケージの依存バージョンを引き上げました。
v4.0.0 — 2025 年 11 月
互換性のない変更
AppCoinsSDK.Instance.IsAvailable()に事前のInitialize()呼び出しが必要に —Initialize()が呼び出されていない場合、このメソッドは実際の利用可否チェックを行わずにfalseを返します。Initialize()を先に呼び出さずにIsAvailable()を呼び出すコードは、常にfalseを受け取ります。
新機能
- ネイティブのチェックアウト UI を Web Checkout フローに置き換えました。API の変更は不要です。
Initialize()が呼び出されていない場合、AppCoinsSDK.Instance.IsAvailable()はfalseを返すようになりました。購入を試みる前にInitialize()が呼び出されていることを確認してください。- より古い iOS バージョンのサポートを追加しました。
移行手順
- すべてのアプリケーションエントリポイントで、
IsAvailable()より前にInitialize()が呼び出されるようにします。Initialize()の呼び出しをAwake()、または初期化シーケンス内で最も早いStart()に移動してください。
バージョン 3.x
v3.0.0 — 2025 年 5 月
互換性のない変更
-
AppCoinsPurchaseManager.OnPurchaseUpdatedのコールバック型の変更 — イベントのシグネチャがAction<PurchaseResponse>からAction<PurchaseIntent>に変更されました。既存のハンドラーはすべて新しい型を受け取るよう書き直し、購入データにアクセスする前にConfirmPurchaseIntent()またはRejectPurchaseIntent()を呼び出す必要があります。// Before (v2.x)
private void OnPurchaseUpdated(PurchaseResponse response)
{
if (response.State == AppCoinsSDK.PURCHASE_STATE_SUCCESS)
{
GiveItemToUser(response.Purchase.Sku);
StartCoroutine(ConsumePurchase(response.Purchase.Sku));
}
}
// After (v3.0.0)
private void OnPurchaseUpdated(PurchaseIntent intent)
{
var result = AppCoinsSDK.Instance.ConfirmPurchaseIntent(intent);
if (result.IsSuccess)
GiveItemToUser(intent.Purchase.Sku);
else
AppCoinsSDK.Instance.RejectPurchaseIntent(intent);
} -
エラーが構造化オブジェクトに変更 — 生のエラー文字列に代わって
AppCoinsSDKErrorが導入されました。.Errorを文字列定数と比較していたコードは、新しい型付きエラークラスを使用するよう更新する必要があります。
新機能
- 構造化されたエラー通知のために
AppCoinsSDKErrorを導入しました。SDK 呼び出しのエラーには、識別を容易にする型付きエラークラスが含まれるようになりました。 - すべての非同期処理で一貫した扱いができるよう、レスポンス型を
AppCoinsSDKResult<T>にリファクタリングしました。 - 遅延型の間接購入のサポートと、
RejectPurchaseIntent()によるPurchaseIntentの拒否機能を追加しました。
移行手順
-
すべての
OnPurchaseUpdatedハンドラーを更新し、PurchaseResponseではなくPurchaseIntentを受け取るようにします。response.Stateおよびresponse.Purchaseへのアクセスは、購入を完了するAppCoinsSDK.Instance.ConfirmPurchaseIntent(intent)、または拒否するRejectPurchaseIntent(intent)の呼び出しに置き換えてください。 -
エラー処理を更新し、生の文字列比較ではなく
AppCoinsSDKErrorを使用します。エラーにはAppCoinsSDKResult<T>.Errorからアクセスでき、Type、Message、Descriptionの各フィールドが公開されています。
バージョン 2.x
v2.0.1 — 2025 年 3 月
バグ修正および改善
- SDK が利用できない状態で
Purchase()を短時間に複数回呼び出すとクラッシュする問題を修正しました。
v2.0.0 — 2025 年 3 月
新機能
- 間接的なアプリ内購入(アプリ外から開始された購入)を処理するため、
Purchase.updatesにリスナーを追加しました。 - AppCoins SDK の最小依存バージョンを v2.0.0 に設定し、ユーザー認証および開発者向けテスト機能のサポートを追加しました。
バージョン 1.x
バージョン 1.x では、各課金操作に対応する非同期メソッドを備えたシングルトンの直接 API(AppCoinsSDK.Instance)を提供していました。すべての結果は AppCoinsSDKResult<T> のラッパーとして返されていました。
主な API の構成(参考):
AppCoinsSDK.Instance.IsAvailable()→AppCoinsSDKResult<Bool>AppCoinsSDK.Instance.GetProducts(skus)→AppCoinsSDKResult<[AppCoinsProduct]>AppCoinsSDK.Instance.Purchase(sku, payload)→AppCoinsPurchaseManager.OnPurchaseUpdated経由で配信AppCoinsSDK.Instance.ConsumePurchase(sku)→AppCoinsSDKResult<Void>AppCoinsSDK.Instance.GetUnfinishedPurchases()→AppCoinsSDKResult<[AppCoinsPurchase]>
上記はすべて v5.x で削除されています。プロジェクトを更新するには、バージョン 5.x に記載された移行手順に従ってください。