SDKs
Três núcleos (JavaScript, Android em Kotlin, iOS em Swift) com camadas finas por cima. A API é a mesma nos seis: configure (ou o construtor), registerDevice, connect, chamadas, unregisterDevice e disconnect no logout. Os eventos também: incomingCall, callStateChanged, callEnded, takenElsewhere, connectionStateChanged, error.
| SDK | Para | Situação |
|---|---|---|
JavaScript (@moraviq/voice-web) | navegador: portaria web e morador web; React, Vue e afins | pronto para o piloto |
Angular (@moraviq/voice-angular) | portaria web em Angular 20 a 22, standalone, com ou sem zone.js | pronto para o piloto |
| Android (Kotlin, AAR) | app nativo; base do Capacitor e do Flutter | em construção (fase 4) |
| iOS (Swift, XCFramework) | app nativo, CallKit e PushKit | em construção (fase 6) |
Capacitor (@moraviq/voice-capacitor) | Ionic: a mesma API do JS sobre os nativos | depois do Android e do iOS |
Flutter (moraviq_voice) | app Flutter sobre os nativos | depois do Capacitor |
| React Native | app React Native sobre os nativos | sob pedido |
Regras que todos seguem
getTokené seu: chama o seu backend, que devolve o token de aparelho (5 minutos). O SDK renova a 30 s do fim e no 401.- Token nunca em URL, log ou armazenamento persistente. No nativo, só a credencial do aparelho fica no Keychain ou no Keystore.
- O SDK não loga SDP, IP, push token, nome nem
metadata. Se quiser log, passelog: ele só recebe texto e{code, status}. - O microfone é pedido no clique (Ligar, Atender), antes de criar ou aceitar a chamada.
- A ligação inteira roda no SDK: sinalização com reconexão, deduplicação e
call.resume; mídia com offer só depois do aceite, fila de candidatos e reinício de ICE.
Conformidade
Todo SDK oficial roda a mesma suíte (sdk/conformidade): cenários em JSON com cada frame e pedido na ordem (toque, aceite, recusa, perdido para outro aparelho, token curto, reconexão, erros) e vetores de lógica (prova do aparelho, espera da reconexão). O SDK que não passa não sai.
Versões e distribuição
Semver por SDK, com changelog. No piloto, os pacotes JS e Angular saem pelo GitHub Packages (escopo @moraviq, token por parceiro); na abertura, npm público. Navegadores: Chrome, Edge, Firefox e Safari dos últimos 2 anos.