Capacitor 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)も同じルールに従います。adapty.activate を呼び出す前に、これらを先に初期化して UID コールバックを待ってください。そうしないと、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 は不要です。

ステップ呼び出しタイミング備考
1MMP またはアナリティクス SDK を初期化する(AppsFlyer、Adjust、PostHog、Branch)アプリ起動時、最初に実行MMP の UID コールバック(例:getAppsFlyerUID)を待つ。
2aadapty.activate({ apiKey: '...', params: { customerUserId: '...' } })アプリ起動時、ステップ 1 の後。customer user ID がある場合推奨。匿名プロファイルは作成されない。
2badapty.activate({ apiKey: '...' })customerUserId なし)アプリ起動時、ステップ 1 の後。customer user ID がない(または収集しない)場合Adapty が匿名プロファイルを作成する。
3各 MMP に対して adapty.setIntegrationIdentifier({ key: '...', value: '...' })ステップ 2 の後、ユーザー操作の呼び出しより前に実行MMP の ID を正しいプロファイルに紐付けるために必須。
4await adapty.identify({ customerUserId: 'YOUR_USER_ID' })ステップ 3 の後(MMP がない場合はステップ 2 の後)、ステップ 5 より前。認証ありのパス 2b のみ必ず await する。identify 中の並列呼び出しは #3006 profileWasChanged を引き起こす。
5getPaywall(SDK v4 では getFlow)、getPaywallProductsrestorePurchasesmakePurchaseupdateAttribution(SDK 4.1 では updateExternalAttribution)、updateProfileidentify を呼び出す場合はステップ 4 の後。それ以外はステップ 3 の後(MMP がない場合はステップ 2 の後)これらの呼び出しには安定したプロファイルが必要。
Important

これらのステップをスキップすると、復帰ユーザーのプレミアムアクセスが失われたり、プロファイルに appsflyer_id が設定されなかったり、誤ったオーディエンスに対してペイウォールが返されたりする原因になります。

Web2appとウェブファネルのインストール

ユーザーがウェブチェックアウト(Stripe、Paddle)で購入し、後でネイティブアプリをインストールした場合、デバイスで最初に呼ばれる activate() は新しい匿名プロファイルを作成します。このプロファイルはウェブのプロファイルとは紐付けられません。アプリ起動前に(認証フローやインストールリファラーなどから)カスタマーユーザーIDを取得できる場合は、そのIDを直接 activate() に渡してください。そうでない場合、identify({ customerUserId: 'YOUR_USER_ID' }) を呼び出してから restorePurchases を実行するまで、ウェブでの購入はデバイス上では確認できません。

各ウェブチェックアウトで送信するメタデータについては、以下を参照してください: