Попередні вимоги
- Обліковий запис Mellowtel та ключ конфігурації (отримайте свій на панелі інструментів).
- Додаток Electron з доступом до основного процесу.
Встановлення
1. Встановіть пакет
З кореня вашого проекту встановіть Electron SDK:2. Додайте до вашого коду
У вашому файлі основного процесу Electron (зазвичайmain.ts або main.js), імпортуйте SDK, за бажанням викличте setupMellowtelApp() перед тим, як додаток буде готовий, створіть екземпляр Mellowtel з вашим ключем конфігурації, запросіть згоду користувача, а потім викличте init(), щоб запустити сервіс.
Замініть
YOUR_CONFIGURATION_KEY на ключ з вашої панелі Mellowtel.new Mellowtel(configurationKey, options?)створює екземпляр SDK. Єдиний доступний параметр на сьогодні —disableLogs, який за замовчуванням встановлений наtrue. Встановіть його наfalseпід час інтеграції, щоб бачити стан з’єднання та активність запитів у вашому терміналі.requestConsent(window, incentive)відображає нативне повідомлення Electron прив’язане доBrowserWindow, яке ви передаєте. Другий аргумент — це помітний заголовок діалогу (наприклад,"Отримайте 3 місяці безкоштовно"), показаний над фіксованим поясненням того, що робить Mellowtel. Він повертаєtrue, якщо користувач приймає,false, якщо користувач відхиляє або закриває діалог, іundefined, якщо згода вже є в файлі. SDK автоматично зберігає рішення про згоду, тому вам не потрібно викликатиoptIn()після цього.init()викидає помилку лише тоді, колиconfigurationKeyпорожній. Якщо користувач не дав згоди, він записує лог і повертається без запуску. В іншому випадку він підключається до Mellowtel, щоб почати обробку запитів. Виклик не блокує UI рендерера, тому вікна залишаються чутливими під час встановлення з’єднання.
Додатково: зменшення несподіваних запитів ОС
SDK постачається з додатковим помічником,setupMellowtelApp(), який зменшує несподівані запити ОС (автозаповнення, панелі перекладу, медіа-накладки, діалоги першого запуску) під час роботи з запитами у фоновому режимі.
Ці прапори застосовуються до всього процесу Electron, а не лише до Mellowtel. Пропустіть помічника, якщо ваш продукт покладається на нативні запити автентифікації або UI менеджера паролів.
Викличте його на початку вашого файлу основного процесу, перед app.whenReady(), і імпортуйте його разом з експортом за замовчуванням з mellowtel-electron. Дивіться оригінальний README для канонічного використання.
Згода користувача
У вас є два шляхи для обробки згоди:- Використовуйте вбудований нативний діалог через
requestConsent(window, incentive). Це найшвидший шлях і те, що показано у наведеному вище фрагменті. Він відображає нативний діалог Electrondialog.showMessageBoxз вашим текстом стимулу як заголовок і автоматично зберігає рішення користувача. - Створіть свій власний UI згоди і керуйте SDK через
optIn(),optOut(), іgetOptInStatus(). Використовуйте це, якщо ви хочете налаштувати брендинг, багатші пояснення або локалізацію, що виходить за межі того, що пропонує нативний діалог.
Що має містити ваш діалог згоди
1
Поясніть, що робить Mellowtel
Використовуйте просту мову. Приклад: “Цей додаток використовує Mellowtel для спільного використання вашої невикористаної пропускної здатності інтернету. Взамін ви отримуєте [вигода/функція]. Ви можете відмовитися в будь-який час у налаштуваннях.”
2
Дайте користувачам чіткий вибір
Включіть окремі варіанти Прийняти та Відхилити.
3
Посилання на політики
Включіть посилання на Умови використання та Політику конфіденційності.
Дозвольте користувачам змінювати свою згоду пізніше
Mellowtel надає вбудований діалог налаштувань черезshowConsentSettings(window). Він відображає нативний діалог з кнопками Opt In / Opt Out, які відповідають поточному стану користувача, і внутрішньо викликає optIn() або optOut() (плюс повторне підключення до Mellowtel при виборі opt-in), коли користувач перемикає свій вибір. Підключіть його до елемента меню або кнопки налаштувань у вашому додатку, щоб користувачі могли переглядати свій вибір.
Якщо ви віддаєте перевагу створити власний екран налаштувань, викличте getOptInStatus(), щоб прочитати поточний стан, і optIn() / optOut(), щоб змінити його.
Довідка по методах
КласMellowtel надає наступні публічні методи. Всі вони доступні на екземплярі, який ви створили з new Mellowtel(configurationKey, options?).
Життєвий цикл
init(): Promise<void>запускає сервіс, якщо користувач дав згоду, або повертається без запуску, якщо ні. Викидає помилку лише тоді, коли ключ конфігурації порожній.shutdown(): Promise<void>очищає ресурси SDK при закритті додатку. Закриває з’єднання з Mellowtel, звільняє ізольовані вікна запитів і очищає фонові таймери. Зберігає перевагу користувача щодо згоди.requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined>показує вбудований нативний діалог згоди і зберігає результат. Повертаєtrueпри прийнятті,falseпри відхиленні або закритті,undefined, якщо згода вже була дана.showConsentSettings(window: BrowserWindow): Promise<void>показує вбудований діалог управління згодою. SDK обробляє переходи opt-in / opt-out внутрішньо, коли користувач перемикає свій вибір.
optIn(): Promise<void>позначає користувача як такого, що дав згоду, без показу діалогу. Використовуйте це лише після збору згоди через ваш власний UI.optOut(): Promise<void>позначає користувача як такого, що відмовився, і виконує повне очищення (ті ж ресурси, що іshutdown(), плюс очищення збереженої переваги згоди). Немає потреби викликатиshutdown()після цього.getOptInStatus(): boolean | undefinedповертає поточний стан згоди, абоundefined, якщо користувач ніколи не робив вибору.getNodeId(): stringповертає ідентифікатор вузла Mellowtel для цієї установки. Корисно при поданні заявок на підтримку.
electron-store і зберігається після перезапуску додатку. Відображайте їх у вашому власному UI, якщо ви хочете показати користувачам вплив їх згоди.
getTotalRequestCount(): numberповертає загальну кількість оброблених запитів з моменту встановлення.getDailyRequestCount(): numberповертає кількість запитів, оброблених сьогодні.getRequestCountForDate(date: string): numberповертає кількість для конкретної датиYYYY-MM-DD.getDailyRequestsHistory(): { [date: string]: number }повертає кожну щоденну кількість як карту.getRequestCountsInRange(startDate: string, endDate: string): { [date: string]: number }повертає кількість за діапазон дат.getRequestCounts(): { total: number; daily: number; dailyHistory: { [date: string]: number } }повертає всі три лічильники в одному виклику.
Життєвий цикл та закриття додатку
Після першого запиту SDK може зберігати ізольовані, позаекранні BrowserWindows для роботи у фоновому режимі. Ці вікна не мають доступу до сесії користувача або даних вашого додатку. Хост-додатки повинні викликатиshutdown(), коли додаток фактично закривається, щоб ці робочі процеси були звільнені.
shutdown():
- Закриває з’єднання з Mellowtel.
- Звільняє ізольовані вікна запитів.
- Очищає фонові таймери.
- Зберігає перевагу користувача щодо згоди.
Одновіконні додатки
Викличтеshutdown(), коли основне вікно додатку закривається:
window-all-closed. Фонові робочі процеси можуть завадити її запуску, тому розглядайте явний вихід (або обробник closed основного вікна вище) як сигнал для виклику shutdown().
Додатки в системному треї
Не викликайтеshutdown(), коли вікно лише згорнуто в системний трей. Викликайте його з явної дії Вихід:
Додатки для macOS
Якщо додаток залишається активним після закриття його вікон, викликайтеshutdown() лише тоді, коли користувач фактично виходить з додатку.
Відмова від згоди
optOut() вже виконує повне очищення:
shutdown() після цього. На відміну від shutdown(), optOut() також змінює збережену перевагу згоди.
Запуск знову
Післяshutdown() або optOut(), Mellowtel можна запустити знову:
Збереження згоди
Опція згоди зберігається в звичайній конфігурації Electron вашого додатку (те саме розташуванняelectron-store, що й інші налаштування додатку):
- macOS:
~/Library/Application Support/<YourAppName>/config.json - Windows:
%APPDATA%\<YourAppName>\config.json - Linux:
~/.config/<YourAppName>/config.json
Усунення несправностей
Помилка "Пакет не знайдено" під час встановлення
Помилка "Пакет не знайдено" під час встановлення
- Переконайтеся, що ви встановлюєте
mellowtel-electron(не ім’я пакета з GitHub Packages). - Очистіть кеш npm і повторіть спробу, виконавши
npm cache clean --force, а потімnpm install mellowtel-electron.
Діалог згоди ніколи не з'являється
Діалог згоди ніколи не з'являється
- Переконайтеся, що ви викликаєте
requestConsentпісля того, якapp.whenReady()було вирішено, і з дійснимBrowserWindow, яке все ще відкрите. - Якщо ви використовуєте
setupMellowtelApp(), перевірте, що він викликається передapp.whenReady(), а не після.
"init() виконується без помилок, але нічого не відбувається"
"init() виконується без помилок, але нічого не відбувається"
Це за задумом.
init() повертається без запуску, коли користувач не дав згоди. Перевірте getOptInStatus(), щоб підтвердити. Якщо він повертає undefined або false, спочатку виконайте requestConsent. Повідомлення “Користувач не дав згоди” не друкується, коли disableLogs залишається за замовчуванням (див. “Немає логів у терміналі” нижче), тому термінал не дає вам сигналу в будь-якому випадку, поки ви не зміните цей прапор.Немає логів у терміналі
Немає логів у терміналі
Параметр конструктора
disableLogs за замовчуванням встановлений на true. Передайте { disableLogs: false } як другий аргумент до конструктора під час інтеграції, щоб відобразити стан з’єднання та активність запитів у вашому терміналі. Це також найшвидший спосіб відрізнити “не дав згоду” від реальної помилки з’єднання.Орієнтовний час завершення: 10-15 хвилин. Якщо вам потрібна допомога або у вас є відгуки, зв’яжіться з нами за адресою info@mellowtel.com або приєднуйтеся до нашої спільноти в Discord.