React Native

Última atualização: 24 de Outubro de 2023

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 Android.

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).

Android

Requisitos

  • Versão do sistema operacional Android: v5.0 (API v21) ou superior.
  • compileSdkVersão: 31
  • targetSdkVersion: 31
  • com.google.android.material:material superior a 1.5.0
  • kotlin_version igual ou superior a 1.6.10
  • Build Gradle 7.1.2
  • 16,20mb de espaço em disco

Instalação do Pacote

Adicione um arquivo com o nome .gradle.env que contenha as seguintes variávies:

CS_LIVENESS_TEC_ARTIFACTS_FEED_URL=ARTIFACTS_FEED_URL // valor fornecido pela ClearSale
    CS_LIVENESS_TEC_ARTIFACTS_FEED_NAME=ARTIFACTS_FEED_NAME // valor fornecido pela ClearSale
    CS_LIVINESS_TEC_USER=USERNAME // valor fornecido pela ClearSale
    CS_LIVINESS_TEC_PASS=ACCESSTOKEN // valor fornecido pela ClearSale
    CS_LIVENESS_VERSION=LAST_VERSION // valor fornecido pela ClearSale

Após isso, adicione no seu projeto Android, no arquivo build.gradle após o buildscript a seguinte linha:

Gradle
def defaultPath = System.env.DIRNAME ?: System.env.PWD
System.properties["ENV_FILE"] = defaultPath + "/../.gradle.env"

Ex.:
Gradle
buildscript {
    ext.kotlin_version = '1.6.10'
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

def defaultPath = System.env.DIRNAME ?: System.env.PWD
System.properties["ENV_FILE"] = defaultPath + "/../.gradle.env"

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

Configuração

Instruções para configuração do framework no projeto:

  1. Para o uso do sdk é necessário requisitar algumas permissões no arquivo de manifesto, são elas:
  2. <uses-permission android:name="android.permission.INTERNET"/>

React Native 0.63.4 (iOS)

Requisitos

  • Versão do sistema operacional iOS: 12.4 ou superior
  • Versão do Node: Intel: versão 14.17.2 | Apple Silicon: versão 14.15.5
  • Versão do Ruby: versão 2.7.5
  • Versão do React Native: versão minima 0.63.4
  • 36mb de espaço em disco

Instalação do Pacote

  • CocoaPods

Para adicionar o SDK ao seu projeto utilizando Cocoapods basta adicionar o seguinte comando ao seu Podfile:

Instalação em ambiente de desenvolvimento e testes
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

source 'URL DO REPOSITÓRIO ENVIADO PELA CLEARSALE'

platform :ios, '12.0'
inhibit_all_warnings!

target 'CSLivenessTec' do
  config = use_native_modules!

  # # ClearSale SDK
  use_frameworks!
  pod 'boost-for-react-native', :podspec => 'https://raw.githubusercontent.com/react-native-community/boost-for-react-native/master/boost-for-react-native.podspec'

  use_react_native!(:path => config["reactNativePath"])

  target 'CSLivenessTecTests' do
    inherit! :complete
    # Pods for testing
  end
  # We have some incompatibilities to use the flipper on Mac with M1 chip due to ARM architecture. 
  # To solve this, we will use the flipper only in debug environment
  def add_flipper_pods!
    version = '~> 0.33.1'
    pod 'FlipperKit', version, :configuration => ['Debug', 'Release']
    pod 'FlipperKit/FlipperKitLayoutPlugin', version, :configuration => ['Debug', 'Release']
    pod 'FlipperKit/SKIOSNetworkPlugin', version, :configuration => ['Debug', 'Release']
    pod 'FlipperKit/FlipperKitUserDefaultsPlugin', version, :configuration => ['Debug', 'Release']
    pod 'FlipperKit/FlipperKitReactPlugin', version, :configuration => ['Debug', 'Release']
  end

  # Due to the use of some old versions of dependencies we should force the target to iOS 15.0
  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
      end
    end
  end
end

Obs: Validar valores e versões do SDK de Produção. No entanto, as demais configurações do Podfile seguem a mesma estrutura.

Configuração de Acesso à câmera

Instruções para configuração do framework no projeto:

  1. Essas linhas de código devem ser inseridas no arquivo info.plist do projeto iOS, para que possamos ter acesso ao uso da câmera.
  2. <key>NSCameraUsageDescription</key>
    <string>This app requires access to the camera.</string>

React Native 0.70.4 (iOS)

Requisitos

  • Versão do sistema operacional iOS: 12.4 ou superior
  • Versão do Node: versão 18.12.0
  • Versão do Ruby: versão 2.7.5
  • Versão do React Native: versão minima 0.70.4
  • 36mb de espaço em disco

Instalação do Pacote

  • CocoaPods

Para adicionar o SDK ao seu projeto utilizando Cocoapods basta adicionar o seguinte comando ao seu Podfile:

Instalação em ambiente de desenvolvimento e testes
pod
use_frameworks! :linkage => :static
target 'NOME_DO_SEU_PROJETO' do
  pod 'CSLivenessSDKTec', :git => 'URL DO REPOSITÓRIO ENVIADO PELA CLEARSALE', :tag => '1.0.0-hml'
  pod 'CSLivenessSDK', :git => 'URL DO REPOSITÓRIO ENVIADO PELA CLEARSALE', :tag => '1.0.0-hml'
end

use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => true,
    :fabric_enabled => flags[:fabric_enabled],
)

# como definimos os frameworks como estaticos aqui precisamos configurar 
# o Sentry como dinâmico
dynamic_frameworks = ['Sentry']
  pre_install do |installer|
    installer.pod_targets.each do |pod|
      if dynamic_frameworks.include?(pod.name)
        puts "Overriding the dynamic_framework? method for #{pod.name}"
        def pod.dynamic_framework?;
          true
        end
        def pod.build_type;
          Pod::BuildType.dynamic_framework
        end
      end
    end
  end

  post_install do |installer|
    react_native_post_install(
      installer,
      :mac_catalyst_enabled => false
    )
    # configuração para uso no Mac com Apple Silicon
    __apply_Xcode_12_5_M1_post_install_workaround(installer)

    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
        config.build_settings['CODE_SIGN_IDENTITY'] = ''
      end
      case target.name
      when 'RCT-Folly'
        target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
        end
      end
    end
  end
end

Obs: Validar valores e versões do SDK de Produção. No entando, as demais configurações do Podfile seguem a mesma.

Configuração de Acesso à câmera

Instruções para configuração do framework no projeto:

  1. Essas linhas de código devem ser inseridas no arquivo info.plist do projeto iOS, para que possamos ter acesso ao uso da câmera.
  2. <key>NSCameraUsageDescription</key>
    <string>This app requires access to the camera.</string>

React Native

Instalação

O plugin está disponível em um repositório privado, e para sua utilização seguir o exemplo abaixo:


Adicionando configuração do repositório privado

1. Adicione ao seu projeto um arquivo .npmrc no mesmo diretório que está o package.json.

2. Dentro do .npmrc inclua o seguinte trecho:

@studio:registry=https://pkgs.dev.azure.com/CS-Packages/ID-Lab-PackagesSDK/_packaging/development/npm/registry/ 
registry=https://registry.npmjs.org                         
always-auth=true

; begin auth token
//pkgs.dev.azure.com/CS-Packages/ID-Lab-PackagesSDK/_packaging/development/npm/registry/:username= //Valor fornecido pela Clearsale
//pkgs.dev.azure.com/CS-Packages/ID-Lab-PackagesSDK/_packaging/development/npm/registry/:_password= //Valor fornecido pela Clearsale
//pkgs.dev.azure.com/CS-Packages/ID-Lab-PackagesSDK/_packaging/development/npm/registry/:email= //Valor fornecido pela Clearsale
//pkgs.dev.azure.com/CS-Packages/ID-Lab-PackagesSDK/_packaging/development/npm/:username= //Valor fornecido pela Clearsale
//pkgs.dev.azure.com/CS-Packages/ID-Lab-PackagesSDK/_packaging/development/npm/:_password= //Valor fornecido pela Clearsale
//pkgs.dev.azure.com/CS-Packages/ID-Lab-PackagesSDK/_packaging/development/npm/:email= //Valor fornecido pela Clearsale
; end auth token

3. Execute o seguinte comando para adicionar o plugin:

npm install @studio/react-native-csliveness@1.0.0

Iniciar

Importe o plugin no arquivo desejado

import { livenessRecognition, LivenessError } from '@studio/react-native-csliveness';

Siga o exemplo a seguir para chamar o Liveness SDK


    const clientId = CLIENT_ID;
    const clientSecret = CLIENT_SECRET;

    const [result, setResult] = useState('');
    const [image, setImage] = useState('');

    const callToSDK = async () => {

        try {

            const livenessResult = await livenessRecognition(clientId, clientSecret);

            if (!livenessResult) {
            throw new Error('No Result');

        }

        setImage(`data:image/png;base64,${livenessResult.image}`);
        setResult(`Real:${livenessResult.real}`);

        } catch (error) {

            if (error instanceof LivenessError) {

                setResult(`Error ${error.message}`);

            }
        }
    };

Aplicativo de Exemplo

Sample

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;

Algumas dessas informações podem vir a serem compartilhadas com nossas ferramentas de monitoria e error tracking.

Licença de Uso

Ao realizar o download e utilizar nosso SDK você estará concordando com a seguinte licença:

Copyright © 2024 ClearSale

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.