Skip to main content
Integra Mellowtel nella tua applicazione desktop Windows per consentire agli utenti di condividere la loro larghezza di banda internet inutilizzata in cambio di ricompense o funzionalità premium.
Il consenso dell’utente è obbligatorio. L’SDK genera un InvalidOperationException se chiami StartAsync() senza che l’utente abbia effettuato l’opt-in.

Prerequisiti

  • Un account Mellowtel e un ID di integrazione dal dashboard. Ogni app desktop riceve un ID di integrazione unico.
  • .NET 10 SDK
  • Windows 10 o Windows 11
  • Un’applicazione desktop .NET (Console, WPF o Windows Forms)
Vuoi vedere un’integrazione completa e reale prima di integrarla nella tua app? Il campione WPF mellowtel-pomodoro-windows mostra l’intero flusso dall’inizio alla fine: dialogo di consenso, attivazione delle impostazioni e ciclo di vita in background.

Installazione

Mellowtel per Windows è disponibile su NuGet come Mellowtel.Win.

1. Installa il pacchetto

Dalla directory del tuo progetto:
Oppure aggiungi un PackageReference al tuo .csproj:

2. Aggiungi al tuo codice

Sostituisci YOUR_INTEGRATION_ID con l’ID di integrazione dal tuo dashboard Mellowtel e imposta PluginId su un identificatore stabile per la tua app. ShowConsentDialog() è la tua UI personalizzata che restituisce true solo quando l’utente accetta esplicitamente. Vedi Consenso dell’utente qui sotto.

Opzioni di configurazione

MellowtelOptions ti consente di regolare alcune cose:
ProprietàTipoPredefinitoDescrizione
PluginIdstring"mellowtel-win"Identificatore stabile per la tua app. Impostalo su qualcosa di unico.
MaxDailyRateintPredefinito integratoNumero massimo di richieste che l’SDK gestirà al giorno.
DisableLogsbooltrueImposta su false per abilitare i log dell’SDK durante lo sviluppo.

Esempi per tipo di applicazione

Osservare lo stato della connessione

L’istanza Mellowtel espone un evento ConnectionStateChanged che si attiva ogni volta che il WebSocket sottostante al backend di Mellowtel si connette o si disconnette. Gli esempi WPF e Windows Forms sopra si iscrivono a questo evento per gestire un indicatore di stato. Il payload è un bool dove true significa connesso e false significa disconnesso. L’evento si attiva su un thread in background, quindi i framework UI che applicano l’affinità del thread devono trasferire gli aggiornamenti sul thread UI. In WPF usa Dispatcher.Invoke, e in Windows Forms usa Control.Invoke (entrambi mostrati negli esempi sopra).
A proposito del pattern WPF async void OnClosing. L’esempio WPF sopra utilizza protected override async void OnClosing, che è la forma più semplice ma ha un problema sottile: base.OnClosing(e) viene chiamato in modo sincrono mentre StopAsync() è ancora in attesa, quindi la finestra può chiudersi prima che la pulizia sia terminata. Per la maggior parte delle app questo va bene perché il processo termina immediatamente dopo. Se hai bisogno di una chiusura garantita e ordinata (ad esempio, per inviare telemetria), segui il pattern di differimento documentato da Microsoft dove imposti e.Cancel = true, await il tuo lavoro asincrono, e poi chiudi esplicitamente la finestra.

Consenso dell’utente

Mostrare un dialogo di consenso è obbligatorio. L’SDK lo impone: StartAsync() genera un InvalidOperationException se l’utente non ha effettuato l’opt-in.

Cosa deve includere il tuo dialogo di consenso

1

Spiega cosa fa Mellowtel

Usa un linguaggio semplice. Esempio: “Questa app utilizza Mellowtel per condividere la tua larghezza di banda internet inutilizzata. Questo ti permette di [beneficio/funzionalità]. Puoi disattivare in qualsiasi momento nelle impostazioni.”
2

Dai agli utenti una scelta chiara

Includi opzioni distinte per Accettare e Rifiutare.
3

Collega alle politiche

Permetti agli utenti di modificare il loro consenso nelle impostazioni

Per una UI più ricca (ad esempio, mostrando quando l’utente ha effettuato l’opt-in per la prima volta), GetOptInDetails() restituisce lo stato di opt-in insieme ai timestamp di opt-in e opt-out:

Risoluzione dei problemi

  1. Assicurati che il tuo progetto sia destinato a .NET 10 o successivo. Mellowtel.Win richiede net10.0.
  2. Cancella la cache di NuGet e ripristina:
StartAsync() richiede un consenso esplicito. Chiama OptIn() dopo che il tuo dialogo di consenso restituisce un risultato positivo, quindi chiama StartAsync(). Per un ripristino silenzioso nei lanci successivi, usa StartIfOptedInAsync(), che non ha effetto quando l’utente non ha effettuato l’opt-in.

Tempo stimato per completare: 10-15 minuti. Se hai bisogno di aiuto o vuoi inviare feedback, contattaci a info@mellowtel.com o unisciti alla nostra comunità Discord.