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:
- Produção -
production
- Sandbox -
sandbox
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:
- location - Captura de dados de geolocalização do device
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:
- location - Captura de dados de geolocalização do device:
<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 |