React Native SDKの呼び出し順序
adapty.activate() が完了してから、他のAdapty SDKメソッドを呼び出す必要があります。解決されるまで、SDKは状態を持ちません。activate() の前または並行して発行された呼び出しは、#2002 notActivated で失敗します。
アプリがユーザーを認証し、起動後にカスタマーユーザーIDを取得する場合は、その時点で adapty.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点によって決まります。
- ステップ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 コールバック(例:getAppsFlyerUID)を待ってから次へ進む。 |
| 2a | adapty.activate('YOUR_PUBLIC_SDK_KEY', { customerUserId: 'YOUR_USER_ID' }) | アプリ起動時、ステップ 1 の後、customer user ID がある場合 | 推奨。匿名プロファイルは一切作成されない。 |
| 2b | adapty.activate('YOUR_PUBLIC_SDK_KEY') (customerUserId なし) | アプリ起動時、ステップ 1 の後、customer user ID がない場合(または収集しない場合) | Adapty が匿名プロファイルを作成する。 |
| 3 | 各 MMP に対して adapty.setIntegrationIdentifier(key, value) を呼び出す | ステップ 2 の後、ユーザーアクション系の呼び出しより前 | MMP の ID を正しいプロファイルに紐付けるために必須。 |
| 4 | await adapty.identify('YOUR_USER_ID') | ステップ 3 の後(MMP なしの場合はステップ 2 の後)、ステップ 5 の前 — 認証を行うパス 2b のみ | 必ず await を使うこと。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およびウェブファネルからのインストール
ユーザーがウェブチェックアウト(Stripe、Paddle)で購入し、その後ネイティブアプリをインストールした場合、デバイス最初の activate() が新しい匿名プロファイルを作成します。このプロファイルはウェブプロファイルとリンクされません。アプリ起動前にカスタマーユーザーIDを解決できる場合(認証フローやインストールリファラーから)、activate() に直接渡してください。そうでない場合、identify('YOUR_USER_ID') を呼び出してから restorePurchases を呼び出すまで、ウェブ購入はデバイス上で表示されません。
各ウェブチェックアウトで送信するメタデータについては、以下を参照してください: