Capacitor SDKでユーザーを識別する

ユーザーの購入管理方法は、アプリの認証モデルによって異なります:

主な概念

  • プロファイルは、SDKが機能するために必要なエンティティです。Adaptyが自動的に作成します。匿名(カスタマーユーザーIDなし)または識別済み(カスタマーユーザーIDあり)のいずれかになります。
  • カスタマーユーザーIDは、あなたが作成するオプションの識別子で、ユーザーをAdaptyプロファイルに紐付けるために使用します。

匿名ユーザーと識別済みユーザーの違いは次のとおりです:

匿名ユーザー識別済みユーザー
購入管理ストアレベルの購入復元カスタマーユーザーIDを通じてデバイスをまたいで購入履歴を維持
プロファイル管理再インストールごとに新しいプロファイルが作成されるセッションやデバイスをまたいで同じプロファイルを使用
データの永続性匿名ユーザーのデータはデバイス/インストールに紐付けられる識別済みユーザーのデータはデバイスやセッションをまたいで保持される

匿名ユーザー

バックエンド認証がない場合、アプリのコードで認証を処理する必要はありません

  1. アプリの初回起動時にSDKが有効化されると、Adaptyがユーザーの新しいプロファイルを作成します。
  2. ユーザーがアプリ内で何かを購入すると、その購入はそのユーザーのAdaptyプロファイルとストアアカウントに関連付けられます。
  3. ユーザーがアプリを再インストールしたり、新しいデバイスにインストールしたりすると、Adaptyは有効化時に新しい空のプロファイルを作成します。
  4. ユーザーがアプリで以前に購入をしていた場合、デフォルトでは、SDKの有効化時にApp Storeから購入が自動的に同期されます。

バックアップからの復元は、再インストールとは動作が異なります。デフォルトでは、ユーザーがバックアップから復元した場合、SDKはキャッシュされたデータを保持し、新しいプロファイルを作成しません。この動作はclearDataOnBackup設定で変更できます。詳細はこちら

識別済みユーザー

  • プロファイルにまだカスタマーユーザーIDがない場合(つまり、ユーザーがサインインしていない場合)、カスタマーユーザーIDを送信すると、そのプロファイルに関連付けられます。
  • 再インストール、サインイン、または新しいデバイスからのインストールで、以前にそのカスタマーユーザーIDを送信したことがある場合、新しいプロファイルは作成されません。代わりに、そのカスタマーユーザーIDに関連付けられた既存のプロファイルに切り替わります。

アプリでユーザーを識別する方法は2つあります:

  • ログイン/サインアップ時: アプリ起動後にユーザーがサインインする場合、認証時にidentify()をカスタマーユーザーIDとともに呼び出します。

  • SDK有効化時: アプリ起動時にすでにカスタマーユーザーIDが保存されている場合、activate()を呼び出す際に送信します。

デフォルトでは、Adaptyが現在別のカスタマーユーザーIDに関連付けられているカスタマーユーザーIDからの購入を受け取った場合、アクセスレベルは共有され、両方のプロファイルが有料アクセスを持ちます。この設定を変更して、有料アクセスを1つのプロファイルから別のプロファイルに移動したり、共有を完全に無効にしたりすることができます。詳細はこちらの記事をご覧ください。

identify-diagram.webp

ログイン/サインアップ時

アプリ起動後にユーザーを識別する場合(例:アプリへのログインやサインアップ後)は、identifyメソッドを使用してカスタマーユーザーIDを設定します。

  • このカスタマーユーザーIDを以前に使用したことがない場合、Adaptyは自動的にそれを現在のプロファイルに紐付けます。
  • このカスタマーユーザーIDを以前にユーザーの識別に使用したことがある場合、AdaptyはそのカスタマーユーザーIDに関連付けられたプロファイルに切り替えます。

カスタマーユーザーIDを作成する際は、ユーザーデータと一緒に保存しておくと、新しいデバイスからログインした場合やアプリを再インストールした際に同じIDを送信できます。

他のSDKメソッドを呼び出す前に、必ずidentifyawaitしてください。並行して呼び出すと#3006 profileWasChangedが発生するか、匿名プロファイルに対して操作が行われます。Capacitor SDKの呼び出し順序を参照してください。

try {
  await adapty.identify({ customerUserId: "YOUR_USER_ID" });
  // successfully identified
} catch (error) {
  // handle the error
}

SDK有効化時

SDKを有効化するときにすでにカスタマーユーザーIDがわかっている場合は、identifyを別途呼び出す代わりに、activateメソッドで送信できます。

カスタマーユーザーIDがわかっていても、有効化後にのみ設定する場合、有効化時にAdaptyは新しい空のプロファイルを作成し、identifyを呼び出した後にのみ既存のプロファイルに切り替わります。

既存のカスタマーユーザーID(以前に使用したもの)と新しいもののどちらでも渡すことができます。新しいものを渡した場合、有効化時に作成された新しいプロファイルが自動的にそのカスタマーユーザーIDに紐付けられます。

作成された空のプロファイルをダッシュボードのアナリティクスから除外するには、App settingsに移動してInstalls definition for analyticsを設定してください。

await adapty.activate({
  apiKey: "YOUR_PUBLIC_SDK_KEY",
  params: {
    customerUserId: "YOUR_USER_ID"
  }
});

ユーザーをログアウトする

ユーザーをログアウトするボタンがある場合は、logoutメソッドを使用します。これにより、ユーザーに新しい匿名プロファイルIDが作成されます。

try {
  await adapty.logout();
  // successful logout
} catch (error) {
  // handle the error
}

ユーザーをアプリに再度ログインさせるには、identifyメソッドを使用してください。

ログインせずに購入を許可する

ユーザーがアプリにログインする前後の両方で購入できる場合、追加の設定は不要です:

仕組みは次のとおりです:

  1. ログアウト状態のユーザーが購入を行うと、Adaptyはその購入を匿名プロファイルIDに紐付けます。
  2. ユーザーがアカウントにログインすると、Adaptyは識別済みプロファイルに切り替えます。
    • 既存のカスタマーユーザーID(すでにプロファイルに紐付けられているカスタマーユーザーID)の場合、Adaptyはトランザクションを自動的に同期します。
    • 新しいカスタマーユーザーID(例:登録前に購入が行われた場合)の場合、Adaptyは現在のプロファイルにカスタマーユーザーIDを割り当て、すべての購入履歴が維持されます。