> ## Documentation Index
> Fetch the complete documentation index at: https://www.mellowtel.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# オプトイン / オプトアウト

> ユーザーは帯域幅が共有される前に明示的に同意する必要があり、いつでも同意を取り消すことができます

## それが何か

Mellowtel は、ユーザーが明示的にオプトインするまで、1バイトの帯域幅も共有しません。また、ユーザーには常にオプトアウトする明確な方法が必要です。これは SDK の厳格な要件であり、Mellowtel ベースの拡張機能を許可するすべてのブラウザストアポリシーの厳格な要件です。

## 重要性

それはユーザーの帯域幅です。明示的で取り消し可能な同意がない場合、それは非倫理的であり、ストアからの削除の理由となります。SDK は、*簡単な* パスが *準拠した* パスでもあるように設計されています。推奨される実装に従えば、同意なしにアクティブ化されるバージョンを誤って出荷することはできません。

## 仕組み

初回インストール時（および Mellowtel を新たに導入する更新時）には、Mellowtel が何をするかを説明する解除不可能な免責事項をユーザーに表示し、その選択を取得する必要があります。その後、設定リンクが UI のどこかから明確にアクセスできるようにして、ユーザーが意見を変えることができるようにします。

<Frame caption="免責事項の例">
  <img src="https://mintcdn.com/mellowtel/-NaMUO-H7VMwBlS7/images/mellowtel_disclaimer.png?fit=max&auto=format&n=-NaMUO-H7VMwBlS7&q=85&s=ab77574d21e0e4879d5f55977eab0223" width="1058" height="898" data-path="images/mellowtel_disclaimer.png" />
</Frame>

実装には2つのオプションがあります：

1. **推奨:** `generateAndOpenOptInLink()` を使用して、事前に構築された Mellowtel オプトインページを開きます。1回のメソッド呼び出しで完全に準拠し、オプトインのコンバージョンを最大化します。
2. **カスタム UI:** 独自の同意画面を構築し、自分で `optIn()` / `optOut()` を呼び出します。

## API サーフェス

| メソッド                         | 戻り値                | 使用目的                                     |
| ---------------------------- | ------------------ | ---------------------------------------- |
| `generateAndOpenOptInLink()` | `Promise<void>`    | ホストされたオプトインページを開く（推奨パス）。                 |
| `getOptInStatus()`           | `Promise<boolean>` | ユーザーがすでにオプトインしているかどうかを確認します。             |
| `optIn()`                    | `Promise<void>`    | 独自の UI から同意を記録します。                       |
| `optOut()`                   | `Promise<void>`    | 独自の UI から同意を取り消します。                      |
| `start()`                    | `Promise<void>`    | オプトイン後にリクエストの処理を開始します。                   |
| `generateSettingsLink()`     | `Promise<string>`  | ユーザーが後で選択を変更できるようにするためのホストされた設定ページの URL。 |

すべてのメソッドは、拡張機能の任意の部分（ポップアップ、コンテンツスクリプト、またはバックグラウンドスクリプト）からアクセス可能です。

## 推奨実装

完全な統合手順はプラットフォームクイックスタートにあります。そこでは、SDK の配置場所、インストール/更新ライフサイクルへの接続方法、およびテスト方法を示しています：

* [ブラウザプラグインクイックスタート](/browser-plugins/quickstart)
* [デスクトップアプリクイックスタート](/desktop-app/quickstart)
* [ウェブサイトクイックスタート](/website/quickstart)
* [モバイルアプリクイックスタート](/mobile-app/quickstart)

要するに、`new Mellowtel(...)` と `initBackground()` の後、インストール/更新ハンドラから `generateAndOpenOptInLink()` を呼び出します。それだけです。

## カスタム UI

同意画面を完全に制御したい場合は、独自の UI でユーザーの選択を取得し、それを SDK に転送します：

```javascript theme={null}
// ユーザーが同意した場合
await mellowtel.optIn();
await mellowtel.start();

// ユーザーが拒否した、または後で同意を取り消した場合
await mellowtel.optOut();

// ステータスを確認（例：トグルを表示するため）
const hasOptedIn = await mellowtel.getOptInStatus();
```

どのような UI を構築するにしても、以下を満たす必要があります：

1. 初回インストール時に解除不可能であること。
2. ユーザーが積極的に同意するまでオプトアウト状態であること。
3. ユーザーが選択を変更できるように、製品内のどこかから再度開けること。

## 設定リンク

ユーザーは常に設定を変更する簡単な方法を持っている必要があります。`generateSettingsLink()` を使用してホストされた設定ページの URL を取得し、ポップアップ、オプションページ、アカウント画面などのどこかに配置します。

```javascript theme={null}
const settingsUrl = await mellowtel.generateSettingsLink();
```

## 既存のユーザーへの Mellowtel の告知

すでにユーザーがいる拡張機能に Mellowtel を追加する場合、同意を求める前に何が変更されたかを伝える必要があります。適応可能な [コピーペースト告知テンプレート](/concepts/update-announcement) を提供しています。

## 関連

* [プライバシー](/concepts/privacy): ユーザーが実際に共有することに同意している内容。
* [レート制限](/concepts/rate-limiting): オプトインしたユーザーを SDK がどのように保護するか。
