Android SDKでのユーザー識別

このガイドは、独自の認証システムを持つ方を対象としています。ここでは、既存の認証システムと連携させるために、Adaptyのユーザープロファイルを操作する方法を説明します。

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

主要な概念:

  • プロファイルはSDKが動作するために必要なエンティティです。Adaptyが自動的に作成します。
  • プロファイルは匿名(カスタマーユーザーIDなし)または識別済み(カスタマーユーザーIDあり)のいずれかです。
  • カスタマーユーザーIDを提供することで、Adaptyのプロファイルと内部認証システムを相互参照できます。

匿名ユーザーと識別済みユーザーの違いは以下の通りです。

匿名ユーザー識別済みユーザー
購入の管理ストアレベルでの購入履歴の復元カスタマーユーザーIDを通じて端末をまたいで購入履歴を維持
プロファイルの管理再インストールのたびに新しいプロファイルが作成されるセッションや端末をまたいで同一プロファイルが使われる
データの永続性匿名ユーザーのデータはアプリのインストールに紐づく識別済みユーザーのデータはアプリの再インストール後も維持される

匿名ユーザー

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

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

匿名ユーザーの場合、インストールのたびに新しいプロファイルが作成されますが、Adaptyのアナリティクスでは新規インストールとみなす条件を設定できるため、これは問題になりません。

匿名ユーザーの場合、デバイスIDでインストールをカウントする必要があります。この場合、端末への各アプリインストール(再インストールを含む)が1回のインストールとしてカウントされます。

識別済みユーザー

アプリでユーザーを識別するには、2つの方法があります。

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

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

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

identify-diagram.webp

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

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

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

カスタマーユーザーIDは各ユーザーに対して一意である必要があります。パラメータの値をハードコードすると、すべてのユーザーが同一人物とみなされます。

他のSDKメソッドを呼び出す前に、identifyの完了コールバックが呼ばれるまで待機してください。同時に呼び出すと、識別済みプロファイルではなく匿名プロファイルに処理が紐づく場合があります。詳細はAndroid SDKの呼び出し順序をご覧ください。

SDK有効化時

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

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

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

デフォルトでは、匿名プロファイルの作成はアナリティクスのダッシュボードに影響しません。インストールはデバイスIDに基づいてカウントされるためです。

デバイスIDはストアからの端末へのアプリの単一インストールを表し、アプリを再インストールした場合にのみ再生成されます。 初回インストールか再インストールか、または既存のカスタマーユーザーIDが使用されているかどうかは関係ありません。

プロファイルの作成(SDKの有効化またはログアウト時)、ログイン、アプリの再インストールを伴わないアップグレードでは、追加のインストールイベントは発生しません。

デバイスではなく一意のユーザーに基づいてインストールをカウントしたい場合は、App settingsからInstalls definition for analyticsを設定してください。

ユーザーのログアウト

ユーザーをログアウトさせるボタンがある場合は、logoutメソッドを使用してください。

ユーザーをログアウトすると、そのユーザー用に新しい匿名プロファイルが作成されます。

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

ログインなしでの購入を許可する

ユーザーがアプリへのログイン前後どちらでも購入できる場合、ログイン後もアクセスが維持されるようにする必要があります。

  1. ログアウト状態のユーザーが購入を行うと、Adaptyはその購入を匿名プロファイルIDに紐付けます。
  2. ユーザーがアカウントにログインすると、Adaptyは識別済みプロファイルへの切り替えを行います。
    • 新しいカスタマーユーザーIDの場合(例:登録前に購入が行われた場合)、Adaptyは現在のプロファイルにカスタマーユーザーIDを割り当てるため、すべての購入履歴が維持されます。
    • 既存のカスタマーユーザーIDの場合(そのカスタマーユーザーIDがすでにプロファイルにリンクされている場合)、プロファイル切り替え後に実際のアクセスレベルを取得する必要があります。識別後すぐにgetProfileを呼び出すか、プロファイルの更新をリッスンしてデータが自動的に同期されるようにすることができます。

次のステップ

おめでとうございます!アプリにアプリ内課金のロジックを実装できました!アプリのマネタイズが順調に進むことを願っています!

Adaptyをさらに活用するために、以下のトピックもご覧ください。

  • テスト: すべてが期待通りに動作することを確認する
  • オンボーディング: オンボーディングでユーザーを引き付け、リテンションを高める
  • インテグレーション: マーケティングアトリビューションや分析サービスとたった1行のコードで連携する
  • カスタムプロファイル属性の設定: ユーザープロファイルにカスタム属性を追加してセグメントを作成し、A/Bテストを実施したり、ユーザーごとに異なるペイウォールを表示したりする