Интегрируйте Mellowtel в ваше настольное приложение для Windows, чтобы пользователи могли делиться неиспользуемой пропускной способностью интернета в обмен на вознаграждения или премиум-функции.Documentation Index
Fetch the complete documentation index at: https://docs.mellowtel.com/llms.txt
Use this file to discover all available pages before exploring further.
Предварительные требования
- Аккаунт Mellowtel и Integration ID из панели управления. Каждое настольное приложение получает свой уникальный Integration ID.
- .NET 10 SDK
- Windows 10 или Windows 11
- .NET настольное приложение (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 позволяет настроить несколько параметров:
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
PluginId | string | "mellowtel-win" | Стабильный идентификатор вашего приложения. Установите уникальное значение. |
MaxDailyRate | int | Встроенное значение по умолчанию | Максимальное количество запросов, которые SDK будет обрабатывать в день. |
DisableLogs | bool | true | Установите false, чтобы включить логи SDK во время разработки. |
Примеры по типу приложения
- Консольное приложение
- WPF приложение
- Windows Forms
Наблюдение за состоянием подключения
Экземпляр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 для вашей асинхронной работы, а затем закрываете окно явно.Согласие пользователя
Что должно включать ваше диалоговое окно согласия
Объясните, что делает Mellowtel
Используйте простой язык. Пример: “Это приложение использует Mellowtel для обмена вашей неиспользуемой пропускной способностью интернета. Это позволяет вам [выгода/функция]. Вы можете отказаться в любое время в настройках.”
Ссылка на политики
Включите ссылки на Условия использования и Политику конфиденциальности.
Позвольте пользователям изменить свое согласие в настройках
GetOptInDetails() возвращает статус согласия вместе с метками времени согласия и отказа:
Устранение неполадок
Ошибка "Пакет не найден"
Ошибка "Пакет не найден"
- Убедитесь, что ваш проект нацелен на .NET 10 или более позднюю версию.
Mellowtel.Winтребуетnet10.0. - Очистите кеш NuGet и восстановите:
Ошибка "InvalidOperationException: Пользователь не дал согласие"
Ошибка "InvalidOperationException: Пользователь не дал согласие"
StartAsync() требует явного согласия. Вызовите OptIn() после того, как ваш диалог согласия вернет положительный результат, затем вызовите StartAsync(). Для тихого возобновления при последующих запусках используйте StartIfOptedInAsync(), который не выполняется, если пользователь не дал согласие.Оценочное время выполнения: 10-15 минут. Если вам нужна помощь или у вас есть отзывы, свяжитесь с нами по адресу info@mellowtel.com или присоединяйтесь к нашему сообществу в Discord.