---
title: "Capacitor SDKでユーザーを識別する"
description: "Capacitorでのアプリ内サブスクリプション管理のためのAdaptyセットアップ クイックスタートガイド。"
---

ユーザーの購入管理方法は、アプリの認証モデルによって異なります：
- アプリでバックエンド認証を使用せず、ユーザーデータを保存しない場合は、[匿名ユーザーに関するセクション](#anonymous-users)をご覧ください。
- アプリにバックエンド認証がある（または予定している）場合は、[識別済みユーザーに関するセクション](#identified-users)をご覧ください。

:::tip
**主な概念**：
- **プロファイル**は、SDKが機能するために必要なエンティティです。Adaptyが自動的に作成します。匿名（カスタマーユーザーIDなし）または識別済み（カスタマーユーザーIDあり）のいずれかになります。
- **カスタマーユーザーID**は、**あなたが作成する**オプションの識別子で、ユーザーをAdaptyプロファイルに紐付けるために使用します。
:::

匿名ユーザーと識別済みユーザーの違いは次のとおりです：

|                         | 匿名ユーザー                                      | 識別済みユーザー                                                        |
|-------------------------|------------------------------------------------------|-------------------------------------------------------------------------|
| **購入管理** | ストアレベルの購入復元                     | カスタマーユーザーIDを通じてデバイスをまたいで購入履歴を維持 |
| **プロファイル管理**  | 再インストールごとに新しいプロファイルが作成される                       | セッションやデバイスをまたいで同じプロファイルを使用                            |
| **データの永続性**    | 匿名ユーザーのデータはデバイス/インストールに紐付けられる | 識別済みユーザーのデータはデバイスやセッションをまたいで保持される             |

## 匿名ユーザー \{#anonymous-users\}

バックエンド認証がない場合、**アプリのコードで認証を処理する必要はありません**：

1. アプリの初回起動時にSDKが有効化されると、Adaptyが**ユーザーの新しいプロファイルを作成**します。
2. ユーザーがアプリ内で何かを購入すると、その購入は**そのユーザーのAdaptyプロファイルとストアアカウントに関連付け**られます。
3. ユーザーがアプリを**再インストール**したり、**新しいデバイス**にインストールしたりすると、Adaptyは有効化時に**新しい空のプロファイルを作成**します。
4. ユーザーがアプリで以前に購入をしていた場合、デフォルトでは、SDKの有効化時にApp Storeから購入が自動的に同期されます。

:::note
バックアップからの復元は、再インストールとは動作が異なります。デフォルトでは、ユーザーがバックアップから復元した場合、SDKはキャッシュされたデータを保持し、新しいプロファイルを作成しません。この動作は`clearDataOnBackup`設定で変更できます。[詳細はこちら](sdk-installation-capacitor#clear-data-on-backup-restore)。
:::

## 識別済みユーザー \{#identified-users\}

- プロファイルにまだカスタマーユーザーIDがない場合（つまり、**ユーザーがサインインしていない**場合）、カスタマーユーザーIDを送信すると、そのプロファイルに関連付けられます。
- **再インストール、サインイン、または新しいデバイスからのインストール**で、以前にそのカスタマーユーザーIDを送信したことがある場合、新しいプロファイルは作成されません。代わりに、そのカスタマーユーザーIDに関連付けられた既存のプロファイルに切り替わります。

アプリでユーザーを識別する方法は2つあります：

- [**ログイン/サインアップ時：**](#during-loginsignup) アプリ起動後にユーザーがサインインする場合、認証時に`identify()`をカスタマーユーザーIDとともに呼び出します。

- [**SDK有効化時：**](#during-the-sdk-activation) アプリ起動時にすでにカスタマーユーザーIDが保存されている場合、`activate()`を呼び出す際に送信します。

:::important
デフォルトでは、Adaptyが現在別のカスタマーユーザーIDに関連付けられているカスタマーユーザーIDからの購入を受け取った場合、アクセスレベルは共有され、両方のプロファイルが有料アクセスを持ちます。この設定を変更して、有料アクセスを1つのプロファイルから別のプロファイルに移動したり、共有を完全に無効にしたりすることができます。詳細は[こちらの記事](general#6-sharing-paid-access-between-user-accounts)をご覧ください。
:::

  <img src="/assets/shared/img/identify-diagram.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

### ログイン/サインアップ時 \{#during-loginsignup\}

アプリ起動後にユーザーを識別する場合（例：アプリへのログインやサインアップ後）は、`identify`メソッドを使用してカスタマーユーザーIDを設定します。

- **このカスタマーユーザーIDを以前に使用したことがない**場合、Adaptyは自動的にそれを現在のプロファイルに紐付けます。
- **このカスタマーユーザーIDを以前にユーザーの識別に使用したことがある**場合、AdaptyはそのカスタマーユーザーIDに関連付けられたプロファイルに切り替えます。

:::tip
カスタマーユーザーIDを作成する際は、ユーザーデータと一緒に保存しておくと、新しいデバイスからログインした場合やアプリを再インストールした際に同じIDを送信できます。
:::

他のSDKメソッドを呼び出す前に、必ず`identify`を`await`してください。並行して呼び出すと`#3006 profileWasChanged`が発生するか、匿名プロファイルに対して操作が行われます。[Capacitor SDKの呼び出し順序](capacitor-sdk-call-order)を参照してください。

```typescript showLineNumbers
try {
  await adapty.identify({ customerUserId: "YOUR_USER_ID" });
  // successfully identified
} catch (error) {
  // handle the error
}
```

### SDK有効化時 \{#during-the-sdk-activation\}

SDKを有効化するときにすでにカスタマーユーザーIDがわかっている場合は、`identify`を別途呼び出す代わりに、`activate`メソッドで送信できます。

カスタマーユーザーIDがわかっていても、有効化後にのみ設定する場合、有効化時にAdaptyは新しい空のプロファイルを作成し、`identify`を呼び出した後にのみ既存のプロファイルに切り替わります。

既存のカスタマーユーザーID（以前に使用したもの）と新しいもののどちらでも渡すことができます。新しいものを渡した場合、有効化時に作成された新しいプロファイルが自動的にそのカスタマーユーザーIDに紐付けられます。

:::tip
作成された空のプロファイルをダッシュボードのアナリティクスから除外するには、**App settings**に移動して[**Installs definition for analytics**](general#4-installs-definition-for-analytics)を設定してください。
:::

```typescript showLineNumbers
await adapty.activate({
  apiKey: "YOUR_PUBLIC_SDK_KEY",
  params: {
    customerUserId: "YOUR_USER_ID"
  }
});
```

### ユーザーをログアウトする \{#log-users-out\}

ユーザーをログアウトするボタンがある場合は、`logout`メソッドを使用します。これにより、ユーザーに新しい匿名プロファイルIDが作成されます。

```typescript showLineNumbers
try {
  await adapty.logout();
  // successful logout
} catch (error) {
  // handle the error
}
```

:::info
ユーザーをアプリに再度ログインさせるには、`identify`メソッドを使用してください。
:::

### ログインせずに購入を許可する \{#allow-purchases-without-login\}

ユーザーがアプリにログインする前後の両方で購入できる場合、追加の設定は不要です：

仕組みは次のとおりです：
1. ログアウト状態のユーザーが購入を行うと、Adaptyはその購入を匿名プロファイルIDに紐付けます。
2. ユーザーがアカウントにログインすると、Adaptyは識別済みプロファイルに切り替えます。
    - 既存のカスタマーユーザーID（すでにプロファイルに紐付けられているカスタマーユーザーID）の場合、Adaptyはトランザクションを自動的に同期します。
    - 新しいカスタマーユーザーID（例：登録前に購入が行われた場合）の場合、Adaptyは現在のプロファイルにカスタマーユーザーIDを割り当て、すべての購入履歴が維持されます。