---
title: "Unity SDKの呼び出し順序"
description: "Adapty SDKのメソッドを正しい順序で呼び出すことで、プレミアムアクセスの喪失、アトリビューションの欠落、断続的な#2002エラーを回避できます。"
---

`Adapty.Activate()` は、他のAdapty SDKメソッドを呼び出す前に完了している必要があります。完了コールバックが発火するまで、SDKには状態がありません。`Activate()` の前または並行して発行された呼び出しは、[`#2002 notActivated`](unity-handle-errors#custom-network-codes) でエラーになります。

アプリがユーザー認証を行い、起動後にカスタマーユーザーIDを取得する場合は、そのタイミングで `Adapty.Identify()` を呼び出してください。`Identify` コールバックが発火するまでユーザーアクションのメソッドを呼び出してはいけません。`Identify` と競合する呼び出しは [`#3006 profileWasChanged`](unity-handle-errors#custom-network-codes) で失敗するか、アクティベーション時に作成された匿名プロファイルに対して実行されてしまいます。これが起きると、アトリビューション、`appsflyer_id` などのMMP ID、インストールの帰属が識別済みプロファイルに引き継がれないことがあります。アプリがユーザー認証を行わない場合は、`Identify` をスキップして匿名プロファイルのまま使い続けてください。

MMP・アナリティクスSDK（AppsFlyer、Adjust、Branch、PostHog）も同じルールに従います。先にそれらを初期化し、UIDコールバックを受け取ってから `Adapty.Activate` を呼び出してください。そうしないと、MMP IDが短命な匿名プロファイルに紐づき、識別済みプロファイルに引き継がれないことがあります。AppsFlyerの詳細については、[AppsFlyer](appsflyer)を参照してください。

## 正しい呼び出し順序 \{#the-correct-order\}

どのパスをたどるかは、カスタマーユーザー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   | `Adapty.Activate(builder.Build(), ...)` — builderに `SetCustomerUserId` を設定                               | アプリ起動時、ステップ1の後、カスタマーユーザーIDが判明している場合                   | 推奨。匿名プロファイルは一切作成されません。                                                   |
| 2b   | `Adapty.Activate(builder.Build(), ...)` — `SetCustomerUserId` なし                                           | アプリ起動時、ステップ1の後、カスタマーユーザーIDが不明な場合（または取得しない場合） | Adaptはが匿名プロファイルを作成します。                                                        |
| 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`、`GetPaywallProducts`、`RestorePurchases`、`MakePurchase`、`UpdateAttribution`、`UpdateProfile`  | `Identify` を呼び出す場合はステップ4の後、それ以外はステップ3の後（MMPがない場合はステップ2の後） | これらの呼び出しには安定したプロファイルが必要です。                                           |

:::important
これらのステップをスキップすると、リターンユーザーのプレミアムアクセスの喪失、プロファイルへの `appsflyer_id` の欠落、誤ったオーディエンスに対するペイウォールの返却といった問題が発生します。
:::

## Web2appとウェブファネルからのインストール \{#web2app-and-web-funnel-installs\}

ユーザーがWebチェックアウト（Stripe、Paddle）で購入してからネイティブアプリをインストールした場合、デバイスの最初の `Activate()` によって新しい匿名プロファイルが作成されます。このプロファイルはWebプロファイルと紐づきません。認証フローやインストールリファラーからアプリ起動前にカスタマーユーザーIDを解決できる場合は、`Activate()` に直接渡してください。そうでない場合、`Identify("YOUR_USER_ID")` を呼び出してから `RestorePurchases` を実行するまで、Web上での購入はデバイス上で確認できません。

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

- [Stripe](stripe)
- [Paddle](paddle)