Integra Mellowtel en tu aplicación de escritorio Windows para permitir a los usuarios compartir su ancho de banda de internet no utilizado a cambio de recompensas o funciones premium.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.
Requisitos previos
- Una cuenta de Mellowtel y ID de Integración desde el panel de control. Cada aplicación de escritorio obtiene su propio ID de Integración único.
- SDK de .NET 10
- Windows 10 o Windows 11
- Una aplicación de escritorio .NET (Consola, WPF o Windows Forms)
¿Quieres ver una integración completa y real antes de integrarlo en tu propia aplicación? El ejemplo WPF mellowtel-pomodoro-windows muestra el flujo completo de principio a fin: diálogo de consentimiento, alternancia de configuración y ciclo de vida en segundo plano.
Instalación
Mellowtel para Windows se distribuye en NuGet comoMellowtel.Win.
1. Instala el paquete
Desde el directorio de tu proyecto:PackageReference a tu .csproj:
2. Añade a tu código
Reemplaza
YOUR_INTEGRATION_ID con el ID de Integración de tu panel de Mellowtel, y establece PluginId en un identificador estable para tu aplicación. ShowConsentDialog() es tu propia UI que devuelve true solo cuando el usuario acepta explícitamente. Consulta Consentimiento del Usuario a continuación.Opciones de configuración
MellowtelOptions te permite ajustar algunas cosas:
| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
PluginId | string | "mellowtel-win" | Identificador estable para tu aplicación. Establece esto en algo único. |
MaxDailyRate | int | Predeterminado incorporado | Máximo de solicitudes que el SDK manejará por día. |
DisableLogs | bool | true | Establece en false para habilitar los registros del SDK durante el desarrollo. |
Ejemplos por tipo de aplicación
- Aplicación de Consola
- Aplicación WPF
- Windows Forms
Observando el estado de la conexión
La instancia deMellowtel expone un evento ConnectionStateChanged que se dispara cada vez que el WebSocket subyacente al backend de Mellowtel se conecta o desconecta. Los ejemplos de WPF y Windows Forms anteriores se suscriben a él para manejar un indicador de estado. La carga útil es un bool donde true significa conectado y false significa desconectado.
El evento se dispara en un hilo de fondo, por lo que los marcos de UI que aplican afinidad de hilo deben gestionar las actualizaciones en el hilo de UI. En WPF usa Dispatcher.Invoke, y en Windows Forms usa Control.Invoke (ambos mostrados en los ejemplos anteriores).
Acerca del patrón
async void OnClosing de WPF. El ejemplo de WPF anterior usa protected override async void OnClosing, que es la forma más simple pero tiene un problema sutil: base.OnClosing(e) se llama sincrónicamente mientras StopAsync() sigue esperando, por lo que la ventana puede cerrarse antes de que finalice la limpieza. Para la mayoría de las aplicaciones esto está bien porque el proceso sale inmediatamente después. Si necesitas un cierre garantizado y elegante (por ejemplo, para enviar telemetría), sigue el patrón de aplazamiento documentado por Microsoft donde estableces e.Cancel = true, esperas tu trabajo asincrónico y luego cierras la ventana explícitamente.Consentimiento del Usuario
Qué debe incluir tu diálogo de consentimiento
Explica qué hace Mellowtel
Usa un lenguaje sencillo. Ejemplo: “Esta aplicación usa Mellowtel para compartir tu ancho de banda de internet no utilizado. Esto te permite [beneficio/función]. Puedes optar por no participar en cualquier momento en la configuración.”
Enlaza a las políticas
Incluye enlaces a los Términos de Servicio y la Política de Privacidad.
Permitir a los usuarios cambiar su consentimiento en la configuración
GetOptInDetails() devuelve el estado de consentimiento junto con las marcas de tiempo de consentimiento y no consentimiento:
Solución de problemas
Error "Paquete no encontrado"
Error "Paquete no encontrado"
- Asegúrate de que tu proyecto tenga como objetivo .NET 10 o posterior.
Mellowtel.Winrequierenet10.0. - Limpia la caché de NuGet y restaura:
Error "InvalidOperationException: User has not opted in"
Error "InvalidOperationException: User has not opted in"
StartAsync() requiere consentimiento explícito. Llama a OptIn() después de que tu diálogo de consentimiento devuelva un resultado positivo, luego llama a StartAsync(). Para reanudar silenciosamente en lanzamientos posteriores, usa StartIfOptedInAsync() en su lugar, que no hace nada cuando el usuario no ha dado su consentimiento.Tiempo estimado para completar: 10-15 minutos. Si necesitas ayuda o tienes comentarios, contáctanos en info@mellowtel.com o únete a nuestra comunidad de Discord.