Skip to main content
Integra Mellowtel en tu aplicación de escritorio Windows para permitir que los usuarios compartan su ancho de banda de internet no utilizado a cambio de recompensas o funciones premium.
El consentimiento del usuario es obligatorio. El SDK lanza una InvalidOperationException si llamas a StartAsync() sin que el usuario haya optado por participar.

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.
  • .NET 10 SDK
  • 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, alternar configuraciones y ciclo de vida en segundo plano.

Instalación

Mellowtel para Windows se distribuye en NuGet como Mellowtel.Win.

1. Instala el Paquete

Desde el directorio de tu proyecto:
O añade un 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 configura PluginId a un identificador estable para tu aplicación. ShowConsentDialog() es tu propia interfaz 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:
PropiedadTipoPredeterminadoDescripción
PluginIdstring"mellowtel-win"Identificador estable para tu aplicación. Establece esto en algo único.
MaxDailyRateintPredeterminado incorporadoMáximo de solicitudes que el SDK manejará por día.
DisableLogsbooltrueEstablece en false para habilitar los registros del SDK durante el desarrollo.

Ejemplos por Tipo de Aplicación

Observando el estado de la conexión

La instancia de Mellowtel 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 en segundo plano, por lo que los marcos de UI que imponen afinidad de hilo deben transferir las actualizaciones al hilo de UI. En WPF usa Dispatcher.Invoke, y en Windows Forms usa Control.Invoke (ambos mostrados en los ejemplos anteriores).
Sobre el patrón WPF async void OnClosing. 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 de manera sincrónica mientras StopAsync() aún está 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 ordenado (por ejemplo, para enviar telemetría), sigue el patrón de aplazamiento documentado por Microsoft donde configuras e.Cancel = true, await tu trabajo asincrónico, y luego cierras la ventana explícitamente.

Consentimiento del Usuario

Mostrar un diálogo de consentimiento es obligatorio. El SDK lo impone: StartAsync() lanza una InvalidOperationException si el usuario no ha optado por participar.

Qué debe incluir tu diálogo de consentimiento

1

Explica qué hace Mellowtel

Usa un lenguaje sencillo. Ejemplo: “Esta aplicación utiliza 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.”
2

Da a los usuarios una opción clara

Incluye opciones distintas de Aceptar y Rechazar.
3

Enlaza a las políticas

Permitir que los usuarios cambien su consentimiento en la configuración

Para una interfaz más rica (por ejemplo, mostrar cuándo el usuario optó por participar por primera vez), GetOptInDetails() devuelve el estado de opt-in junto con las marcas de tiempo de opt-in y opt-out:

Solución de Problemas

  1. Asegúrate de que tu proyecto apunte a .NET 10 o posterior. Mellowtel.Win requiere net10.0.
  2. Limpia la caché de NuGet y restaura:
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 optado por participar.

Tiempo estimado para completar: 10-15 minutos. Si necesitas ayuda o tienes comentarios, contáctanos en info@mellowtel.com o únete a nuestra comunidad en Discord.