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
Importeer de SDK in je Electron-hoofdprocesbestand (meestalmain.ts of main.js), roep optioneel setupMellowtelApp() aan voordat de app klaar is, instantieer Mellowtel met je configuratiesleutel, vraag toestemming aan de gebruiker en roep vervolgens init() aan om de service te starten.
Vervang
YOUR_CONFIGURATION_KEY door de sleutel uit je Mellowtel-dashboard.new Mellowtel(configurationKey, options?)installeert de SDK. De enige beschikbare optie vandaag isdisableLogs, die standaard optruestaat. Zet het opfalsetijdens het integreren zodat je de verbindingsstatus en aanvraagactiviteit in je terminal kunt zien.requestConsent(window, incentive)toont een native Electron-berichtvenster gekoppeld aan deBrowserWindowdie 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 resulteert intrueals de gebruiker accepteert,falseals de gebruiker weigert of de dialoog sluit, enundefinedals toestemming al is gegeven. De SDK bewaart de opt-in beslissing automatisch, dus je hoeft daarna nietoptIn()aan te roepen.init()gooit alleen een fout alsconfigurationKeyleeg is. Als de gebruiker niet heeft ingestemd, logt het en retourneert zonder te starten. Anders verbindt het met Mellowtel zodat het aanvragen kan verwerken. De oproep is niet-blokkerend voor de renderer UI, dus vensters blijven responsief terwijl de verbinding wordt gemaakt.
Optioneel: onverwachte OS-prompts verminderen
De SDK wordt geleverd met een optionele helper,setupMellowtelApp(), die onverwachte OS-prompts (autofill-popups, vertaalbalken, media-overlays, eerste-run-dialogen) tijdens achtergrondverzoeken vermindert.
Deze vlaggen gelden voor het hele Electron-proces, niet alleen voor Mellowtel. Sla de helper over als je product afhankelijk is van native authenticatieprompts of wachtwoordbeheerder UI.
Roep het aan bovenaan je hoofdprocesbestand, voor app.whenReady(), en importeer het naast de standaardexport van mellowtel-electron. Zie de upstream README voor het canonieke gebruik.
Gebruikerstoestemming
Je hebt twee opties voor het afhandelen van toestemming:- Gebruik de ingebouwde native dialoog via
requestConsent(window, incentive). Dit is de snelste weg en is wat de bovenstaande snippet laat zien. Het toont een native Electrondialog.showMessageBoxmet je incentive-tekst als de kop en bewaart de beslissing van de gebruiker automatisch. - 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 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 Algemene Voorwaarden en Privacybeleid.
Laat gebruikers later hun toestemming wijzigen
Mellowtel biedt een ingebouwde instellingen dialoog viashowConsentSettings(window). Het toont 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 opnieuw verbinden met Mellowtel bij opt-in) wanneer de gebruiker schakelt. Koppel het aan een menu-item of instellingsknop in je app zodat gebruikers hun keuze kunnen herzien.
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 biedt de volgende openbare methoden. Ze zijn allemaal 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 zonder te starten als dat niet het geval is. Gooi alleen een fout als de configuratiesleutel leeg is.shutdown(): Promise<void>ruimt SDK-bronnen op wanneer de applicatie sluit. Sluit de verbinding met Mellowtel, geeft geïsoleerde aanvraagvensters vrij 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-toestemmingsdialoog. De SDK behandelt de opt-in / opt-out overgangen intern wanneer de gebruiker hun 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 uitgeschreven 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 nog nooit een keuze heeft gemaakt.getNodeId(): stringretourneert de Mellowtel-knoopidentificatie 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 de eerste aanvraag kan de SDK geïsoleerde, offscreen BrowserWindows behouden voor achtergrondwerk. Deze vensters hebben geen toegang tot de sessie van de gebruiker of de gegevens van je app. Hostapplicaties moetenshutdown() aanroepen wanneer de applicatie daadwerkelijk sluit zodat die werkers worden vrijgegeven.
shutdown():
- Sluit de verbinding met Mellowtel.
- Geeft geïsoleerde aanvraagvensters vrij.
- Wist achtergrondtimers.
- Behoudt de opt-in voorkeur van de gebruiker.
Enkelvenster applicaties
Roepshutdown() aan wanneer het hoofdapplicatievenster sluit:
window-all-closed evenement van Electron. Achtergrondwerkers kunnen voorkomen dat het wordt geactiveerd, dus behandel een expliciete afsluiting (of de hierboven genoemde closed handler van het hoofdvenster) als het signaal om shutdown() aan te roepen.
Systeemvak applicaties
Roepshutdown() niet aan wanneer het venster alleen naar het systeemvak is geminimaliseerd. Roep het aan vanuit de expliciete Afsluitactie:
macOS applicaties
Als de applicatie actief blijft nadat de vensters zijn gesloten, roepshutdown() alleen aan wanneer de gebruiker daadwerkelijk de applicatie afsluit.
Uitschrijven
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
Opt-in wordt opgeslagen in de normale Electron-configuratie van je app (dezelfdeelectron-store locatie als andere app-instellingen):
- 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
- Controleer of 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 geldigeBrowserWindowdie nog open is. - Als je
setupMellowtelApp()gebruikt, controleer of het voorapp.whenReady()wordt aangeroepen, niet erna.
"init() loopt zonder fouten maar er gebeurt niets"
"init() loopt zonder fouten maar er gebeurt niets"
Dit is opzettelijk.
init() retourneert zonder te starten wanneer de gebruiker niet heeft ingestemd. Controleer getOptInStatus() om te bevestigen. Als het undefined of false retourneert, voer dan eerst requestConsent uit. Het bericht “Gebruiker is niet ingestemd” wordt niet afgedrukt wanneer disableLogs op zijn standaard blijft (zie “Geen logs in de terminal” hieronder), dus de terminal geeft je geen signaal in beide gevallen totdat je die vlag omdraait.Geen logs in de terminal
Geen logs in de terminal
De
disableLogs constructoroptie staat standaard op true. Geef { disableLogs: false } als het tweede argument aan de constructor tijdens het integreren om verbindingsstatus en aanvraagactiviteit in je terminal zichtbaar te maken. Dit is ook de snelste manier om een “niet ingestemd” 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-community.