Skip to main content

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.

Integreer Mellowtel in je cross-platform Electron-applicatie om gebruikers hun ongebruikte internetbandbreedte te laten delen in ruil voor beloningen of premium functies. De Electron SDK werkt overal waar Electron werkt (macOS, Windows en Linux).
Gebruikersinstemming is verplicht. De SDK werkt alleen wanneer de gebruiker expliciet heeft ingestemd. init() keert stilletjes vroegtijdig terug wanneer er geen instemming is vastgelegd, dus als je ziet dat de SDK zonder fouten start maar nooit verkeer verzendt, is de meest waarschijnlijke reden dat de gebruiker nog niet heeft ingestemd.

Vereisten

  • Een Mellowtel-account en configuratiesleutel (verkrijg deze via het dashboard).
  • Een Electron-applicatie met toegang tot het hoofdproces.

Installatie

1. Configureer npm Authenticatie

Maak een .npmrc bestand in de hoofdmap van je project om npm naar het Mellowtel GitHub Packages-register te wijzen en de installatie te verifiëren:
@mellowtel-inc:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=YOUR_NPM_TOKEN
Vervang YOUR_NPM_TOKEN door de installatietoken hieronder. Klik om te onthullen en gebruik het kopieericoon op het codeblok om het naar je klembord te kopiëren.
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

2. Installeer het Pakket

Installeer de Electron SDK vanuit de hoofdmap van je project:
npm install @mellowtel-inc/mellowtel-electron

3. Voeg toe aan je Code

Importeer de SDK in je Electron-hoofdprocesbestand (meestal main.ts of main.js), installeer het met je configuratiesleutel, vraag toestemming aan de gebruiker en roep vervolgens init() aan om de service te starten.
import { app, BrowserWindow } from 'electron';
import Mellowtel from '@mellowtel-inc/mellowtel-electron';


// Wanneer de app klaar is, maak het venster aan
app.whenReady().then(async () => {
  let win = createWindow();
  
  const mellowtel: Mellowtel = new Mellowtel('YOUR_CONFIGURATION_KEY');

  await mellowtel.requestConsent(win, "Krijg 3 maanden gratis")
  await mellowtel.init()
});
Vervang YOUR_CONFIGURATION_KEY door de sleutel van je Mellowtel-dashboard.
Wat elke oproep doet:
  • new Mellowtel(configurationKey, options?) installeert de SDK. De enige beschikbare optie vandaag is disableLogs, die standaard op true staat. Zet het op false tijdens de integratie zodat je de verbindingsstatus en verzoekactiviteit in je terminal kunt zien.
  • requestConsent(window, incentive) rendert een native Electron-berichtvenster gekoppeld aan het BrowserWindow dat je doorgeeft. Het tweede argument is de prominente kop van de dialoog (bijvoorbeeld, "Krijg 3 maanden gratis"), weergegeven boven een vaste uitleg van wat Mellowtel doet. Het lost op naar true als de gebruiker accepteert, false als de gebruiker weigert of de dialoog sluit, en undefined als toestemming al is vastgelegd. De SDK slaat de opt-in beslissing automatisch op, dus je hoeft daarna niet optIn() aan te roepen.
  • init() gooit alleen een fout wanneer configurationKey leeg is. Als de gebruiker niet heeft ingestemd, logt het en keert het stilletjes terug. Anders opent het een WebSocket naar Mellowtel’s backend. De oproep is niet-blokkerend voor de renderer UI, dus vensters blijven responsief terwijl de verbinding wordt opgezet.

Voorkomen van systeemdialoogonderbrekingen (aanbevolen)

De SDK wordt geleverd met een optionele helper, setupMellowtelApp(), die Electron command-line vlaggen configureert om systeemdialoogvensters (autofill pop-ups, vertaalbalken, NTLM / Kerberos auth prompts, wachtwoordbeheerintegratie, media-overlays, eerste-run dialoogvensters) te onderdrukken die anders je gebruikers zouden onderbreken wanneer Mellowtel’s verborgen vensters verzoeken verwerken op de achtergrond. Roep het aan bovenaan je hoofdprocesbestand, voor app.whenReady(), en importeer het samen met de standaardexport van @mellowtel-inc/mellowtel-electron. Zie de upstream README voor het canonieke gebruik.

Gebruikersinstemming

Het weergeven van een toestemmingsdialoog is verplicht. Je moet gebruikers expliciet laten instemmen voordat je init() aanroept, en je moet een manier bieden voor hen om hun opt-in status op elk moment te beheren.
Je hebt twee paden voor het afhandelen van toestemming:
  1. Gebruik de ingebouwde native dialoog via requestConsent(window, incentive). Dit is het snelste pad en is wat het bovenstaande fragment laat zien. Het rendert een native Electron dialog.showMessageBox met je incentive tekst als de kop en slaat de beslissing van de gebruiker automatisch op.
  2. Bouw je eigen toestemmings-UI en stuur de SDK aan via optIn(), optOut(), en getOptInStatus(). Gebruik dit als je aangepaste branding, rijkere uitleg of lokalisatie wilt die verder gaat dan wat de native dialoog biedt.

Wat je toestemmingsdialoog moet bevatten

1

Leg uit wat Mellowtel doet

Gebruik eenvoudige taal. Voorbeeld: “Deze app gebruikt Mellowtel om je ongebruikte internetbandbreedte te delen. In ruil daarvoor krijg je [voordeel/functie]. Je kunt op elk moment uitschrijven in de instellingen.”
2

Geef gebruikers een duidelijke keuze

Voeg duidelijke opties voor Accepteren en Weigeren toe.
3

Link naar beleidsregels

Voeg links toe naar de Servicevoorwaarden en Privacybeleid.

Laat gebruikers later hun toestemming wijzigen

Mellowtel biedt een ingebouwde instellingen dialoog via showConsentSettings(window). Het rendert een native dialoog met Opt In / Opt Out knoppen die overeenkomen met de huidige status van de gebruiker, en roept intern optIn() of optOut() aan (plus het opnieuw verbinden van de WebSocket bij opt-in) wanneer de gebruiker schakelt. Koppel het aan een menu-item of instellingenknop in je app zodat gebruikers hun keuze kunnen herzien. Als je liever je eigen instellingen scherm bouwt, roep dan getOptInStatus() aan om de huidige status te lezen en optIn() / optOut() om deze te wijzigen.

Methode Referentie

De Mellowtel klasse biedt de volgende openbare methoden. Allemaal zijn beschikbaar op het exemplaar dat je hebt gemaakt met new Mellowtel(configurationKey, options?). Levenscyclus
  • init(): Promise<void> start de service als de gebruiker heeft ingestemd, of keert stilletjes vroegtijdig terug als dat niet het geval is. Gooit alleen een fout als de configuratiesleutel leeg is.
  • requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined> toont de ingebouwde native toestemmingsdialoog en slaat het resultaat op. Geeft true terug bij acceptatie, false bij weigering of sluiten, undefined als toestemming al was gegeven.
  • showConsentSettings(window: BrowserWindow): Promise<void> toont de ingebouwde beheertoestemmingsdialoog. De SDK behandelt de opt-in / opt-out overgangen intern wanneer de gebruiker zijn keuze wijzigt.
Handmatige opt-in controle
  • optIn(): Promise<void> markeert de gebruiker als ingestemd zonder een dialoog te tonen. Gebruik dit alleen nadat je toestemming hebt verzameld via je eigen UI.
  • optOut(): Promise<void> markeert de gebruiker als uitgeschreven en sluit de actieve WebSocket-verbinding.
  • getOptInStatus(): boolean | undefined geeft de huidige opt-in status terug, of undefined als de gebruiker nog nooit een keuze heeft gemaakt.
  • getNodeId(): string geeft de Mellowtel knooppuntidentificatie voor deze installatie terug. Handig bij het indienen van supporttickets.
Verzoekstellers Verzoekaantallen worden lokaal opgeslagen via electron-store en overleven app-herstarts. Toon ze in je eigen UI als je gebruikers de impact van hun opt-in wilt laten zien.
  • getTotalRequestCount(): number geeft het totale aantal verwerkte verzoeken sinds installatie terug.
  • getDailyRequestCount(): number geeft het aantal vandaag verwerkte verzoeken terug.
  • getRequestCountForDate(date: string): number geeft het aantal voor een specifieke YYYY-MM-DD datum terug.
  • getDailyRequestsHistory(): { [date: string]: number } geeft elke dagelijkse telling als een kaart terug.
  • getRequestCountsInRange(startDate: string, endDate: string): { [date: string]: number } geeft tellingen voor een datumbereik terug.
  • getRequestCounts(): { total: number; daily: number; dailyHistory: { [date: string]: number } } geeft alle drie de tellers in één oproep terug.

Afsluiten en Levenscyclus

De Electron SDK registreert geen eigen before-quit of will-quit handlers. Wanneer je Electron-proces afsluit, wordt de achtergrond WebSocket-verbinding samen met het proces beëindigd, en is er geen expliciete opruiming vereist aan jouw kant. Als je Mellowtel midden in een sessie wilt loskoppelen (bijvoorbeeld wanneer een gebruiker een “pauze” instelling in je app schakelt), roep dan optOut() aan. Dit wist zowel de opt-in vlag als sluit de actieve verbinding. Om opnieuw te verbinden, roep optIn() gevolgd door init() aan.

Toestemming Persistentie

De opt-in status wordt opgeslagen in het platform-standaard electron-store configuratiepad:
  • macOS: ~/Library/Application Support/<YourAppName>/config.json
  • Windows: %APPDATA%\<YourAppName>\config.json
  • Linux: ~/.config/<YourAppName>/config.json
De status overleeft app-updates. Het verwijderen van je app zal het niet automatisch wissen tenzij je uninstaller expliciet de configuratiemap van de app verwijdert.

Probleemoplossing

  1. Controleer of .npmrc in de projectroot staat, naast je package.json.
  2. Zorg ervoor dat de token geen leidende of afsluitende spaties heeft.
  3. Wis de npm-cache en probeer opnieuw door npm cache clean --force te draaien gevolgd door npm install.
  1. Controleer of de token in .npmrc correct en actief is. Als je het niet zeker weet, vraag dan een nieuwe token aan via info@mellowtel.com.
  2. Bevestig dat de @mellowtel-inc:registry regel aanwezig is en wijst naar https://npm.pkg.github.com/.
  1. Zorg ervoor dat je requestConsent na app.whenReady() aanroept en met een geldige, niet-vernietigde BrowserWindow referentie.
  2. Als je setupMellowtelApp() gebruikt, controleer dan of het voor app.whenReady() wordt aangeroepen, niet erna.
Dit is zo ontworpen. init() keert stilletjes vroegtijdig terug wanneer de gebruiker niet heeft ingestemd. Controleer getOptInStatus() om dit te bevestigen. Als het undefined of false teruggeeft, voer dan eerst requestConsent uit. Merk op dat de interne “Gebruiker is niet ingestemd” log wordt onderdrukt wanneer disableLogs op zijn standaard blijft (zie “Logs zijn stil” hieronder), dus de terminal geeft je geen signaal in beide gevallen totdat je die vlag omdraait.
De disableLogs constructoroptie staat standaard op true. Geef { disableLogs: false } als het tweede argument aan de constructor tijdens de integratie om verbindingsstatus en verzoekactiviteit in je terminal te tonen. Dit is ook de snelste manier om een “niet ingestemd” stille no-op (zie hierboven) te onderscheiden van een echte verbindingsfout.

Geschatte tijd om te voltooien: 10-15 minuten. Als je hulp nodig hebt of feedback hebt, neem dan contact met ons op via info@mellowtel.com of sluit je aan bij onze Discord-gemeenschap.