ユーザーアカウント間での有料アクセスの共有
ユーザーが購入を行うと、Adapty はアクティブなプロファイルに新しいアクセスレベルを割り当てます。このアクセスレベルにより、購入者は有料コンテンツにアクセスできるようになります。
購入者のプロファイルは、アプリの再インストールや新しいアプリ内アカウントへのログインによって意図せず変わることがあります。アクセスが途切れないよう、Adapty は元のプロファイルとその後のプロファイルの間でユーザーのアクセスレベルを自動的に共有します。
このアプローチはほとんどのアプリケーションに最適です。ただし、ビジネスロジックの要件によっては、より制限的な有料アクセス共有ポリシーを選択することもできます。
General Settings ページを開いて、アクセスレベルの共有ポリシーを設定してください。テストを容易にするため、サンドボックス環境のみでこの設定を変更することもできます。
アプリケーションがユーザー認証を行っていない場合、この設定は無視してかまいません。同じストアアカウントに関連付けられた匿名プロファイルは、常にアクセスレベルを共有します。
どのアクセス共有ポリシーを選べばよいですか?(クリックして展開)
| 私のアプリは… | おすすめの設定 |
|---|---|
| 認証機能を持たず、Adapty の匿名プロファイル ID のみを使用している。 | Enabled (default) 設定を使用してください。 |
| ユーザー認証が可能だが、アカウントなしで購入できる。 | Transfer access to new user 設定を有効にしてください。ユーザーがサインアップして匿名購入を引き継げるようになります。 |
| 購入前にアカウント作成が必須だが、1 つのプロダクトを複数の Customer User ID にリンクできる。 | Transfer access to new user 設定を有効にしてください。複数のアカウントがプロダクトにアクセスできますが、順番にのみアクセス可能です。 |
| 購入前にアカウント作成が必須で、購入を単一の Customer User ID に紐付ける厳格なルールがある。 | アクセスレベルの共有を無効にしてください。 |
Enabled(デフォルト)
この設定は、組み込み認証を持たないアプリケーションに最適です。購入後、同じストアアカウントに関連付けられたすべてのプロファイルがアクセスレベルを自動的に継承します。
- ユーザーが新しい認証情報でアプリにログインしても、有料コンテンツへのアクセスは維持されます。
- ユーザーが工場出荷時リセット後にアプリを再インストールしても、有料コンテンツへのアクセスは維持されます。
- ユーザーが同じストアアカウントで他のデバイスにアプリをインストールしても、購入はすべてのデバイスで利用可能になります。アプリの各インスタンスが独自のカスタマープロファイルを持っている場合でも同様です。
Transfer access to new user
この設定は、認証の有無にかかわらず購入を許可するアプリケーション、または1 デバイスにつき 1 ユーザーのポリシーを適用したいアプリケーションに最適です。
Adapty は購入へのアクセスを一度に 1 つの Customer ID に制限します。デバイス所有者はアプリを再インストールしたり、ログインとログアウトを繰り返すことができますが、複数の Customer ID から同時に同じプロダクトにアクセスすることはできません。
この設定を有効にすると、匿名プロファイル(たとえばユーザーがログアウトした後にアクティブになるプロファイル)は常に最後にアクティブだった Customer ID のアクセスレベルを継承します。これは後でアクセスを失わないようにするために必要です。
デフォルト設定を無効にして Transfer access to new user を有効にしても、Adapty は既存のカスタマープロファイルのアクセスレベルをすぐには更新しません。
切り替えは、ユーザーが新しいストアイベント(サブスクリプションの更新や購入の復元など)をトリガーしたときに行われます。
Adapty が古いプロファイルを失効させるのは、SDK がトランザクションを伝播する時点で新しいプロファイルに Customer User ID が設定されている場合のみです。restorePurchases が匿名プロファイルで実行された場合、古い Customer User ID と新しい匿名プロファイルの両方がアクセスレベルを持つことになります。古いプロファイルは、匿名プロファイルを識別した後に失効します。
これを避けるには、SDK メソッドをこの順番で呼び出してください:activate → identify → restorePurchases。
有料アクセス共有の無効化
この設定は、必須認証を持つアプリケーション、または独自のアクセス管理を実装しているアプリケーションにのみ適切です。それ以外の場合、ユーザーが購入にアクセスできなくなり、アプリが必須のストアレビューに失敗するリスクがあります。
有料アクセス共有を無効にすると、Adapty は購入時にアクティブな Customer ID にプロダクトを紐付け、他のカスタマープロファイルとアクセスレベルを共有しません。このポリシーにより、厳格な 1 対 1 のプロダクト配布が可能になります。
有料アクセス共有を無効にすると、Customer ID が有料アクセスを継承できなくなります。過去に有料アクセスを継承した Customer ID がある場合、自動的に取り消すことはできません。
緊急時には、次に利用可能なプロファイル(識別済みまたは匿名)がアクセスレベルを引き継げるよう、ユーザープロファイルを削除する必要がある場合があります。
実践的なリファレンス
モードを選択したら、以下の一覧で期待される動作を確認してください:どのプロファイルがアクセスを受け取るか、古いプロファイルがいつアクセスを失うか、どのウェブフックイベントが発火するか。
| モード | 複数のプロファイルが 1 つの購入を共有するか | 転送時に古いプロファイルが失効するか | 古いプロファイルが失効するタイミング | 2 番目のプロファイルがサブスクリプションを引き継ぐ際のウェブフックイベント |
|---|---|---|---|---|
| Enabled (default) | はい — 復元またはサインインしたすべてのプロファイルがアクセスを継承 | しない | N/A | 継承する各新規プロファイルに access_level_updated(is_active=true) |
| Transfer access to new user | いいえ — 排他的だが、プロファイル間で移動可能 | はい | 新しい識別済みデバイスがトランザクションを伝播したとき(restorePurchases、identify、または次のストア側イベント)に即時 | 新しいプロファイル:access_level_updated(is_active=true)。古いプロファイル:access_level_updated(is_active=false) |
| Disabled | いいえ — 購入ごとに 1 つの Customer User ID、永続的 | N/A — アクセスは転送されない | N/A | 2 番目のプロファイルには何もなし。SDK はそのプロファイルのアクセスを表示しない |
サンドボックスでの有料アクセス共有
サンドボックス環境専用の有料アクセス共有ポリシーを設定できます。サンドボックス環境で購入をテストする際は、以下の動作が予想されます:
- Apple はアカウントの購入履歴に過去の購入情報を保存します。Adapty SDK もこれにアクセスできます。
- アプリを再インストールした際、Adapty がプロダクトがすでに購入済みであることを検出した場合、アクティブなプロファイルがアクセスレベルを継承します。
- Apple がプロダクトの既存の購入を検出した場合、アクティブなプロファイルに必要なアクセスレベルがなくても、同じ購入を 2 回行うことはできません。
この動作は有料アクセス共有の設定に関係なく発生します。アプリにペイウォールが表示されず、プロダクトを購入できません。唯一の解決策は、アカウントの購入履歴をクリアすることです。詳細な手順はサンドボックステストガイドを参照してください。
Apple のサンドボックスサブスクリプションは数分ごとに自動更新されます。この急速な更新により、Adapty が親プロファイルとして扱うプロファイルが入れ替わることがあります。これは本番環境ではほとんど再現されないパターンです。本番環境で使用するモードをテストし、サンドボックスでの結論を出す前に実際の Apple ID で動作を確認してください。