> ## 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 не будет делиться ни одним байтом трафика, пока пользователь явно не согласится, и у пользователя всегда должна быть очевидная возможность отказаться. Это жесткое требование SDK и жесткое требование каждой политики магазина браузеров, которая позволяет расширения на основе Mellowtel.

## Почему это важно

Это трафик пользователя. Все, что меньше явного, отзывного согласия, является как неэтичным, так и основанием для удаления из магазина. SDK разработан так, чтобы *легкий* путь также был *соответствующим*. Если ты следуешь рекомендованной реализации, ты не сможешь случайно выпустить версию, которая активируется без согласия.

## Как это работает

При первой установке (и при любом обновлении, которое впервые вводит Mellowtel) ты должен показать пользователю неотключаемый отказ от ответственности, который объясняет, что делает Mellowtel, а затем зафиксировать его выбор. С этого момента ссылка на настройки должна быть доступна из какого-то очевидного места в твоем интерфейсе, чтобы они могли изменить свое мнение.

<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>

У тебя есть два варианта реализации:

1. **Рекомендуется:** открыть предварительно созданную страницу включения Mellowtel с помощью `generateAndOpenOptInLink()`. Один вызов метода, полное соответствие, максимизация конверсии включения.
2. **Пользовательский интерфейс:** создать свою собственную поверхность согласия и вызвать `optIn()` / `optOut()` самостоятельно.

## Поверхность API

| Метод                        | Возвращает         | Используй для                                                                             |
| ---------------------------- | ------------------ | ----------------------------------------------------------------------------------------- |
| `generateAndOpenOptInLink()` | `Promise<void>`    | Открыть размещенную страницу включения (рекомендуемый путь).                              |
| `getOptInStatus()`           | `Promise<boolean>` | Проверить, согласился ли пользователь.                                                    |
| `optIn()`                    | `Promise<void>`    | Зафиксировать согласие из твоего интерфейса.                                              |
| `optOut()`                   | `Promise<void>`    | Отозвать согласие из твоего интерфейса.                                                   |
| `start()`                    | `Promise<void>`    | Начать обработку запросов после согласия.                                                 |
| `generateSettingsLink()`     | `Promise<string>`  | URL на размещенную страницу настроек, чтобы пользователи могли изменить свой выбор позже. |

Все методы доступны из любой части твоего расширения: всплывающее окно, скрипт содержимого или фоновый скрипт.

## Рекомендуемая реализация

Полное руководство по интеграции находится в быстрых стартах платформы. Они показывают, куда поместить SDK, как подключить его к жизненному циклу установки/обновления и как его протестировать:

* [Быстрый старт для плагинов браузера](/browser-plugins/quickstart)
* [Быстрый старт для настольного приложения](/desktop-app/quickstart)
* [Быстрый старт для веб-сайта](/website/quickstart)
* [Быстрый старт для мобильного приложения](/mobile-app/quickstart)

Вкратце, после `new Mellowtel(...)` и `initBackground()`, вызови `generateAndOpenOptInLink()` из своего обработчика установки/обновления. Вот и все.

## Пользовательский интерфейс

Если ты хочешь полный контроль над поверхностью согласия, зафиксируй выбор пользователя в своем интерфейсе и передай его в SDK:

```javascript theme={null}
// Пользователь согласился
await mellowtel.optIn();
await mellowtel.start();

// Пользователь отказался или позже отозвал согласие
await mellowtel.optOut();

// Проверка статуса (например, для отображения переключателя)
const hasOptedIn = await mellowtel.getOptInStatus();
```

Какой бы интерфейс ты ни создавал, он должен:

1. Быть неотключаемым при первой установке.
2. По умолчанию быть отключенным, пока пользователь активно не согласится.
3. Быть повторно открываемым из какого-то очевидного места в твоем продукте, чтобы пользователи могли изменить свой выбор.

## Ссылка на настройки

Пользователи всегда должны иметь легкий способ изменить свои настройки. Используй `generateSettingsLink()`, чтобы получить URL на размещенную страницу настроек и разместить его где-то постоянно: в твоем всплывающем окне, на странице опций, на экране учетной записи.

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

## Объявление Mellowtel существующим пользователям

Если ты добавляешь Mellowtel в расширение, у которого уже есть пользователи, ты должен сообщить им, что изменилось, прежде чем запрашивать согласие. Мы предоставляем [шаблон объявления для копирования и вставки](/concepts/update-announcement), который ты можешь адаптировать.

## Связанные темы

* [Конфиденциальность](/concepts/privacy): что пользователи фактически соглашаются делиться.
* [Ограничение скорости](/concepts/rate-limiting): как SDK защищает пользователей, которые соглашаются.
