Integre Mellowtel em sua aplicação Electron multiplataforma para permitir que os usuários compartilhem sua largura de banda de internet não utilizada em troca de recompensas ou recursos premium. O SDK do Electron funciona em qualquer lugar onde o Electron é executado (macOS, Windows e Linux).Documentation Index
Fetch the complete documentation index at: https://docs.mellowtel.com/llms.txt
Use this file to discover all available pages before exploring further.
Pré-requisitos
- Uma conta Mellowtel e chave de configuração (obtenha a sua no painel de controle).
- Uma aplicação Electron com acesso ao processo principal.
Instalação
1. Configurar Autenticação npm
Crie um arquivo.npmrc no diretório raiz do seu projeto para apontar o npm para o registro de Pacotes GitHub da Mellowtel e autenticar a instalação:
YOUR_NPM_TOKEN pelo token de instalação abaixo. Clique para revelar, depois use o ícone de cópia no bloco de código para copiá-lo para sua área de transferência.
Revelar token de instalação
Revelar token de instalação
2. Instalar o Pacote
A partir do diretório raiz do seu projeto, instale o SDK do Electron:3. Adicionar ao Seu Código
No arquivo de processo principal do seu Electron (normalmentemain.ts ou main.js), importe o SDK, instancie-o com sua chave de configuração, solicite consentimento do usuário e, em seguida, chame init() para iniciar o serviço.
Substitua
YOUR_CONFIGURATION_KEY pela chave do seu painel de controle Mellowtel.new Mellowtel(configurationKey, options?)instancia o SDK. A única opção disponível hoje édisableLogs, que por padrão étrue. Defina comofalsedurante a integração para que você possa ver o estado da conexão e a atividade de requisição no seu terminal.requestConsent(window, incentive)renderiza uma caixa de mensagem nativa do Electron ancorada naBrowserWindowque você passa. O segundo argumento é o título proeminente do diálogo (por exemplo,"Ganhe 3 meses grátis"), mostrado acima de uma explicação fixa do que o Mellowtel faz. Ele resolve paratruese o usuário aceitar,falsese o usuário recusar ou fechar o diálogo, eundefinedse o consentimento já estiver registrado. O SDK persiste automaticamente a decisão de opt-in, então você não precisa chamaroptIn()depois.init()lança exceção apenas quandoconfigurationKeyestá vazio. Se o usuário não optou por participar, ele registra e retorna silenciosamente. Caso contrário, ele abre um WebSocket para o backend da Mellowtel. A chamada não bloqueia a UI do renderizador, então as janelas permanecem responsivas enquanto a conexão é estabelecida.
Prevenindo interrupções de diálogos do sistema (recomendado)
O SDK vem com um auxiliar opcional,setupMellowtelApp(), que configura flags de linha de comando do Electron para suprimir diálogos do sistema (pop-ups de preenchimento automático, barras de tradução, prompts de autenticação NTLM / Kerberos, integração com gerenciadores de senhas, sobreposições de mídia, diálogos de primeira execução) que de outra forma interromperiam seus usuários quando os processos ocultos do Mellowtel processam requisições em segundo plano.
Chame-o no topo do seu arquivo de processo principal, antes de app.whenReady(), e importe-o juntamente com a exportação padrão de @mellowtel-inc/mellowtel-electron. Veja o README original para o uso canônico.
Consentimento do Usuário
Você tem dois caminhos para lidar com o consentimento:- Use o diálogo nativo embutido via
requestConsent(window, incentive). Este é o caminho mais rápido e é o que o trecho acima mostra. Ele renderiza umdialog.showMessageBoxnativo do Electron com sua cópia de incentivo como título e persiste automaticamente a decisão do usuário. - Construa sua própria UI de consentimento e dirija o SDK através de
optIn(),optOut(), egetOptInStatus(). Use isso se você quiser personalização de marca, explicações mais ricas ou localização além do que o diálogo nativo oferece.
O que seu diálogo de consentimento deve incluir
Explique o que o Mellowtel faz
Use linguagem simples. Exemplo: “Este app usa o Mellowtel para compartilhar sua largura de banda de internet não utilizada. Em troca, você recebe [benefício/recurso]. Você pode optar por sair a qualquer momento nas configurações.”
Link para políticas
Inclua links para os Termos de Serviço e Política de Privacidade.
Permitir que os usuários alterem seu consentimento posteriormente
O Mellowtel fornece um diálogo de configurações embutido viashowConsentSettings(window). Ele renderiza um diálogo nativo com botões de Opt In / Opt Out que correspondem ao estado atual do usuário, e internamente chama optIn() ou optOut() (além de reconectar o WebSocket no opt-in) quando o usuário alterna. Conecte-o a um item de menu ou botão de configurações no seu app para que os usuários possam revisar sua escolha.
Se você preferir construir sua própria tela de configurações, chame getOptInStatus() para ler o estado atual e optIn() / optOut() para alterá-lo.
Referência de Métodos
A classeMellowtel expõe os seguintes métodos públicos. Todos estão disponíveis na instância que você criou com new Mellowtel(configurationKey, options?).
Ciclo de Vida
init(): Promise<void>inicia o serviço se o usuário optou por participar, ou retorna silenciosamente cedo se não. Lança exceção apenas quando a chave de configuração está vazia.requestConsent(window: BrowserWindow, incentive: string): Promise<boolean | undefined>mostra o diálogo de consentimento nativo embutido e persiste o resultado. Retornatrueao aceitar,falseao recusar ou fechar,undefinedse o consentimento já foi dado.showConsentSettings(window: BrowserWindow): Promise<void>mostra o diálogo de gerenciamento de consentimento embutido. O SDK lida com as transições de opt-in / opt-out internamente quando o usuário alterna sua escolha.
optIn(): Promise<void>marca o usuário como optado sem mostrar um diálogo. Use isso apenas após coletar consentimento através de sua própria UI.optOut(): Promise<void>marca o usuário como optado para fora e fecha a conexão WebSocket ativa.getOptInStatus(): boolean | undefinedretorna o estado atual de opt-in, ouundefinedse o usuário nunca fez uma escolha.getNodeId(): stringretorna o identificador de nó Mellowtel para esta instalação. Útil ao registrar tickets de suporte.
electron-store e sobrevivem a reinicializações do app. Exiba-as em sua própria UI se quiser mostrar aos usuários o impacto de seu opt-in.
getTotalRequestCount(): numberretorna o total de requisições processadas desde a instalação.getDailyRequestCount(): numberretorna o número de requisições processadas hoje.getRequestCountForDate(date: string): numberretorna a contagem para uma data específicaYYYY-MM-DD.getDailyRequestsHistory(): { [date: string]: number }retorna todas as contagens diárias como um mapa.getRequestCountsInRange(startDate: string, endDate: string): { [date: string]: number }retorna contagens para um intervalo de datas.getRequestCounts(): { total: number; daily: number; dailyHistory: { [date: string]: number } }retorna todos os três contadores em uma única chamada.
Desligamento e Ciclo de Vida
O SDK do Electron não registra seus próprios manipuladoresbefore-quit ou will-quit. Quando seu processo Electron sai, a conexão WebSocket em segundo plano é encerrada com ele, e nenhuma limpeza explícita é necessária do seu lado.
Se você quiser desconectar o Mellowtel no meio da sessão (por exemplo, quando um usuário alterna uma configuração de “pausa” no seu app), chame optOut(). Isso limpa tanto o flag de opt-in quanto fecha a conexão ativa. Para reconectar, chame optIn() seguido de init().
Persistência de Consentimento
O estado de opt-in é armazenado no caminho de configuração padrão da plataformaelectron-store:
- macOS:
~/Library/Application Support/<YourAppName>/config.json - Windows:
%APPDATA%\<YourAppName>\config.json - Linux:
~/.config/<YourAppName>/config.json
Solução de Problemas
Erro "Pacote não encontrado" durante a instalação
Erro "Pacote não encontrado" durante a instalação
- Verifique se
.npmrcestá no diretório raiz do projeto, ao lado do seupackage.json. - Certifique-se de que o token não tenha espaços em branco no início ou no final.
- Limpe o cache do npm e tente novamente executando
npm cache clean --forceseguido denpm install.
Erro "Não autorizado" ou 401 durante a instalação
Erro "Não autorizado" ou 401 durante a instalação
- Verifique se o token em
.npmrcestá correto e ativo. Se você não tiver certeza, solicite um novo token em info@mellowtel.com. - Confirme se a linha
@mellowtel-inc:registryestá presente e aponta parahttps://npm.pkg.github.com/.
O diálogo de consentimento nunca aparece
O diálogo de consentimento nunca aparece
- Certifique-se de chamar
requestConsentdepois queapp.whenReady()foi resolvido e com uma referênciaBrowserWindowválida e não destruída. - Se você usar
setupMellowtelApp(), verifique se ele é chamado antes deapp.whenReady(), não depois.
"init() executa sem erros, mas nada acontece"
"init() executa sem erros, mas nada acontece"
Isso é por design.
init() retorna silenciosamente cedo quando o usuário não optou por participar. Verifique getOptInStatus() para confirmar. Se retornar undefined ou false, execute requestConsent primeiro. Note que o log interno “Usuário não optou por participar” é suprimido quando disableLogs é deixado em seu padrão (veja “Logs estão silenciosos” abaixo), então o terminal não dá sinal de qualquer maneira até você alterar essa flag.Logs estão silenciosos
Logs estão silenciosos
A opção de construtor
disableLogs tem como padrão true. Passe { disableLogs: false } como o segundo argumento para o construtor durante a integração para exibir o estado da conexão e a atividade de requisição no seu terminal. Esta também é a maneira mais rápida de distinguir um “não optou por participar” silencioso (veja acima) de uma falha real de conexão.Tempo estimado para completar: 10-15 minutos. Se precisar de ajuda ou tiver feedback, entre em contato conosco em info@mellowtel.com ou junte-se à nossa comunidade no Discord.