Skip to main content
Интегрируйте Mellowtel в ваше Windows desktop приложение, чтобы пользователи могли делиться неиспользованной интернет-полосой в обмен на награды или премиум-функции.
Согласие пользователя обязательно. SDK выбросит InvalidOperationException, если вы вызовете StartAsync() без согласия пользователя.

Предварительные условия

  • Аккаунт Mellowtel и Integration ID из панели управления. Каждое desktop приложение получает уникальный Integration ID.
  • .NET 10 SDK
  • Windows 10 или Windows 11
  • .NET desktop приложение (Console, WPF или Windows Forms)
Хотите увидеть полную, реальную интеграцию перед тем, как внедрить это в свое приложение? Пример mellowtel-pomodoro-windows для WPF показывает полный поток от начала до конца: диалог согласия, переключатель настроек и жизненный цикл в фоновом режиме.

Установка

Mellowtel для Windows доступен на NuGet как Mellowtel.Win.

1. Установите пакет

Из директории вашего проекта:
Или добавьте PackageReference в ваш .csproj:

2. Добавьте в ваш код

Замените YOUR_INTEGRATION_ID на Integration ID из вашей панели управления Mellowtel и установите PluginId как стабильный идентификатор для вашего приложения. ShowConsentDialog() — это ваш собственный интерфейс, который возвращает true только когда пользователь явно соглашается. См. Согласие пользователя ниже.

Опции конфигурации

MellowtelOptions позволяет настроить несколько параметров:
СвойствоТипПо умолчаниюОписание
PluginIdstring"mellowtel-win"Стабильный идентификатор для вашего приложения. Установите что-то уникальное.
MaxDailyRateintВстроенное значение по умолчаниюМаксимальное количество запросов, которые SDK будет обрабатывать в день.
DisableLogsbooltrueУстановите false, чтобы включить логи SDK во время разработки.

Примеры по типу приложения

Наблюдение за состоянием подключения

Экземпляр Mellowtel предоставляет событие ConnectionStateChanged, которое срабатывает всякий раз, когда WebSocket к бэкенду Mellowtel подключается или отключается. Примеры для WPF и Windows Forms выше подписываются на это событие, чтобы управлять индикатором состояния. Параметр — это bool, где true означает подключено, а false — отключено. Событие срабатывает в фоновом потоке, поэтому UI-фреймворки, которые требуют привязки потоков, должны передавать обновления в UI-поток. В WPF используйте Dispatcher.Invoke, а в Windows Forms — Control.Invoke (оба показаны в примерах выше).
О паттерне WPF async void OnClosing. Пример WPF выше использует protected override async void OnClosing, что является простейшей формой, но имеет тонкую проблему: base.OnClosing(e) вызывается синхронно, пока StopAsync() все еще ожидается, так что окно может закрыться до завершения очистки. Для большинства приложений это нормально, так как процесс сразу же завершает работу. Если вам нужно гарантированное корректное завершение (например, для сброса телеметрии), следуйте документированному Microsoft паттерну отложенного выполнения, где вы устанавливаете e.Cancel = true, await для вашей асинхронной работы, а затем явно закрываете окно.

Согласие пользователя

Отображение диалога согласия обязательно. SDK это обеспечивает: StartAsync() выбрасывает InvalidOperationException, если пользователь не дал согласие.

Что должно включать ваше диалоговое окно согласия

1

Объясните, что делает Mellowtel

Используйте простой язык. Пример: “Это приложение использует Mellowtel для обмена вашей неиспользованной интернет-полосой. Это позволяет вам [выгода/функция]. Вы можете отказаться в любое время в настройках.”
2

Предоставьте пользователям четкий выбор

Включите отдельные опции Принять и Отклонить.
3

Ссылка на политику

Позвольте пользователям изменить свое согласие в настройках

Для более богатого интерфейса (например, отображения, когда пользователь впервые дал согласие) GetOptInDetails() возвращает статус согласия вместе с временными метками согласия и отказа:

Устранение неполадок

  1. Убедитесь, что ваш проект нацелен на .NET 10 или выше. Mellowtel.Win требует net10.0.
  2. Очистите кеш NuGet и восстановите:
StartAsync() требует явного согласия. Вызовите OptIn() после того, как ваш диалог согласия вернет положительный результат, затем вызовите StartAsync(). Для тихого возобновления при последующих запусках используйте StartIfOptedInAsync(), который не выполняется, если пользователь не дал согласие.

Оценочное время выполнения: 10-15 минут. Если вам нужна помощь или у вас есть отзывы, свяжитесь с нами по адресу info@mellowtel.com или присоединяйтесь к нашему сообществу в Discord.