# 購入の復元

> プレイヤーがアプリケーションを再インストールしたりデバイスを切り替えたりしたときに、以前所有していた製品やサブスクリプションへのアクセスを回復できるようにします。

復元ePurchase (購入の復元) 特徴を使用すると、プレイヤーは以前に所有した非消費型型製品やアクティブな再生可能なサブスクリプションに、再課金なしでアクセスできます。アプリケーションはこれらのエンタイトルメントの永久の的な記録を保持し、Unity Iap はアクセスを許可するためにそれらを取得できます。

Apple プラットフォームの更新できないサブスクリプションは復元できません。Apple で更新できないサブスクリプションを使用する場合は、独自のサブスクリプションレコードを保持し、デバイス間でエンタイトルメントを同期する必要があります。

## Google Play##google-play

* 再インストール後、Unity Iap は最初の`StoreController.FetchPurchases()`呼び出しで所有する製品を復元します。
* IAP は、すべての購入（すべての状態）を含む `Orders` オブジェクトで `OnPurchasesFetched` リスナーを起動します。
* `PurchaseService.ProcessPendingOrdersOnPurchasesFetched` 設定を true に設定すると、IAP は満たされない購入ごとに `OnPurchasePending` リスナーを呼び出します。
* 同じセッション内の後続の`FetchPurchases()`呼び出しは、同じセッション内の開発者によってすでに表示されている注文の`OnPurchasePending`をトリガーしません。

## Apple プラットフォーム##apple-platforms

* 購入の復元ボタンを指定する必要があります（Apple による必須）。
* ボタンは、Apple からのトランザクション再同期をリクエストする`PurchaseService.RestoreTransactions`を呼び出してトランザクションを再同期し、ユーザーの認証をプロンプトします。
* 再同期後、Unity Iap は `FetchPurchases` を呼び出し、ユーザーのすべてのトランザクションで `OnPurchasesFetched` を実行します。

### 購入の復元(Appleプラットフォーム)##restore-purchases-(apple-platforms)

```cs
void RestorePurchases()
    {
        UnityIAPServices.StoreController().RestoreTransactions((success, error) =>
        {
            if (success) {
                // This does not mean anything was restored,
                // merely that the restoration process succeeded.
            } else {
                // Restoration failed. `error` には失敗の理由が含まれます。
            }
        });
    }
```
