Vereisten
- Een Mellowtel-account en configuratiesleutel (verkrijg deze via het dashboard).
- Een Electron-applicatie met toegang tot het hoofdproces.
Installatie
1. Installeer het pakket
Installeer de Electron SDK vanuit de root van je project:2. Voeg toe aan je code
In je Electron-hoofdprocesbestand (meestalmain.ts of main.js), importeer de SDK, roep optioneel setupMellowtelApp() aan voordat de app klaar is, installeer Mellowtel met je configuratiesleutel, vraag toestemming van de gebruiker en roep vervolgens init() aan om de service te starten.
Vervang
YOUR_CONFIGURATION_KEY door de sleutel van je Mellowtel-dashboard.new Mellowtel(configurationKey, options?)installeert de SDK. De enige beschikbare optie vandaag isdisableLogs, die standaard optruestaat. Zet het opfalsetijdens de integratie zodat je de verbindingsstatus en aanvraagactiviteit in je terminal kunt zien.requestConsent(window, incentive)rendert een native Electron-berichtvenster gekoppeld aan deBrowserWindowdie je doorgeeft. Het tweede argument is de prominente kop van de dialoog (bijvoorbeeld,"3 maanden gratis"), getoond boven een vaste uitleg van wat Mellowtel doet. Het lost op naartrueals de gebruiker accepteert,falseals de gebruiker weigert of de dialoog sluit, enundefinedals toestemming al op bestand is. De SDK bewaart automatisch de opt-in beslissing, dus je hoeft nietoptIn()daarna aan te roepen.init()gooit alleen een fout wanneerconfigurationKeyleeg is. Als de gebruiker niet heeft ingestemd, logt het en retourneert het stilletjes. Anders opent het een WebSocket naar Mellowtel’s backend. De oproep is niet-blokkerend voor 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 systeemdialogen te onderdrukken (autofill pop-ups, vertaalbalken, NTLM / Kerberos auth prompts, wachtwoordbeheerintegratie, media-overlays, eerste-run dialogen) die anders je gebruikers zouden onderbreken wanneer Mellowtel’s verborgen vensterprocessen verzoeken op de achtergrond verwerken.
Roep het aan bovenaan je hoofdprocesbestand, voor app.whenReady(), en importeer het samen met de standaardexport van mellowtel-electron. Zie de upstream README voor het canonieke gebruik.
Gebruikerstoestemming
Je hebt twee wegen voor het afhandelen van toestemming:- Gebruik de ingebouwde native dialoog via
requestConsent(window, incentive). Dit is de snelste weg en is wat de snippet hierboven laat zien. Het rendert een native Electrondialog.showMessageBoxmet je incentive-tekst als de kop en bewaart automatisch de beslissing van de gebruiker. - Bouw je eigen toestemmings-UI en stuur de SDK aan via
optIn(),optOut(), engetOptInStatus(). 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 afmelden in de instellingen.”
2
Geef gebruikers een duidelijke keuze
Voeg duidelijke Accepteer en Weiger opties toe.
3
Link naar beleid
Voeg links toe naar de Servicevoorwaarden en Privacybeleid.
Laat gebruikers later hun toestemming wijzigen
Mellowtel biedt een ingebouwde instellingen dialoog viashowConsentSettings(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 opnieuw kunnen bekijken.
Als je liever je eigen instellingen scherm bouwt, roep getOptInStatus() aan om de huidige status te lezen en optIn() / optOut() om deze te wijzigen.
Methode Referentie
DeMellowtel klasse stelt de volgende openbare methoden bloot. Alle zijn beschikbaar op de instantie die je hebt gemaakt met new Mellowtel(configurationKey, options?).
Levenscyclus
init(): Promise<void>start de service als de gebruiker heeft ingestemd, of retourneert stilletjes vroegtijdig als dat niet het geval is. Gooit alleen een fout wanneer de configuratiesleutel leeg is.shutdown(): Promise<void>ruimt SDK-bronnen op wanneer de applicatie sluit. Sluit de WebSocket, vernietigt verborgen werkervensters en wist achtergrondtimers. Behoudt de opt-in voorkeur van de gebruiker.requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined>toont de ingebouwde native toestemmingsdialoog en bewaart het resultaat. Retourneerttruebij acceptatie,falsebij weigering of sluiten,undefinedals toestemming al was gegeven.showConsentSettings(window: BrowserWindow): Promise<void>toont de ingebouwde beheer-toestemming dialoog. De SDK behandelt de opt-in / opt-out overgangen intern wanneer de gebruiker zijn keuze wijzigt.
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 afgemeld en voert volledige opruiming uit (dezelfde bronnen alsshutdown(), plus het wissen van de opgeslagen toestemmingsvoorkeur). Er is geen noodzaak omshutdown()daarna aan te roepen.getOptInStatus(): boolean | undefinedretourneert de huidige opt-in status, ofundefinedals de gebruiker nooit een keuze heeft gemaakt.getNodeId(): stringretourneert de Mellowtel knooppuntidentificatie voor deze installatie. Handig bij het indienen van supporttickets.
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(): numberretourneert het totale aantal verwerkte aanvragen sinds installatie.getDailyRequestCount(): numberretourneert het aantal verwerkte aanvragen vandaag.getRequestCountForDate(date: string): numberretourneert het aantal voor een specifiekeYYYY-MM-DDdatum.getDailyRequestsHistory(): { [date: string]: number }retourneert elke dagelijkse telling als een map.getRequestCountsInRange(startDate: string, endDate: string): { [date: string]: number }retourneert tellingen voor een datumbereik.getRequestCounts(): { total: number; daily: number; dailyHistory: { [date: string]: number } }retourneert alle drie de counters in één oproep.
Levenscyclus en app-afsluiting
Na het verwerken van zijn eerste aanvraag kan Mellowtel verborgen Electron werkervensters creëren. Hostapplicaties moetenshutdown() aanroepen wanneer de applicatie daadwerkelijk sluit.
shutdown():
- Sluit de WebSocket-verbinding.
- Vernietigt verborgen werkervensters.
- Wist achtergrondtimers en netwerkbronnen.
- Behoudt de opt-in voorkeur van de gebruiker.
Enkel-venster applicaties
Roepshutdown() aan wanneer het hoofdapplicatievenster sluit:
window-all-closed evenement omdat Mellowtel’s verborgen werkervensters kunnen voorkomen dat het wordt geactiveerd.
Systeemvak applicaties
Roepshutdown() niet aan wanneer je het venster alleen naar het systeemvak verbergt. Roep het aan vanuit de expliciete Afsluiten-actie:
macOS applicaties
Als de applicatie actief blijft nadat de vensters zijn gesloten, roepshutdown() alleen aan wanneer de gebruiker de applicatie daadwerkelijk afsluit.
Afmelden
optOut() voert al volledige opruiming uit:
shutdown() daarna aan te roepen. In tegenstelling tot shutdown(), verandert optOut() ook de opgeslagen toestemmingsvoorkeur.
Opnieuw starten
Nashutdown() of optOut(), kan Mellowtel opnieuw worden gestart:
Toestemming Persistentie
De opt-in status wordt opgeslagen in het platform-standaardelectron-store configuratiepad:
- macOS:
~/Library/Application Support/<YourAppName>/config.json - Windows:
%APPDATA%\<YourAppName>\config.json - Linux:
~/.config/<YourAppName>/config.json
Probleemoplossing
"Pakket niet gevonden" fout tijdens installatie
"Pakket niet gevonden" fout tijdens installatie
- Bevestig dat je
mellowtel-electroninstalleert (niet een gescopeerde GitHub Packages naam). - Wis de npm-cache en probeer opnieuw door
npm cache clean --forcete draaien gevolgd doornpm install mellowtel-electron.
De toestemmingsdialoog verschijnt nooit
De toestemmingsdialoog verschijnt nooit
- Zorg ervoor dat je
requestConsentnaapp.whenReady()aanroept en met een geldige, niet-vernietigdeBrowserWindowreferentie. - Als je
setupMellowtelApp()gebruikt, controleer dan of het voorapp.whenReady()wordt aangeroepen, niet erna.
"init() draait zonder fouten maar er gebeurt niets"
"init() draait zonder fouten maar er gebeurt niets"
Dit is met opzet.
init() retourneert stilletjes vroegtijdig wanneer de gebruiker niet heeft ingestemd. Controleer getOptInStatus() om te bevestigen. Als het undefined of false retourneert, voer dan eerst requestConsent uit. Merk op dat de interne “User is not opted in” 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.Logs zijn stil
Logs zijn stil
De
disableLogs constructoroptie staat standaard op true. Geef { disableLogs: false } als het tweede argument aan de constructor tijdens de integratie om de verbindingsstatus en aanvraagactiviteit 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 contact met ons op via info@mellowtel.com of sluit je aan bij onze Discord-gemeenschap.