Visão Geral da Evolução do SDK
A migração de versões mais antigas do card.io iOS SDK, como a 5.4.1, para iterações recentes envolve uma série de ajustes e melhorias. Este guia detalha as alterações críticas, procedimentos de atualização e solução de problemas comuns, garantindo uma transição suave para aproveitar funcionalidades atualizadas e correções de estabilidade.
Análise das Alterações nas Versões
Correções e Melhorias na Linha 5.4.x
A versão 5.4.1 focou em resolver falhas na compilação de projetos Objective-C via CocoaPods. A versão 5.4.0 introduziu métodos com assinaturas específicas para evitar conflitos de nomes, adicionou arquivos .m para mapeamento de módulos em CocoaPods e atualizou o previewLayer de CardIOViewStream para CALayer, além de remover avisos depreciados.
Pré-requisitos e Desenvolvimentos Subsequentes
Versões anteriores como as séries 5.3.x e 5.2.x trouxeram correções de vazamento de memória e suporte ao Carthage, exigindo o vínculo do framework Accelerate. A partir da versão 5.0.0, foram adicionados recursos como escaneamento automático da data de validade e a remoção de propriedades obsoletas.
Preparação do Ambiente de Desenvolvimento
Antes de iniciar a migração, verifique os seguintes requisitos:
- Xcode 7.0 ou superior (necessário desde a versão 5.2.0 para suporte a Bitcode).
- Sistema operacional iOS 5.0 ou superior.
- Frameworks do sistema vinculados:
Accelerate,OpenGLES,Security, entre outros.
Certifique-se de que as bibliotecas estáticas (libCardIO.a, libopencv_core.a, libopencv_imgproc.a) e os cabeçalhos estejam atualizados. Etapas da Migração
Atualização da Integração do SDK
Para usuários do CocoaPods, atualize a versão no Podfile e execute pod update. Para integração manual, substitua os arquivos de biblioteca estática e cabeçalhos pelos mais recentes.
Adaptação à Nova API
Métodos de classe e propriedades foram relocados. Funções de verificação e consulta agora residem em CardIOUtilities em vez de CardIOPaymentViewController.
Exemplo de Adaptação de Código
Código Legado (pré-5.4.0):
// Verificação direta no view controller de pagamento.
BOOL estaHabilitado = [CardIOPaymentViewController canReadCardWithCamera];
NSString *versaoSDK = [CardIOPaymentViewController libraryVersion];
Código Moderno:
// Utilitários encapsulam a lógica de verificação.
BOOL leituraPossivel = [CardIOUtilities confirmarDisponibilidadeCamera];
NSString *versaoAtual = [CardIOUtilities obterVersaoBiblioteca];
Note a mudança no nome das classes e métodos, além da lógica encapsulada em uma classe de utilitários dedicada.
Ajustes nos Vinculadores de Framework
Adicione explicitamente o framework Accelerate ao projeto, pois é uma dependência obrigatória a partir da versão 5.2.2.
Resolução de Problemas Comuns
Erros de Símbolos Não Definidos
Se o linker reclamar de símbolos ausentes (ex: _OBJC_CLASS_$_CardIOUtilities), confirme que todas as três bibliotecas estáticas principais estão incluídas na fase "Link Binary With Libraries". Adicionalmente, adicione -lc++ aos "Other Linker Flags" nas configurações de build.
Falhas em Tempo de Execução Relacionadas à Câmera
Queda de aplicativo ao tentar escanear indica possível falta de permissão. Certifique-se de declarar o propósito do uso da câmera adicionando a chave NSCameraUsageDescription ao arquivo Info.plist. Use sempre [CardIOUtilities confirmarDisponibilidadeCamera] como verificação prévia.
Avisos do Bitcode
Para resolver avisos de bundle Bitcode, utilize o Xcode 7.0 ou posterior e habilite a opção "Enable Bitcode" nas configurações de build do seu target.
Recomendações de Implementação
Otimize a experiência do usuário e o desempenho:
- Pré-carregue recursos usando
[CardIOUtilities prepararRecursos]para reduzir a latência no primeiro uso. - Personalize as instruções de escaneamento via a propriedade
instrucaoDeLeiturae ajuste o modo de detecção conforme o contexto do aplicativo. - Implemente um gerenciador dedicado (
ScannerCartaoManager) para isolar a lógica de escaneamento, utilizando protocolos para callbacks, garantindo um código mais limpo e testável.