Implementação
Antes de executar o exemplo abaixo, instale o plugin e aplique as configurações nativas de Android e iOS descritas em Instalaçã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');