Pular para o conteúdo principal

Importando a SDK

Remotamente

Iniciando a instalação

  pod init

Nosso SDK pode ser importado utilizando CocoaPods.

SDKVersão atual
ZaigIosOCRpod 'ZaigIosOCR', '~> 2.0.6'

Para iniciar a instalação, execute o comando ao lado na pasta raiz do seu projeto.

Adicionando a source no podfile

   source 'https://github.com/ZaigCoding/iOS.git'

O próximo passo é adicionar no arquivo podfile o source da QI Tech.

Adicionando o pod no podfile

  pod 'ZaigIosOCR', '~> <version>'

Por fim, basta adicionar o nome do pod de acordo com o formato ao lado.

Exemplo de podfile

  source 'https://github.com/ZaigCoding/iOS.git'
source 'https://cdn.cocoapods.org/'
target 'ExampleApp' do
use_frameworks!
pod 'ZaigIosOCR', '~> 2.0.6'
end

post_install do |installer|
installer.pods_project.targets.each do |target|
if ['DatadogCore', 'DatadogInternal', 'DatadogCrashReporting', 'DatadogLogs'].include?(target.name)
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
end
end
end
end
Atenção

Ao integrar dependências no iOS, pode surgir a necessidade de usar linkagem estática para algumas bibliotecas e dinâmica para outras. Essa configuração é relevante para garantir compatibilidade, evitar erros de build e otimizar o desempenho do projeto.

Linkagem Híbrida de Dependências (caso necessário)

A necessidade de linkagem híbrida surge porque algumas bibliotecas têm requisitos específicos, sendo que algumas precisam de linkagem estática para evitar conflitos internos e duplicação de símbolos e outras dependências podem precisar linkagem dinâmica, pois são projetadas para modularidade e compartilhamento entre projetos.

Diferenças Entre Linkagem Estática e Dinâmica

  • Estática (static_framework): O código da biblioteca é incorporado diretamente no binário final, reduzindo o tempo de carregamento em runtime e eliminando dependências externas durante a execução.
  • Dinâmica (dynamic_framework): A biblioteca é carregada em tempo de execução como um arquivo separado. Isso reduz o tamanho do binário final e facilita atualizações/modificações independentes.

Configurando linkagem híbrida no Podfile

...

use_frameworks! :linkage => :dynamic # CONFIGURANDO O MODO PADRÃO DE LINKAGEM PARA DINÂMICO

...

static_frameworks = ['framework_1', 'framework_2', ...] # INCLUIR TODAS AS DEPENDÊNCIAS QUE PRECISAM SER LINKADAS DE MODO ESTÁTICO
pre_install do |installer|
installer.pod_targets.each do |pod|
if static_frameworks.include?(pod.name)
def pod.static_framework?;
true
end
def pod.build_type;
Pod::BuildType.static_framework
end
end
end
end

Instalando as dependências

  pod install

Por fim, execute o comando pod install para baixar e instalar as dependências.

Permissões Necessárias

Para que a SDK possa acessar os recursos do dispositivo para coletar a foto, é necessário que sejam solicitadas permissões ao usuário.

No arquivo info.plist, adicione as permissões abaixo:

PermissãoMotivo
Privacy - Camera Usage DescriptionAcesso à câmera para capturar as fotos do documento.

Iniciando a SDK


import ZaigIosOcr

class ViewController: UIViewController, ZaigIosOcrControllerDelegate {

var zaigOcrConfiguration : ZaigIosOcrConfiguration?

override func viewDidLoad() {
super.viewDidLoad()
self.setupOcr()
}

func setupOcr() -> Void
{
// The environment can be 'Sandbox' ou 'Production'
let environment = ZaigIosOcrEnvironment.Sandbox

// MobileToken is the key sent to you by QI Tech. Each environment requires a different MobileToken.
let mobileToken = "YOUR_MOBILE_TOKEN_SENT_BY_QITECH"

// The documentFlow can be 'CnhFull' , 'CnhFrontAndBack' ou 'RgFrontAndBack'
let documentFlow = ZaigIosOcrDocumentFlow.CnhFrontAndBack

self.ocrConfig = ZaigIosOcrConfiguration(environment: environment,
mobileToken: mobileToken,
sessionId: "UNIQUE_SESSION_ID",
documentFlow: documentFlow,
backgroundColor: "#000000",
fontColor: "#FFFFFF",
fontFamily: .open_sans,
showIntroductionScreens: true,
logLevel: .debug
)
}

// Event where you intend to call QI Tech OCR View Controller - on this example, when the user press 'next' button

@IBAction func pressNext(_ sender: Any) {
let zaigOcrController = ZaigIosOcrController(ocrConfiguration: self.ocrConfig)
zaigOcrViewController.delegate = self
let zaigOcrViewController = zaigOcrController.getViewController()
present(zaigOcrViewController, animated: true, completion: nil)
}

// Do something if QI Tech OCR's SDK succesfully collected document picture
func zaigIosOcrController(_ ocrViewController: ZaigIosOcrController, didFinishWithResults results: ZaigIosOcrControllerResponse) {

}

// Do something if QI Tech OCR's SDK found any error when collecting document picture
func zaigIosOcrController(_ ocrViewController: ZaigIosOcrController, didFailWithError error: ZaigIosOcrControllerError) {

}

// Do something if the user canceled the picture collection on any steps
func zaigIosOcrControllerDidCancel(_ ocrViewController: ZaigIosOcrController) {

}
}

Para incorporar a SDK ao seu aplicativo você deve iniciar realizar a configuração do seu aplicativo de captura personalizado através da classe ZaigIosOcrConfiguration e depois instanciar o ViewController ZaigIosOcrController passando como argumento as configurações personalizadas.

Para iniciar o processo de análise de documento, basta chamar a função present para chamar o ViewController da QI Tech que realizará a coleta das imagens.

Importante implementar o Delegate responsável por receber os retornos em caso de sucesso, erro ou no caso de o usuário interromper a jornada em qualquer etapa da validação.

Ao lado temos um exemplo completo da implementação.

Atenção

Habilite o suporte as orientações Portrait e Landscape Right em sua aplicação para um funcionamento correto da SDK.

Mobile Token

Utilizamos um Mobile Token para permitir o acesso autenticado do seu aplicativo a nossa API. Ele provavelmente já foi enviada por e-mail para você. Caso ainda não tenha recebido o seu token, envie um e-mail para suporte.caas@qitech.com.br.

Nossa API espera receber o Mobile Token em todas as requisições ao nosso servidor vindas da SDK, portanto, este deve ser obrigatoriamente incluido como parâmetro de configuração através do método mencionado anteriormente.

Atenção

Você deve substituir <code>"YOUR_MOBILE_TOKEN_SENT_BY_QITECH"</code> com o Mobile Token recebido do suporte.