React Native SDKでユーザーを識別する

このガイドは、独自の認証システムを持っている方向けです。ここでは、Adaptyでユーザープロファイルを管理し、既存の認証システムと連携させる方法を説明します。

ユーザーの購入をどのように管理するかは、アプリの認証モデルによって異なります。

主要な概念:

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

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

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

匿名ユーザー

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

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

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

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

匿名ユーザーの場合、デバイスIDに基づいてインストール数をカウントします。この場合、再インストールを含め、デバイス上のアプリインストールがそれぞれ1回のインストールとしてカウントされます。

識別済みユーザー

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

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

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

デフォルトでは、あるカスタマーユーザーIDから購入が発生した際、そのIDが別のカスタマーユーザーIDに紐付いていても、アクセスレベルは共有されます。つまり、両方のプロファイルが有料アクセスを持ちます。この設定を変更して、一方のプロファイルから他方へアクセスを移譲したり、共有を無効にしたりすることもできます。詳細はこちらの記事を参照してください。

identify-diagram.webp

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

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

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

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

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

try {
    await adapty.identify("YOUR_USER_ID"); // Unique for each user
    // successfully identified
} catch (error) {
    // handle the error
}

SDKの有効化時

SDKを有効化する時点でカスタマーユーザーIDが既にわかっている場合、identifyを別途呼び出さずにactivateメソッドに渡すことができます。

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

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

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

デバイスIDはストアからデバイスへのアプリの1回のインストールを表し、アプリの再インストール後にのみ再生成されます。
初回インストールか再インストールかや、既存のカスタマーユーザーIDを使用するかどうかには依存しません。

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

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

adapty.activate("PUBLIC_SDK_KEY", {
    customerUserId: "YOUR_USER_ID" // Customer user IDs must be unique for each user. If you hardcode the parameter value, all users will be considered as one.
});

ユーザーをログアウトさせる

ユーザーのログアウトボタンがある場合は、logoutメソッドを使用します。

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

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

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

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

ユーザーがログイン前後の両方で購入できる場合、ログイン後もアクセスが維持されるよう対応が必要です:

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

次のステップ

おめでとうございます!アプリにアプリ内課金のロジックを実装できました。アプリの収益化を成功させてください!

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

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