Unity SDKの呼び出し順序
Adapty.Activate() は、他のAdapty SDKメソッドを呼び出す前に完了している必要があります。完了コールバックが発火するまで、SDKには状態がありません。Activate() の前または並行して発行された呼び出しは、#2002 notActivated でエラーになります。
アプリがユーザー認証を行い、起動後にカスタマーユーザーIDを取得する場合は、そのタイミングで Adapty.Identify() を呼び出してください。Identify コールバックが発火するまでユーザーアクションのメソッドを呼び出してはいけません。Identify と競合する呼び出しは #3006 profileWasChanged で失敗するか、アクティベーション時に作成された匿名プロファイルに対して実行されてしまいます。これが起きると、アトリビューション、appsflyer_id などのMMP ID、インストールの帰属が識別済みプロファイルに引き継がれないことがあります。アプリがユーザー認証を行わない場合は、Identify をスキップして匿名プロファイルのまま使い続けてください。
MMP・アナリティクスSDK(AppsFlyer、Adjust、Branch、PostHog)も同じルールに従います。先にそれらを初期化し、UIDコールバックを受け取ってから Adapty.Activate を呼び出してください。そうしないと、MMP IDが短命な匿名プロファイルに紐づき、識別済みプロファイルに引き継がれないことがあります。AppsFlyerの詳細については、AppsFlyerを参照してください。
正しい呼び出し順序
どのパスをたどるかは、カスタマーユーザーIDをいつ取得できるか、そしてMMPまたはアナリティクスSDKを使用するかどうかによって決まります。
- ステップ2と5: すべてのアプリで必須です。SDKをアクティベートし、その後SDKメソッドを呼び出します。
- ステップ1と3: MMPまたはアナリティクスSDK(AppsFlyer、Adjust、Branch、PostHog)を統合する場合のみ必要です。
- ステップ4: アプリがユーザー認証を行い、起動後にカスタマーユーザーIDを取得する場合のみ必要です。
アプリ起動時にカスタマーユーザーIDが判明している場合は、Activate() に直接渡してください(ステップ2a)。このパスでは匿名プロファイルが作成されないため、ステップ4は不要です。
| ステップ | 呼び出し | タイミング | 備考 |
|---|---|---|---|
| 1 | MMPまたは分析SDK(AppsFlyer、Adjust、PostHog、Branch)を初期化する | アプリ起動時、最初に | MMPのUIDコールバック(例:getAppsFlyerId)を待つ。 |
| 2a | SetCustomerUserIdをビルダーに設定したAdapty.Activate(builder.Build(), ...) | ステップ1の後、カスタマーユーザーIDがある場合 | 推奨。匿名プロファイルは一切作成されない。 |
| 2b | SetCustomerUserIdなしのAdapty.Activate(builder.Build(), ...) | ステップ1の後、カスタマーユーザーIDがない場合(または収集しない場合) | Adaptyが匿名プロファイルを作成する。 |
| 3 | 各MMPに対してAdapty.SetIntegrationIdentifier(key, value, callback) | ステップ2の後、ユーザー操作の呼び出しよりも前 | MMP IDを正しいプロファイルに紐付けるために必須。 |
| 4 | Adapty.Identify("YOUR_USER_ID", callback) | ステップ3の後(MMPなしの場合はステップ2の後)、ステップ5よりも前 — 認証ありのパス2bのみ | 完了コールバックを待つこと。Identify実行中に並行呼び出しを行うと#3006 profileWasChangedが発生する。 |
| 5 | GetPaywall(SDK v4ではGetFlow)、GetPaywallProducts、RestorePurchases、MakePurchase、UpdateAttribution(SDK 4.1ではUpdateExternalAttribution)、UpdateProfile | Identifyを呼び出す場合はステップ4の後、それ以外はステップ3の後(MMPなしの場合はステップ2の後) | これらの呼び出しには安定したプロファイルが必要。 |
これらのステップをスキップすると、リターンユーザーのプレミアムアクセスの喪失、プロファイルへの appsflyer_id の欠落、誤ったオーディエンスに対するペイウォールの返却といった問題が発生します。
Web2appとウェブファネルからのインストール
ユーザーがWebチェックアウト(Stripe、Paddle)で購入してからネイティブアプリをインストールした場合、デバイスの最初の Activate() によって新しい匿名プロファイルが作成されます。このプロファイルはWebプロファイルと紐づきません。認証フローやインストールリファラーからアプリ起動前にカスタマーユーザーIDを解決できる場合は、Activate() に直接渡してください。そうでない場合、Identify("YOUR_USER_ID") を呼び出してから RestorePurchases を実行するまで、Web上での購入はデバイス上で確認できません。
各Webチェックアウトで送信するメタデータについては、以下を参照してください: