Voraussetzungen
- Ein Mellowtel-Konto und ein Konfigurationsschlüssel (erhalte deinen im Dashboard).
- Eine Electron-Anwendung mit Zugriff auf den Hauptprozess.
Installation
1. Paket installieren
Installiere das Electron SDK von deinem Projektstammverzeichnis aus:2. In deinen Code einfügen
Importiere das SDK in deiner Electron-Hauptprozessdatei (typischerweisemain.ts oder main.js), rufe optional setupMellowtelApp() auf, bevor die App bereit ist, instanziiere Mellowtel mit deinem Konfigurationsschlüssel, fordere die Einwilligung des Benutzers an und rufe dann init() auf, um den Dienst zu starten.
Ersetze
YOUR_CONFIGURATION_KEY durch den Schlüssel aus deinem Mellowtel-Dashboard.new Mellowtel(configurationKey, options?)instanziiert das SDK. Die einzige heute verfügbare Option istdisableLogs, die standardmäßig auftruegesetzt ist. Setze sie auffalse, während du integrierst, damit du den Verbindungsstatus und die Anforderungsaktivität in deinem Terminal sehen kannst.requestConsent(window, incentive)rendert eine native Electron-Nachricht verankert an das übergebeneBrowserWindow. Das zweite Argument ist die prominente Überschrift des Dialogs (zum Beispiel,"Erhalte 3 Monate kostenlos"), die über einer festen Erklärung dessen, was Mellowtel tut, angezeigt wird. Es wirdtruezurückgegeben, wenn der Benutzer akzeptiert,false, wenn der Benutzer ablehnt oder den Dialog schließt, undundefined, wenn bereits eine Einwilligung vorliegt. Das SDK speichert die Opt-in-Entscheidung automatisch, sodass du danach nichtoptIn()aufrufen musst.init()wirft nur, wennconfigurationKeyleer ist. Wenn der Benutzer nicht zugestimmt hat, wird protokolliert und ohne Start zurückgegeben. Andernfalls verbindet es sich mit Mellowtel, damit es Anfragen verarbeiten kann. Der Aufruf blockiert nicht die Renderer-UI, sodass Fenster reaktionsfähig bleiben, während die Verbindung hergestellt wird.
Optional: unerwartete OS-Aufforderungen reduzieren
Das SDK wird mit einem optionalen Helfer geliefert,setupMellowtelApp(), der unerwartete OS-Aufforderungen (Autofill-Popups, Übersetzungsleisten, Medienüberlagerungen, Erstdialoge) während der Hintergrundanforderungsarbeit reduziert.
Diese Flags gelten für den gesamten Electron-Prozess, nicht nur für Mellowtel. Überspringe den Helfer, wenn dein Produkt auf native Auth-Aufforderungen oder Passwort-Manager-UI angewiesen ist.
Rufe es am Anfang deiner Hauptprozessdatei auf, bevor app.whenReady(), und importiere es zusammen mit dem Standardexport von mellowtel-electron. Siehe das upstream README für die kanonische Verwendung.
Benutzereinwilligung
Du hast zwei Möglichkeiten, um mit der Einwilligung umzugehen:- Verwende den eingebauten nativen Dialog über
requestConsent(window, incentive). Dies ist der schnellste Weg und wird im obigen Snippet gezeigt. Es rendert ein natives Electrondialog.showMessageBoxmit deinem Anreiztext als Überschrift und speichert die Entscheidung des Benutzers automatisch. - Erstelle deine eigene Einwilligungs-UI und steuere das SDK über
optIn(),optOut()undgetOptInStatus(). Verwende dies, wenn du benutzerdefiniertes Branding, reichhaltigere Erklärungen oder Lokalisierung über das hinaus möchtest, was der native Dialog bietet.
Was dein Einwilligungsdialog enthalten muss
1
Erkläre, was Mellowtel tut
Verwende einfache Sprache. Beispiel: “Diese App verwendet Mellowtel, um deine ungenutzte Internetbandbreite zu teilen. Im Gegenzug erhältst du [Vorteil/Funktion]. Du kannst jederzeit in den Einstellungen abmelden.”
2
Gib den Benutzern eine klare Wahl
Füge deutliche Optionen zum Akzeptieren und Ablehnen hinzu.
3
Verlinke zu Richtlinien
Füge Links zu den Nutzungsbedingungen und zur Datenschutzrichtlinie hinzu.
Ermögliche Benutzern, ihre Einwilligung später zu ändern
Mellowtel bietet einen eingebauten Einstellungsdialog übershowConsentSettings(window). Es rendert einen nativen Dialog mit Opt-in/Opt-out-Buttons, die dem aktuellen Status des Benutzers entsprechen, und ruft intern optIn() oder optOut() auf (plus erneute Verbindung zu Mellowtel bei Opt-in), wenn der Benutzer umschaltet. Verknüpfe es mit einem Menüpunkt oder Einstellungsbutton in deiner App, damit Benutzer ihre Wahl erneut überprüfen können.
Wenn du lieber deinen eigenen Einstellungsbildschirm erstellen möchtest, rufe getOptInStatus() auf, um den aktuellen Status zu lesen, und optIn() / optOut(), um ihn zu ändern.
Methodenreferenz
DieMellowtel-Klasse bietet die folgenden öffentlichen Methoden. Alle sind auf der Instanz verfügbar, die du mit new Mellowtel(configurationKey, options?) erstellt hast.
Lebenszyklus
init(): Promise<void>startet den Dienst, wenn der Benutzer zugestimmt hat, oder gibt ohne Start zurück, wenn nicht. Wirft nur, wenn der Konfigurationsschlüssel leer ist.shutdown(): Promise<void>bereinigt SDK-Ressourcen, wenn die Anwendung geschlossen wird. Schließt die Verbindung zu Mellowtel, gibt isolierte Anforderungsfenster frei und löscht Hintergrundtimer. Bewahrt die Opt-in-Präferenz des Benutzers.requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined>zeigt den eingebauten nativen Einwilligungsdialog an und speichert das Ergebnis. Gibttruebei Zustimmung,falsebei Ablehnung oder Schließen zurück,undefined, wenn bereits eine Einwilligung vorliegt.showConsentSettings(window: BrowserWindow): Promise<void>zeigt den eingebauten Einwilligungsverwaltungsdialog an. Das SDK verwaltet die Opt-in/Opt-out-Übergänge intern, wenn der Benutzer seine Wahl umschaltet.
optIn(): Promise<void>markiert den Benutzer als zugestimmt, ohne einen Dialog anzuzeigen. Verwende dies nur, nachdem du die Einwilligung über deine eigene UI eingeholt hast.optOut(): Promise<void>markiert den Benutzer als abgemeldet und führt eine vollständige Bereinigung durch (gleiche Ressourcen wieshutdown(), plus Löschen der gespeicherten Einwilligungspräferenz). Es ist nicht erforderlich,shutdown()danach aufzurufen.getOptInStatus(): boolean | undefinedgibt den aktuellen Opt-in-Status zurück, oderundefined, wenn der Benutzer noch keine Wahl getroffen hat.getNodeId(): stringgibt die Mellowtel-Knotenkennung für diese Installation zurück. Nützlich beim Einreichen von Support-Tickets.
electron-store gespeichert und überstehen App-Neustarts. Zeige sie in deiner eigenen UI an, wenn du den Benutzern die Auswirkungen ihrer Zustimmung zeigen möchtest.
getTotalRequestCount(): numbergibt die Gesamtanzahl der seit der Installation verarbeiteten Anfragen zurück.getDailyRequestCount(): numbergibt die Anzahl der heute verarbeiteten Anfragen zurück.getRequestCountForDate(date: string): numbergibt die Anzahl für ein bestimmtesYYYY-MM-DD-Datum zurück.getDailyRequestsHistory(): { [date: string]: number }gibt jede tägliche Zählung als Karte zurück.getRequestCountsInRange(startDate: string, endDate: string): { [date: string]: number }gibt Zählungen für einen Datumsbereich zurück.getRequestCounts(): { total: number; daily: number; dailyHistory: { [date: string]: number } }gibt alle drei Zähler in einem Aufruf zurück.
Lebenszyklus und App-Schließung
Nach der ersten Anfrage kann das SDK isolierte, unsichtbare BrowserWindows für Hintergrundarbeiten behalten. Diese Fenster haben keinen Zugriff auf die Benutzersitzung oder die Daten deiner App. Hostanwendungen müssenshutdown() aufrufen, wenn die Anwendung tatsächlich geschlossen wird, damit diese Arbeiter freigegeben werden.
shutdown():
- Schließt die Verbindung zu Mellowtel.
- Gibt isolierte Anforderungsfenster frei.
- Löscht Hintergrundtimer.
- Bewahrt die Opt-in-Präferenz des Benutzers.
Einzel-Fenster-Anwendungen
Rufeshutdown() auf, wenn das Hauptanwendungsfenster geschlossen wird:
window-all-closed-Ereignis von Electron. Hintergrundarbeiter können verhindern, dass es ausgelöst wird, daher behandle ein explizites Beenden (oder den oben genannten closed-Handler des Hauptfensters) als Signal, shutdown() aufzurufen.
Tray-Anwendungen
Rufeshutdown() nicht auf, wenn das Fenster nur in das System-Tray minimiert wird. Rufe es aus der expliziten Beenden-Aktion auf:
macOS-Anwendungen
Wenn die Anwendung aktiv bleibt, nachdem ihre Fenster geschlossen wurden, rufeshutdown() nur auf, wenn der Benutzer die Anwendung tatsächlich beendet.
Abmelden
optOut() führt bereits eine vollständige Bereinigung durch:
shutdown() danach aufzurufen. Im Gegensatz zu shutdown() ändert optOut() auch die gespeicherte Einwilligungspräferenz.
Erneut starten
Nachshutdown() oder optOut() kann Mellowtel erneut gestartet werden:
Einwilligungsspeicherung
Opt-in wird in der normalen Electron-Konfiguration deiner App gespeichert (derselbeelectron-store-Speicherort wie andere App-Einstellungen):
- macOS:
~/Library/Application Support/<YourAppName>/config.json - Windows:
%APPDATA%\<YourAppName>\config.json - Linux:
~/.config/<YourAppName>/config.json
Fehlerbehebung
"Paket nicht gefunden" Fehler während der Installation
"Paket nicht gefunden" Fehler während der Installation
- Stelle sicher, dass du
mellowtel-electroninstallierst (nicht einen gescoped GitHub Packages-Namen). - Leere den npm-Cache und versuche es erneut, indem du
npm cache clean --forcegefolgt vonnpm install mellowtel-electronausführst.
Der Einwilligungsdialog erscheint nie
Der Einwilligungsdialog erscheint nie
- Stelle sicher, dass du
requestConsentnachdemapp.whenReady()aufgelöst wurde und mit einem gültigenBrowserWindow, das noch offen ist, aufrufst. - Wenn du
setupMellowtelApp()verwendest, verifiziere, dass es vorapp.whenReady()aufgerufen wird, nicht danach.
"init() läuft ohne Fehler, aber nichts passiert"
"init() läuft ohne Fehler, aber nichts passiert"
Dies ist beabsichtigt.
init() gibt ohne Start zurück, wenn der Benutzer nicht zugestimmt hat. Überprüfe getOptInStatus(), um dies zu bestätigen. Wenn es undefined oder false zurückgibt, führe zuerst requestConsent aus. Die Nachricht “Benutzer ist nicht zugestimmt” wird nicht gedruckt, wenn disableLogs auf seinem Standardwert belassen wird (siehe “Keine Protokolle im Terminal” unten), sodass das Terminal dir kein Signal gibt, bis du dieses Flag umschaltest.Keine Protokolle im Terminal
Keine Protokolle im Terminal
Die
disableLogs-Konstruktoroption ist standardmäßig auf true gesetzt. Übergebe { disableLogs: false } als zweites Argument an den Konstruktor, während du integrierst, um Verbindungsstatus und Anforderungsaktivität in deinem Terminal sichtbar zu machen. Dies ist auch der schnellste Weg, um eine “nicht zugestimmt” No-Op (siehe oben) von einem echten Verbindungsfehler zu unterscheiden.Geschätzte Zeit zur Fertigstellung: 10-15 Minuten. Wenn du Hilfe benötigst oder Feedback hast, kontaktiere uns unter info@mellowtel.com oder trete unserer Discord-Community bei.