SDK Flutter Liveness
V4.4.0
A partir da release 2.1.0 (08/10/2024), foi implementado um novo método opcional de autenticação via token resgatado da autenticação via Plataforma Data Trust nos SDKs nativos. Recomenda-se que todos façam a alteração, pois, futuramente, será o único método.
A release 2.1.0 somente é compatível com as versões dos SDKs disponibilizadas a partir de 08/10/2024 (Android 2.0.18 e iOS 2.0.8).
Como obter o accessToken e transactionId?
accessToken: Faça a autenticação seguindo as instruções da API DataTrust e obtenha otokendo retorno.transactionId: Crie uma transação seguindo as instruções da API DataTrust e obtenha oiddo retorno.
Introdução
O objetivo deste manual é fornecer todas as informações necessárias para instalação e uso da ferramenta nos aplicativos desenvolvidos para plataforma Flutter.
Este SDK realiza a captura de faces para processamento de Liveness pela ClearSale. Todas as informações coletadas são dados relacionados apenas ao dispositivo, sem relação ao aplicativo integrado.
As informações de captura de imagem dependem da permissão concedida pelo usuário no momento de captura. Neste caso é necessário que o aplicativo solicite o acesso à câmera ao usuário para dar prosseguimento à coleta de prova de vida.
O SDK respeita a política de privacidade da Google para a captura dos dados do dispositivo e o nível de permissão atribuído pelo usuário (usuário do dispositivo).
Instalação
flutter pub add liveness_flutter_sdkliveness_flutter_sdk:
git:
url: https://github.com/ClearSale/LivenessPluginFlutter.git,
ref: master
Caso sua aplicação utilize a ferramenta Sentry, a versão compatível do sentry_flutter ou sentry-dart é a 8.11.2.
Android
Adicione nosso repositório na sua lista de repositórios (no seu arquivo build.gradle.kts ou build.gradle ).
allprojects {
repositories {
...
maven {
url = uri("https://pkgs.dev.azure.com/CS-PublicPackages/SDKS/_packaging/SDKS/maven/v1")
}
}
} Obs.: Para utilização em Homologação, deve ser adicionado -hml ao final da tag de versionamento.
iOS
Para iOS, primeiro instale o plugin cocoapods-azure-universal-packages.
Após isso, certifique-se de logar no azure cli com az devops login usando o PAT que foi enviado para você por e-mail.
az devops login --organization https://dev.azure.com/CS-PublicPackagesFeito isso, adicione nosso repositório no seu Podfile:
plugin 'cocoapods-azure-universal-packages', {
:organization => 'https://dev.azure.com/CS-PublicPackages/'
} Então, adicione o SDK como sua dependência no Podfile:
pod 'CSLivenessSDK', :http => 'https://dev.azure.com/CS-PublicPackages/SDKS/_apis/packaging/feeds/SDKS/upack/packages/cslivenesssdk-ios/versions/4.0.0'Obs.: Para utilização em Homologação, deve ser adicionado -hml ao final da tag de versionamento.
A partir da versão 4.0.0, não é mais necessário separar os ambientes de homologação e produção. O sufixo -hml foi removido da tag de versionamento, e um único pacote agora atende a ambos os ambientes.
Instruções de uso
Importe o plugin no seu projeto e use o método openCSLiveness que irá chamar a SDK nativa do dispositivo.
O resultado da função open é um future que pode retornar os seguintes valores:
class CSLivenessResult {
final bool real;
final String sessionId;
final String image;
final String? responseMessage;
}
Caso ofutureseja rejeitado, ela retorna o erro que causou a rejeição (CSLivenessResultno Android,CSLivenessErrorno iOS).
Exemplo de uso
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> callCSLivenessSDK(
String transactionId, //Obtido via https://datatrustapihml.clearsale.com.br/v1/transaction OU https://datatrustapi.clearsale.com.br/v1/transaction
String accessToken, //Obtido via https://datatrustapihml.clearsale.com.br/v1/authentication OU https://datatrustapi.clearsale.com.br/v1/authentication
bool vocalGuidance,
Color primaryColor,
Color secondaryColor,
Color titleColor,
Color paragraphColor) async {
// Platform messages may fail, so we use a try/catch PlatformException.
// We also handle the message potentially returning null.
String result;
try {
var sdkResponse =
await _livenessFlutterSdkPlugin.openCSLiveness(
transactionId,
accessToken,
vocalGuidance,
primaryColor,
secondaryColor,
titleColor,
paragraphColor,
environments: LivenessEnvironments.prd); //caso queira usar ambiente de hml, troque o .prd por .hml
result = jsonEncode(sdkResponse);
} on PlatformException catch (e) {
result = "Error: $e";
} catch (e) {
result = "Error: $e";
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_result = result;
});
}// Platform messages are asynchronous, so we initialize in an async method.
Future<void> callCSLivenessSDK(
String transactionId, //Obtido via https://datatrustapihml.clearsale.com.br/v1/transaction OU https://datatrustapi.clearsale.com.br/v1/transaction
String accessToken, //Obtido via https://datatrustapihml.clearsale.com.br/v1/authentication OU https://datatrustapi.clearsale.com.br/v1/authentication
bool vocalGuidance,
Color primaryColor,
Color secondaryColor,
Color titleColor,
Color paragraphColor) async {
// Platform messages may fail, so we use a try/catch PlatformException.
// We also handle the message potentially returning null.
String result;
try {
var sdkResponse =
await _livenessFlutterSdkPlugin.openCSLiveness(
transactionId,
accessToken,
vocalGuidance,
primaryColor,
secondaryColor,
titleColor,
paragraphColor);
result = jsonEncode(sdkResponse);
} on PlatformException catch (e) {
result = "Error: $e";
} catch (e) {
result = "Error: $e";
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_result = result;
});
}Executando o aplicativo de exemplo
- Conecte um dispositivo físico (
AndroidouiOS- o nossoSDKnão roda em emuladores, apenas em dispositivos físicos) à sua máquina de desenvolvimento; - Clone esse repositório e rode
flutter pub get; - Coloque suas credenciais no arquivo
clearsale.gradle.envna raiz do projeto de exemplo e adicione também as credenciais no arquivoexample/ios/Podfile; - Inicie o app;
- Ao pressionar o botão
Open CSLivenesso SDK iniciará. Após completar o fluxo o aplicativo retorna o resultadoreal, a imagem em formato Base 64 e o id da sessãosessionId. Em caso de reprovação, é retornado o camporesponseMessage.
Boas práticas para testes em ambiente de homologação (HML)
O ambiente de homologação foi desenvolvido exclusivamente para testes de integração e validação funcional entre sistemas. Para garantir estabilidade e performance adequadas a todos os clientes que utilizam este ambiente, seguem algumas orientações importantes:
- ❌ Não utilize o ambiente de HML para testes de carga ou stress.Testes com alto volume simultâneo devem ser realizados em ambientes controlados.
- ⏱️ O uso está limitado a 50 requisições por minuto.Acima desse limite, o sistema pode apresentar falhas, bloqueios temporários ou retornos inconsistentes.
- 📱 O teste é restrito a 5 dispositivos diferentes.Dispositivos excedentes podem gerar erro de limite, comprometendo os testes.
Seguindo essas práticas, evitamos impactos na análise dos testes e garantimos uma melhor experiência de uso para todos.
Detalhes de privacidade
Uso de dados
Todas as informações coletadas pelo SDK da ClearSale são com exclusiva finalidade de prevenção à fraude e proteção ao próprio usuário, aderente à política de segurança e privacidade das plataformas Google e Apple e à LGPD. Por isso, estas informações devem constar na política de privacidade do aplicativo.
Tipo de dados coletados
O SDK da ClearSale coleta as seguintes informações do dispositivo :
- Características físicas do dispositivo/ hardware (Como tela, modelo, nome do dispositivo)
- Características de software (Como versão, idioma, build, controle parental)
- Informações da câmera
- Licença de Uso
Licença
Ao realizar o download e utilizar nosso SDK você estará concordando com a seguinte licença:
Todos os direitos são reservados, sendo concedida a permissão para usar o software da maneira como está, não sendo permitido qualquer modificação ou cópia para qualquer fim. O Software é licenciado com suas atuais configurações “tal como está” e sem garantia de qualquer espécie, nem expressa e nem implícita, incluindo mas não se limitando, garantias de comercialização, adequação para fins particulares e não violação de direitos patenteados. Em nenhuma hipótese os titulares dos Direitos Autorais podem ser responsabilizados por danos, perdas, causas de ação, quer seja por contrato ou ato ilícito, ou outra ação tortuosa advinda do uso do Software ou outras ações relacionadas com este Software sem prévia autorização escrita do detentor dos direitos autorais.
Copyright © 2022 ClearSale
Updated about 1 month ago