Voraussetzungen
- Ein Mellowtel-Konto und ein Konfigurationsschlüssel (erhalte deinen auf dem Dashboard).
- Eine Electron-Anwendung mit Zugriff auf den Hauptprozess.
Installation
1. Paket installieren
Installiere das Electron SDK aus dem Stammverzeichnis deines Projekts: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 derzeit verfügbare Option istdisableLogs, die standardmäßig auftruegesetzt ist. Setze sie auffalse, während du integrierst, damit du den Verbindungsstatus und die Anfragenaktivitä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 die Einwilligung bereits vorliegt. Das SDK speichert die Opt-in-Entscheidung automatisch, sodass du danach nichtoptIn()aufrufen musst.init()wirft nur dann eine Ausnahme, wennconfigurationKeyleer ist. Wenn der Benutzer nicht zugestimmt hat, wird protokolliert und stillschweigend zurückgegeben. Andernfalls wird eine WebSocket-Verbindung zum Backend von Mellowtel geöffnet. Der Aufruf blockiert nicht die Renderer-UI, sodass Fenster reaktionsfähig bleiben, während die Verbindung hergestellt wird.
Verhindern von Systemdialogunterbrechungen (empfohlen)
Das SDK wird mit einem optionalen HelfersetupMellowtelApp() geliefert, der Electron-Kommandozeilenflags konfiguriert, um Systemdialoge (Autofill-Popups, Übersetzungsleisten, NTLM / Kerberos-Authentifizierungsaufforderungen, Passwortmanager-Integration, Medienüberlagerungen, Erstdialoge) zu unterdrücken, die andernfalls deine Benutzer unterbrechen würden, wenn Mellowtels versteckte Fenster im Hintergrund Anfragen verarbeiten.
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 einen nativen Electron-dialog.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 macht
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 der 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 des WebSockets 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 stellt die folgenden öffentlichen Methoden bereit. 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 stillschweigend frühzeitig 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 den WebSocket, zerstört versteckte Arbeitsfenster 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 Akzeptieren,falsebei Ablehnen oder Schließen,undefinedwenn die Einwilligung bereits erteilt wurde, zurück.showConsentSettings(window: BrowserWindow): Promise<void>zeigt den eingebauten Dialog zur Verwaltung der Einwilligung an. Das SDK verwaltet die Opt-In-/Opt-Out-Übergänge intern, wenn der Benutzer seine Wahl ändert.
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, danachshutdown()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 Erstellen 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 insgesamt 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 Verarbeitung seiner ersten Anfrage kann Mellowtel versteckte Electron-Arbeitsfenster erstellen. Hostanwendungen müssenshutdown() aufrufen, wenn die Anwendung tatsächlich geschlossen wird.
shutdown():
- Schließt die WebSocket-Verbindung.
- Zerstört versteckte Arbeitsfenster.
- Löscht Hintergrundtimer und Netzwerkressourcen.
- Bewahrt die Opt-in-Präferenz des Benutzers.
Einzelanwendungsfenster
Rufeshutdown() auf, wenn das Hauptanwendungsfenster geschlossen wird:
window-all-closed-Ereignis von Electron, da Mellowtels versteckte Arbeitsfenster verhindern können, dass es ausgelöst wird.
Tray-Anwendungen
Rufeshutdown() nicht auf, wenn du das Fenster nur in das System-Tray minimierst. Rufe es aus der expliziten Beenden-Aktion auf:
macOS-Anwendungen
Wenn die Anwendung nach dem Schließen ihrer Fenster aktiv bleibt, rufeshutdown() nur auf, wenn der Benutzer die Anwendung tatsächlich beendet.
Abmelden
optOut() führt bereits eine vollständige Bereinigung durch:
shutdown() aufzurufen. Im Gegensatz zu shutdown() ändert optOut() auch die gespeicherte Einwilligungspräferenz.
Erneutes Starten
Nachshutdown() oder optOut() kann Mellowtel erneut gestartet werden:
Einwilligungsspeicherung
Der Opt-in-Status wird im plattformüblichenelectron-store-Konfigurationspfad gespeichert:
- 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 gescopten 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 einer gültigen, nicht zerstörtenBrowserWindow-Referenz aufrufst. - Wenn du
setupMellowtelApp()verwendest, überprüfe, 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 stillschweigend frühzeitig 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. Beachte, dass das interne “Benutzer hat nicht zugestimmt”-Protokoll unterdrückt wird, wenn disableLogs auf seinem Standardwert bleibt (siehe “Protokolle sind still” unten), sodass das Terminal dir kein Signal in die eine oder andere Richtung gibt, bis du dieses Flag umschaltest.Protokolle sind still
Protokolle sind still
Die
disableLogs-Konstruktoroption ist standardmäßig auf true gesetzt. Gib { disableLogs: false } als zweites Argument an den Konstruktor weiter, während du integrierst, um den Verbindungsstatus und die Anfragenaktivität in deinem Terminal sichtbar zu machen. Dies ist auch der schnellste Weg, um eine “nicht zugestimmt”-stille 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 tritt unserer Discord-Community bei.