# Apple ファミリ共有

> 製品が Apple ファミリ共有の対象となるかどうかを確認し、後でその共有購入へのアクセス権をファミリが失うなど、エンタイトルメントが無効になったときにトリガーするハンドラーを登録する方法を説明します。

Apple は、自動更新可能なサブスクリプションと非消費型アプリ内課金のファミリ共有をサポートしています。ファミリ共有を使用するには、アプリストア Connect で各製品に対して個別に有効にします。設定手順については、「 アプリケーション内[課金のファミリ](https://developer.apple.com/help/app-store-connect/configure-in-app-purchase-settings/turn-on-family-sharing-for-in-app-purchases)共有を有効にする 」を参照してください。

## ファミリ共有の適格性##family-sharing-eligibility

Apple 製品メタデータの [`isFamilyShareable`](https://developer.apple.com/documentation/storekit/product/isfamilyshareable) フィールドを使用して、製品が共有可能かどうかを確認します。`Product.ProductMetadata.GetAppleProductMetadata()` を呼び出してこのメタデータにアクセスします。

```cs
        ブーリアン IsProductFamilyShareable(プロダクトプロダクト)
        {
            var appleProductMetadata = product.metadata.GetAppleProductMetadata();
            return appleProductMetadata?.isFamilyShareable ?? false;
        }
```

## 取り消されたエンタイトルメント##revoked-entitlements

アプリケーションでは、ファミリが共有購入にアクセスできなくなったケースをハンドルする必要があります。これを行うには、`StoreController.AppleStoreExtendedPurchaseService` を使用して [IAppleStoreExtendedPurchaseService.OnEntitlementRevoked](https://docs.unity3d.com/Packages/com.unity.purchasing@5.0/api/UnityEngine.Purchasing.IAppleStoreExtendedPurchaseService.html#UnityEngine_Purchasing_IAppleStoreExtendedPurchaseService_OnEntitlementRevoked) のリスナーを追加します。

このイベントは、Apple が製品へのアクセスを取り消すと発生します。失効した製品IDをリスナーに渡して、アプリケーションがそれに応じてアクセスを更新できるようにします。共有購入へのアクセスを失うことは、このイベントをトリガーする可能性のあるシナリオの 1 つにすぎません。

以下のサンプルを使用して、Apple が購入へのアクセスを取り消したときに製品 ID を受け取るように、Entitlement Revocation イベントのリスナーを登録します。

```cs
void AddAppleListeners()
{
    var applePurchaseService = UnityIAPServices.StoreController().AppleStoreExtendedPurchaseService;
    if (applePurchaseService != null) {
        applePurchaseService.OnEntitlementRevoked += EntitlementRevokedListener;
    }
}

void EntitlementRevokedListener(string productId)
{
    Debug.Log($"Revoked product: {productId}");
}
```
