Heartbeats de licença e verificação offline
As duas opções ficam nas políticas de licença, mas definem coisas diferentes: frequência de contato online e duração de uso sem alcançar o servidor.
Intervalo: frequência de validação
Defina Intervalo de heartbeat (segundos) como 600, o SDK envia um heartbeat aproximadamente a cada 10 minutos durante a execução. Cada sucesso obtém as regras atuais e atualiza o cache local da licença.
Informe 600–86400 segundos. Informe 0 desativa os heartbeats agendados. O aplicativo ainda pode verificar ou atualizar manualmente. O agendamento adiciona atraso aleatório de 0–10%; o intervalo nunca fica abaixo de 600 segundos.
Com licença vinculada ao dispositivo e cache válido, o acesso é restaurado e atualizado online em segundo plano, mesmo sem temporizador. Licenças somente online ou flutuantes aguardam o servidor.
Tempo offline: quanto usar sem o servidor
Modo offline tem três opções e não altera o intervalo de heartbeat.
- Permitir por duração definida
- Com 24 horas, o cache assinado vale até 24 horas desde a última validação online bem-sucedida. O software funciona durante quedas de rede ou falhas temporárias nesse período. Depois, precisa validar online.
- Fallback offline não permitido
- A inicialização exige sucesso no servidor; cache em disco não libera acesso após falha. A assinatura curta obtida em execução vale no máximo
max(10, 心跳间隔)segundos; o aplicativo deve continuar validando e verificando permissões. - Permitir acesso offline permanente
- A assinatura local pode ser usada por longo prazo, mesmo sem rede. Uma licença de 30 dias continua expirando em 30 dias; offline permanente não torna a licença perpétua.
A API usa offline_mode representa estas três opções, na ordem limited, none, permanent. Com duração offline definida,offline_seconds é 1–31536000 segundos; use 0 nos outros dois modos.
Como funcionam estas combinações?
| Heartbeat / configurações offline | Comportamento real |
|---|---|
| 10 minutos / 24 horas | Valide a cada 10 minutos online. Offline, use por até 24 horas desde a última validação bem-sucedida |
| 10 minutos / offline permanente | Tenta heartbeat a cada 10 minutos, atualiza regras ao conseguir e usa assinatura válida sem conexão. |
| 0 / offline permanente | Com cache válido, inicie sem requisições agendadas. Validação ou atualização explícita ainda acessa o servidor |
| 0 / 24 horas | Sem heartbeat agendado, mas cache expira. O aplicativo agenda validação; desativar não estende tempo offline. |
Defina tempo offline maior que o intervalo. Com heartbeat por hora e só 1 minuto offline, a assinatura expira antes do próximo; o aplicativo precisa validar separadamente.
Alterar a política atualiza licenças existentes?
Sim. Salvar sincroniza atomicamente limites, recursos, cotas, modelo, manutenção e versões em cada licença vinculada não revogada. Não é preciso selecionar cada uma novamente.
A sincronização preserva tipo, dias, primeira ativação, vencimento, cliente, uso e extensão de manutenção. O tipo da política vale apenas para novas licenças e não torna perpétua uma licença de 30 dias.
Se houver dispositivos ou sessões ativos ao trocar o modelo, ou se o novo limite for menor que o uso atual, salvar retorna ACTIVE_DEVICES_CONFLICT, sem atualizar parcialmente a política ou licenças. Libere os dispositivos em conflito e salve novamente.
Após salvar, licenças vinculadas antigas e novas usam as regras na próxima ativação, validação ou heartbeat bem-sucedido. O SDK troca o cache assinado. O mesmo Idempotency-Key ainda retorna o resultado original.
Um dispositivo offline mantém as regras assinadas existentes. Reconectar não atualiza o cache por si só; uma requisição precisa ter sucesso. O aplicativo pode atualizar quando a rede voltar.
Para mover licenças para outra política, selecione-as e visualize com Aplicar política. Ao editar a política atual, basta salvar para sincronizar.
Atualização online explícita
Esses métodos sempre tentam o servidor, mesmo com offline permanente e heartbeat desligado. Sucesso atualiza a assinatura. Falha de rede informa erro mas mantém cache válido. Revogação ou liberação explícita apaga o cache.
| Idioma | Como chamar |
|---|---|
| Go | client.RefreshOnline(ctx) |
| Java | client.refreshOnline() |
| C | ln_refresh_online(client) |
| C++ | client.RefreshOnline() |
| C# | await client.RefreshOnline() |
| Python | client.refresh_online() |
| JavaScript | await client.refreshOnline() |
Uma atualização bem-sucedida conta como uma ativação API. Se a política ativar heartbeat antes desligado, chame StartHeartbeat da linguagem para iniciar o agendamento. Offline, o dispositivo não recebe revogação ou liberação.