メインコンテンツまでスキップ

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)OnPurchasePending
    AppCoinsSDK.Instance.ConsumePurchase(sku)controller.ConfirmPurchase(order)
    AppCoinsSDK.Instance.GetUnfinishedPurchases()controller.FetchPurchases()controller.CheckEntitlement()
  • AppCoinsPurchaseManager.OnPurchaseUpdated の削除controller.OnPurchasePendingcontroller.OnPurchaseConfirmedcontroller.OnPurchaseFailed の購読に置き換えてください。

  • PurchaseIntent の削除ConfirmPurchaseIntentRejectPurchaseIntent は存在しなくなりました。新しい API にはインテントの確認ステップがありません。

  • AppCoinsSDKPurchaseResult の削除 — Unity IAP v5 の注文型に置き換えられました。

    旧型/定数代替
    .State 文字列を持つ AppCoinsSDKPurchaseResultUnity IAP の PendingOrderConfirmedOrderFailedOrder
    AppCoinsSDK.PURCHASE_STATE_SUCCESScontroller.OnPurchaseConfirmed イベント
    AppCoinsSDK.PURCHASE_STATE_FAILEDcontroller.OnPurchaseFailed イベント
  • AppCoinsSDKResult<T> の削除 — 結果は Unity IAP v5 のイベントコールバックを通じて配信されるようになりました。

  • Unity IAP v5 が必須 — パッケージ依存関係として com.unity.purchasing 5.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 のイベント(OnProductsFetchedOnPurchasePendingOnPurchaseConfirmedOnPurchaseFailed)は、有効なストアにかかわらず同じように動作します。

  • 検証データを含む組み込みレシートorder.Info.Receipt には、サーバーサイド検証用の Payload.verification.data.purchaseToken を含む JSON ペイロードが含まれます。

移行手順

  1. Assets から旧プラグインを削除します。 AppCoinsSDK.csAppCoinsPurchaseManager.csAppCoinsSDKPurchaseResult.csAppCoinsSDKResult.cs、および関連ファイルを削除してください。

  2. GitHub リリースから新しいプラグインを追加します。 最新の .unitypackage をダウンロードし、Assets フォルダーにインポートします。

  3. Package Manager から com.unity.purchasing 5.0 以降を追加します。 Window → Package Manager を開き、In App Purchasing を検索してバージョン 5.0 以降をインストールしてください。

  4. AppCoinsSDK.Instance.* の呼び出しをすべて Unity IAP v5 の StoreController パターンに置き換えます。

    • IsAvailable()AppCoinsIAP.ConfigureStoreAsync(AppCoinsStoreMode.Automatic)
    • GetProducts(skus)controller.OnProductsFetched を購読
    • Instance.Purchase(sku, payload)controller.InitiatePurchase(productId)
    • 購入結果は controller.OnPurchasePending で処理
  5. ConsumePurchase(sku)controller.ConfirmPurchase(order) に置き換えます。 新しいメソッドは SKU 文字列ではなく、OnPurchasePending から受け取った PendingOrder オブジェクトを受け取ります。

  6. 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.plistMKSellsDigitalGoods を自動的に 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 バージョンのサポートを追加しました。

移行手順

  1. すべてのアプリケーションエントリポイントで、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 の拒否機能を追加しました。

移行手順

  1. すべての OnPurchaseUpdated ハンドラーを更新し、PurchaseResponse ではなく PurchaseIntent を受け取るようにします。response.State および response.Purchase へのアクセスは、購入を完了する AppCoinsSDK.Instance.ConfirmPurchaseIntent(intent)、または拒否する RejectPurchaseIntent(intent) の呼び出しに置き換えてください。

  2. エラー処理を更新し、生の文字列比較ではなく AppCoinsSDKError を使用します。エラーには AppCoinsSDKResult<T>.Error からアクセスでき、TypeMessageDescription の各フィールドが公開されています。


バージョン 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 に記載された移行手順に従ってください。