Implementação
Pré-requisito para startDeviceScan
O método startDeviceScan requer um token. Este token é temporário e deve ser gerado no seu backend por meio de uma requisição server-to-server para a nossa API antes de chamar o método do SDK.
Detalhes do Endpoint:
- Método: POST
- Path:
/device_scan/token - Sandbox URL:
https://d.sandbox.viewpkg.com/device_scan/token - Production URL:
https://d.viewpkg.com/device_scan/token
Headers:
{
"Authorization": "YOUR_DEVICE_SCAN_API_KEY"
}
Body:
{
"session_id": "unique_session_id"
}
A resposta bem-sucedida desta API conterá o token que você deve repassar ao método startDeviceScan.
O método de device scan pode ser executado de forma assíncrona. Portanto, não é necessário bloquear a thread principal para aguardar a resolução deste método. O usuário pode interagir normalmente com o app enquanto o device scan é processado em segundo plano.
Recomendamos que o método de device scan seja executado o mais cedo possível. Como ele pode precisar de mais tempo de execução para coletar todos os dados, esta chamada antecipada é recomendada para que as informações mais completas do dispositivo sejam extraídas.
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:qitech_device_scan/qitech_device_scan.dart';
final _qitechDeviceScanPlugin = QitechDeviceScan();
// Etapa 1: Gerar o token temporário via requisição server-to-server
Future<String?> fetchDeviceScanToken(String sessionId) async {
final response = await http.post(
Uri.parse('<DEVICE_SCAN_API_URL>'),
headers: {
HttpHeaders.authorizationHeader: '<API_KEY>',
HttpHeaders.contentTypeHeader: 'application/json',
},
body: jsonEncode({'session_id': sessionId}),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
return data['token'] as String?;
}
return null;
}
// Etapa 2: Inicializar o SDK com o token obtido
final sessionId = '<SESSION_ID>';
final token = await fetchDeviceScanToken(sessionId);
if (token == null) {
print('Failed to fetch device scan token');
return;
}
final result = await _qitechDeviceScanPlugin.startDeviceScan(
token: token,
environment: CaaSEnvironment.sandbox,
sessionId: sessionId,
eventType: '<EVENT_TYPE>',
eventId: '<EVENT_ID>',
);
print('Device Scan result: $result');
Flutter Setup
Para utilizar o plugin do device scan, os seguintes passos são necessários:
Instalação
Inicialmente, é necessário executar o seguinte comando para instalar o plugin:
flutter pub add qitech_device_scan
O comando deve instalar a versão mais recente, que pode ser verificada em seu arquivo pubspec.yaml:
dependencies:
qitech_device_scan: ^1.0.0
Importação
Agora, basta importar o pacote para começar a utilizá-lo:
import 'package:qitech_device_scan/qitech_device_scan.dart';
Android Setup
Adicionar a referência do repositório android da Qi Tech em seu arquivo build.gradle:
allprojects {
repositories {
maven { url 'https://sdks.zaig.com.br/' }
...
}
}
Inicializar o serviço de AdMob ao adiconar o seguinte código em seu AndroidManifest.xml:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="<ADMOB_APP_ID>"/>
Caso não possua um ADMOB_APP_ID, entre em contato com o suporte.caas@qitech.com.br.
iOS Setup
Adicionar a referência do repositório iOS da Qi Tech em seu arquivo Podfile:
source 'https://cdn.cocoapods.org/'
source 'https://github.com/ZaigCoding/iOS.git'
Instalar as dependências diretamente através do cocoapods:
cd ios
pod install
ou através do flutter:
flutter build ios