iOS SDKでのユーザー識別
このガイドは、独自の認証システムをお持ちの方を対象としています。ここでは、既存の認証システムに合わせてAdaptyのユーザープロファイルを管理する方法を説明します。
ユーザーの購入履歴をどのように管理するかは、アプリの認証モデルによって異なります。
- バックエンド認証を使用せず、ユーザーデータを保存しないアプリの場合は、匿名ユーザーに関するセクションを参照してください。
- バックエンド認証を使用している(または使用予定の)アプリの場合は、識別済みユーザーに関するセクションを参照してください。
主要な概念:
- プロファイルはSDKが動作するために必要なエンティティです。Adaptyが自動的に作成します。
- プロファイルは匿名 (カスタマーユーザーIDなし) または識別済み (カスタマーユーザーIDあり) のどちらかになります。
- カスタマーユーザーIDを提供することで、Adaptyのプロファイルと社内の認証システムを紐付けられます。
匿名ユーザーと識別済みユーザーの違いは次のとおりです。
| 匿名ユーザー | 識別済みユーザー | |
|---|---|---|
| 購入管理 | ストアレベルの購入復元 | カスタマーユーザーIDを通じたデバイス間での購入履歴の維持 |
| プロファイル管理 | 再インストールのたびに新しいプロファイルが作成される | セッションとデバイスをまたいで同一プロファイルを使用 |
| データの永続性 | 匿名ユーザーのデータはアプリインストールに紐付く | 識別済みユーザーのデータはアプリインストールをまたいで保持される |
匿名ユーザー
バックエンド認証を使用していない場合、アプリコード内で認証処理を実装する必要はありません。
- アプリの初回起動時にSDKが有効化されると、Adaptyはユーザーの新しいプロファイルを作成します。
- ユーザーがアプリ内で何かを購入すると、その購入はユーザーのAdaptyプロファイルとストアアカウントに紐付けられます。
- ユーザーがアプリを再インストールしたり、新しいデバイスにインストールしたりすると、Adaptyは有効化時に新しい匿名プロファイルを作成します。
- ユーザーがアプリ内で以前に購入を行っていた場合、デフォルトではSDKの有効化時にApp Storeから購入履歴が自動的に同期されます。
バックアップからの復元は再インストールとは動作が異なります。デフォルトでは、ユーザーがバックアップから復元した場合、SDKはキャッシュデータを保持し、新しいプロファイルを作成しません。この動作はclearDataOnBackup設定で変更できます。詳細はこちら。
匿名ユーザーの場合、インストールのたびに新しいプロファイルが作成されますが、Adaptyのアナリティクスで新規インストールとして扱う基準を設定できるため、問題ありません。
匿名ユーザーの場合、インストール数はデバイスIDでカウントする必要があります。この場合、再インストールを含め、デバイスでのアプリインストールが1件としてカウントされます。
識別済みユーザー
アプリ内でユーザーを識別する方法は2つあります。
-
ログイン/サインアップ時: アプリ起動後にユーザーがサインインする場合、認証時にカスタマーユーザーIDを指定して
identify()を呼び出します。 -
SDK有効化時: アプリ起動時にカスタマーユーザーIDが既にわかっている場合は、
activate()を呼び出す際に送信します。
デフォルトでは、Adaptyが別のカスタマーユーザーIDに現在紐付いているカスタマーユーザーIDから購入を受け取った場合、アクセスレベルは共有されます。つまり、両方のプロファイルが有料アクセスを持つことになります。この設定を変更して、一方のプロファイルから他方へ有料アクセスを移行したり、共有を完全に無効にしたりすることもできます。詳細はこちらの記事を参照してください。
ログイン/サインアップ時
アプリ起動後にユーザーを識別する場合(たとえば、アプリへのログイン後やサインアップ後)、identifyメソッドを使用してカスタマーユーザーIDを設定します。
- このカスタマーユーザーIDを以前使用したことがない場合、Adaptyは自動的に現在のプロファイルに紐付けます。
- このカスタマーユーザーIDでユーザーを以前識別したことがある場合、AdaptyはそのカスタマーユーザーIDに紐付いたプロファイルに切り替えます。
カスタマーユーザーIDはユーザーごとに一意である必要があります。パラメーター値をハードコードすると、すべてのユーザーが同一として扱われます。
他のSDKメソッドを呼び出す前に、必ずidentifyをawaitしてください。並列呼び出しを行うと#3006 profileWasChangedが発生するか、匿名プロファイルが対象になります。詳細はiOS SDKの呼び出し順序を参照してください。
SDK有効化時
SDKを有効化する時点でカスタマーユーザーIDが既にわかっている場合は、identifyを別途呼び出す代わりに、activateメソッドで送信できます。
カスタマーユーザーIDがわかっているにもかかわらず、有効化後にのみ設定した場合、有効化時にAdaptyが新しい匿名プロファイルを作成し、identifyを呼び出した後に既存のプロファイルへ切り替えることになります。
既存のカスタマーユーザーID(以前使用したもの)でも新しいものでも渡すことができます。新しいものを渡した場合、有効化時に作成された新しいプロファイルが自動的にそのカスタマーユーザーIDに紐付けられます。
デフォルトでは、匿名プロファイルの作成はアナリティクスのダッシュボードに影響しません。これはインストール数がデバイスIDに基づいてカウントされるためです。
デバイスIDはデバイス上のストアからのアプリの単一インストールを表し、アプリの再インストール後にのみ再生成されます。 初回インストールか再インストールかに関わらず、また既存のカスタマーユーザーIDを使用するかどうかにも依存しません。
プロファイルの作成(SDKの有効化またはログアウト時)、ログイン、または再インストールなしのアプリアップグレードでは、追加のインストールイベントは発生しません。
デバイスではなくユニークユーザーに基づいてインストールをカウントしたい場合は、App settingsでInstalls definition for analyticsを設定してください。
ユーザーのログアウト
ユーザーをログアウトさせるボタンがある場合は、logoutメソッドを使用します。
ユーザーをログアウトすると、そのユーザーの新しい匿名プロファイルが作成されます。
ユーザーをアプリに再ログインさせるには、identifyメソッドを使用します。
ログインなしでの購入を許可する
ユーザーがアプリにログインする前後どちらでも購入できる場合、ログイン後もアクセスが維持されるようにする必要があります。
- ログアウト状態のユーザーが購入を行うと、Adaptyはその購入を匿名プロファイルIDに紐付けます。
- ユーザーがアカウントにログインすると、Adaptyは識別済みプロファイルへの切り替えを行います。
- 新しいカスタマーユーザーIDの場合(たとえば、登録前に購入が行われた場合)、AdaptyはカスタマーユーザーIDを現在のプロファイルに割り当て、購入履歴がすべて維持されます。
- 既存のカスタマーユーザーIDの場合(カスタマーユーザーIDがすでにプロファイルに紐付いている場合)、プロファイル切り替え後に実際のアクセスレベルを取得する必要があります。識別後すぐに
getProfileを呼び出すか、データが自動的に同期されるようプロファイルの更新をリッスンすることができます。
次のステップ
おめでとうございます!アプリにアプリ内決済のロジックを実装できました!アプリのマネタイズがうまくいくことを願っています。
Adaptyをさらに活用するために、以下のトピックもご覧ください。
- テスト: すべてが期待どおりに動作するか確認する
- オンボーディング: オンボーディングでユーザーを引き込みリテンションを高める
- インテグレーション: マーケティングアトリビューションおよびアナリティクスサービスとわずか1行のコードで連携する
- カスタムプロファイル属性の設定: ユーザープロファイルにカスタム属性を追加してセグメントを作成し、A/B テストを実施したり異なるユーザーに異なるペイウォールを表示したりする