NAV
shell
  • Introdução
  • Soluções híbridas
  • Integração nativa
  • Implementação
  • O objeto ZaigIosDeviceScan
  • Permissões
  • Coleta de informações
  • Introdução

    Bem vindo ao manual de integração do Device Scan iOS da Zaig! Você deve utilizar o nosso Framework para coletar informações do celular e do comportamento do usuário em seu aplicativo e assim melhorar a assertividade das decisões.

    Ao lado, você pode observar uma implementação do Framework utilizando Swift. Com isso você possui exemplos para poder adequar ao caso de uso da sua aplicação.

    Problemas?

    Nós não somos uma companhia que se esconde atrás de uma API! Entre em contato com o nosso suporte e nós responderemos o mais rápido possível. Fique à vontade para nos ligar caso deseje uma resposta rápida!

    Adoramos Feedback

    Mesmo que você já tenha resolvido o seu problema ou que ele seja muito simples (Até mesmo um typo ou uma organização inadequada que você já entendeu), envie-nos um e-mail, assim nós tornamos a documentação cada vez mais prática e a próxima pessoa não vai precisar sofrer as dores que você sofreu!

    Ambientes

    Possuímos dois ambientes para os nossos clientes. A seleção é realizada por meio de enumerador repassado no construtor da classe ZaigIosDeviceScan, no momento, os seguintes ambientes estão disponíveis:

    Soluções híbridas

    Além da integração nativa em Swift, nossos SDKs são compatíveis com: Flutter, Ionic Cordova, Capacitor, React Native entre outras. Atualmente nossos SDKs híbridos estão documentados em um repositório privado. Caso tenha interesse nestas integrações, entre em contato com nosso suporte para liberarmos acesso.

    Integração nativa

    Remotamente

    Iniciando a instalação

      pod init
    

    Nosso SDK pode ser importado utilizando CocoaPods.

    SDK Versão atual
    ZaigIosDeviceScan pod 'ZaigIosDeviceScan', '~> 1.3.4'

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

    Adicionando a source na podfile

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

    O próximo passo é adicionar no arquivo podfile o soruce da Zaig.

    Adicionando o pod na podfile

      pod 'ZaigIosDeviceScan', '~> <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'
      target 'ExampleApp' do
        use_frameworks!
        pod 'ZaigIosDeviceScan', '~> 1.3.4'
      end
    

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

    Instalando as dependencias

      pod install
    

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

    Implementação

    import UIKit
    import ZaigIosDeviceScan
    
    class ViewController: UIViewController {
    
        var zaigDeviceScan : ZaigIosDeviceScan?
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.setupDeviceScan()
        }
    
        func setupDeviceScan() -> Void
        {
            // The environment can be 'sandbox' ou 'production'
            let environment = "sandbox"
    
            // MobileToken is the key sent to you by Zaig. Each environment requires a different MobileToken.
            let mobileToken = "YOUR_MOBILE_TOKEN_SENT_BY_ZAIG"
    
            // You must send the same session id in the moment of using the device scan and event analysis. It must be a key that uniquely identifies each user session in the app
            let sessionId = "62715840-068a-4ded-a4e2-a1ec83f857d4"
    
            do{
                self.zaigDeviceScan = try ZaigIosDeviceScan(environment: environment, mobileToken: mobileToken, sessionId: sessionId)
            }
            catch{
                print ("Error found when instantiating Zaigs DeviceScan")
            }
    
            let permissions = ["location"]
    
            do{
                try self.zaigDeviceScan?.requestPermissions(permissions: permissions)
            }
            catch{
                print ("Error found when requesting Zaigs DeviceScan's permissions")
            }
        }
    
        func onSuccess()
        {
            // Do something if Zaig DeviceScan's collectData method succesfully collected device data
        }
    
        func onError()
        {
            // Do something if Zaig DeviceScan's collectData method found any error when collecting device data
        }
    
        func collectZaigDeviceScanData()
        {   
            // If you have your customer's document number (CPF or CNPJ without dots, hyphen or slash), you must sent it to Zaig
            let documentNumber = "12345678900"
    
            // EventType must represent with type of interation the user had with your app on the moment that collectData method was called
            let eventType = "login"
    
            // EventId is your code that identifies the event sent to Zaig
            let eventId = "7038632032"
    
            do{
                try self.zaigDeviceScan?.collectData(documentNumber: documentNumber, eventId: eventId, eventType: eventType, onSuccessHandler: self.onSuccess, onErrorHandler: self.onError)
            }
            catch{
                print("Error found when collecting Zaigs DeviceScan data")
            }
        }
    }
    

    Para utilizar a SDK do Device Scan iOS, os seguintes passos são necessários:

    Inserir as autorizações no arquivo Info.plist Adicionar o framework ao projeto do aplicativo Ao iniciar a aplicação, instanciar a biblioteca, passando os parâmetros adequados Caso sua aplicação ainda não tenha solicitado as permissões ao usuário, requisitar as permissões ao usuário por meio da função requestPermissions do objeto previamente instanciado Coletar e enviar os dados por meio do método collectData

    O objeto ZaigIosDeviceScan

    Para utilizar o DeviceScan iOS da Zaig, é necessário importar o framework ZaigIosDeviceScan e então instanciar a classe ZaigIosDeviceScan que possui os seguintes parâmetros no construtor:

    nome tipo descrição
    environment String Um enumerador do ambiente onde a aplicação está sendo executada - sandbox ou production - caso um valor diferente seja enviado, uma exceção será gerada obrigatório
    mobileToken String A chave de cliente enviada pelo suporte da Zaig e que identifica que os dados coletados são provenientes do seu aplicativo. Por questões de segurança, caso esta chave esteja incorreta, os servidores da Zaig recebem mas não processam a chamada. obrigatório
    sessionId String O identificador da sessão, que será enviado também no momento da avaliação do evento (Transação, Onboarding, por exemplo), para cruzamento entre os dados do device scan e o evento a ser avaliado. obrigatório

    Permissões

    A SDK coleta dados do dispositivo e, de acordo com o funcionamento do sistema operacional iOS, necessita de permissões específicas para cada dado a ser coletado. De maneira a oferecer uma experiência customizada para os usuários da aplicação que possua a SDK embarcado, implementamos um mecanismo que utiliza os parâmetros passados pelo desenvolvedor para solicitar as permissões ao usuário, seguindo a seguinte mecânica:

    As permissões que forem enviadas como parâmetro do método requestPermissions, no formato de String, são solicitadas ao usuário - a menos que já tenham sido solicitadas anteriormente. O usuário, por meio de uma caixa de diálogo disponibilizada pelo próprio sistema operacional, é questionado sobre as permissões consideradas necessárias pelo framework. As permissões são então concedidas ou negadas e, no momento que o método collectData, este coletará apenas os dados cuja permissão foi concedida.

    Permissões utilizadas pela SDK

    Na versão atual da SDK, as seguintes permissões são utilizadas caso estejam disponíveis:

    Arquivo Info.plist

    O primeiro passo para disponibilizar permissões para a SDK é configurar a permissão no arquivo Info.plist da aplicação, utilizando a seguinte linha de código para cada uma das permissões desejadas:

    <key>NSLocationWhenInUseUsageDescription</key> <string>Adicionar a mensagem que você deseja que apareça para o usuário quando o iOS solicitar a permissão de acesso à geolocalização</string>

    Coleta de informações

    Para disparar a coleta e o envio de informações, é necessário chamar o método collectData. O método, além de capturar as informações do dispositivo, tem como objetivo mapear a jornada do cliente dentro da aplicação. É por esta razão que o método também aceita os campos eventId e eventType. Outro ponto importante é que o método envia as informações para o servidor da Zaig via request http assíncrono, e para isso, a notificação de sucesso ou erro da requisição é feita através de Completion Handlers. O método possui os seguintes parâmetros:

    nome tipo descrição
    documentNumber String O número do documento do usuário, caso disponível. (CPF/ CNPJ sem pontos, traços e barra)
    eventId String Um identificador do evento sendo reportado
    eventType String Um enumerador que define o tipo de evento sendo reportado (Exemplo: 'login') - Cuidado para que eventos muito similares sejam reportados com o mesmo enumerador, a fim de que inteligência possa ser construída sobre esses dados
    onSuccessHandler func() ‑> Void Função que será chamada no caso de sucesso no envio dos dados para o servidor da Zaig obrigatório
    onErrorHandler func() ‑> Void Função que será chamada no caso de erro no envio dos dados para o servidor da Zaig obrigatório