Configurar Permissões do iOS
O Get Mini SDK requer permissões específicas do iOS e declarações de protocolo de hardware para se comunicar com dispositivos PIN pad Bluetooth. Este guia explica como configurar seu Info.plist com os protocolos do External Accessory necessários e chaves de privacidade do Bluetooth para descoberta e conexão de dispositivos.
Entendendo os Requisitos do External Accessory do iOS
O iOS restringe a comunicação com hardware Bluetooth externo por meio do framework External Accessory. Ao contrário dos dispositivos Bluetooth LE padrão, os leitores de cartão de pagamento exigem declarações de protocolo explícitas no Info.plist do seu aplicativo. Sem essas declarações, o SDK não consegue descobrir PIN pads conectados, mesmo quando devidamente pareados nas Configurações do iOS. Seu aplicativo também deve solicitar permissões de Bluetooth para buscar e se comunicar com esses dispositivos.
O Bundle Identifier do seu aplicativo deve ser registrado no Get Mini antes de configurar essas permissões. A chave de licença do SDK está vinculada ao seu Bundle ID e não funcionará corretamente sem o registro adequado. Entre em contato com o suporte do Get Mini para registrar seu Bundle Identifier antes de prosseguir com o desenvolvimento.
Declarar Protocolos do External Accessory
O SDK se comunica com PIN pads usando o framework External Accessory do iOS. Você deve listar explicitamente as strings de protocolo para os modelos de hardware que pretende suportar. Adicione a chave UISupportedExternalAccessoryProtocols ao seu arquivo Info.plist e inclua as strings de protocolo apropriadas com base nos fornecedores de hardware suportados.
| Fabricante | Strings de Protocolo para Adicionar |
|---|---|
| ITOS / Castles | com.datecs.pinpad |
| INGENICO | com.ingenico.easypayemv.printercom.ingenico.easypayemv.barcodereadercom.ingenico.easypayemv.spm-transactioncom.ingenico.easypayemv.spm-configurationcom.ingenico.easypayemv.spm-networkaccesscom.ingenico.easypayemv.spm-sppchannelcom.ingenico.easypayemv.spm-pppchannel |
| CUSTOS (Flypos) | com.custos.bt |
| Spire SPm20 | com.thyron |
| Verifone e285 | com.verifone.pmr.xpi |
Se esses protocolos estiverem ausentes, o SDK retornará uma lista vazia durante a descoberta de dispositivos, mesmo se o PIN pad estiver corretamente pareado nas Configurações do iOS.
Exemplo de Entrada no Info.plist
<key>UISupportedExternalAccessoryProtocols</key>
<array>
<string>com.datecs.pinpad</string>
<string>com.ingenico.easypayemv.printer</string>
<string>com.ingenico.easypayemv.barcodereader</string>
<string>com.ingenico.easypayemv.spm-transaction</string>
<string>com.ingenico.easypayemv.spm-configuration</string>
<string>com.ingenico.easypayemv.spm-networkaccess</string>
<string>com.ingenico.easypayemv.spm-sppchannel</string>
<string>com.ingenico.easypayemv.spm-pppchannel</string>
<string>com.verifone.pmr.xpi</string>
</array>Configurar Chaves de Privacidade do Bluetooth
Desde o iOS 13, a Apple exige o consentimento explícito do usuário para acesso ao Bluetooth com explicações claras do motivo pelo qual seu aplicativo precisa dessa permissão. O sistema exibe essas descrições quando o SDK tenta pela primeira vez buscar dispositivos PIN pad. Adicione ambas as chaves de privacidade do Bluetooth ao seu Info.plist para suportar todas as versões do iOS:
| Chave | Descrição |
|---|---|
NSBluetoothAlwaysUsageDescription | Uma mensagem explicando por que o aplicativo precisa do Bluetooth (ex: “This app requires Bluetooth to connect to the card reader for processing payments.”) |
NSBluetoothPeripheralUsageDescription | (Legado) Necessário para compatibilidade com dispositivos executando versões anteriores ao iOS 13. |
Exemplo de Entrada no Info.plist
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app requires Bluetooth to connect to the card reader for processing payments.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Bluetooth is required to communicate with the payment terminal.</string>Habilitar Background Modes (Opcional)
Por padrão, o iOS encerra as conexões de acessórios externos quando seu aplicativo vai para o segundo plano ou a tela do dispositivo é bloqueada. Se seus requisitos de negócios exigirem a manutenção da conexão com o PIN pad enquanto estiver em segundo plano, habilite Background Modes nas capabilities do seu projeto.
Navegue até a aba Signing & Capabilities do seu target no Xcode, clique em + Capability, adicione Background Modes e selecione External accessory communication.
O uso de acessórios externos em segundo plano aumenta significativamente o consumo de bateria. Habilite o modo em segundo plano apenas se o seu aplicativo realmente exigir conectividade persistente com o leitor. Para a maioria dos aplicativos de pagamento, a operação apenas em primeiro plano fornece funcionalidade suficiente com melhor duração da bateria.
Solução de Problemas de Permissões
Rejeição na App Store por PPID Ausente
Ao enviar seu aplicativo para a App Store, a Apple pode solicitar o PPID (Product Plan Identification) para os acessórios externos listados no seu Info.plist. Entre em contato com o suporte do Get Mini para obter a documentação de PPID específica para os modelos de terminais implantados. Este é um requisito padrão da Apple para aplicativos que usam o framework External Accessory.
PIN pad Não Descoberto Durante a Busca
Se o findBluetoothDevices retornar uma lista vazia apesar de o PIN pad estar pareado, verifique o seguinte: Primeiro, confirme se o dispositivo aparece como “Conectado” (Connected) em Configurações do iOS > Bluetooth. Segundo, garanta que a string de protocolo no seu Info.plist corresponda exatamente ao protocolo específico do fabricante na tabela acima (strings de protocolo diferenciam maiúsculas de minúsculas). Por fim, verifique se o seu Bundle Identifier corresponde àquele registrado no Get Mini para a licença do seu SDK.
Falha (Crash) no Aplicativo ao Buscar Dispositivos
Falhas imediatas do aplicativo durante a descoberta de dispositivos indicam chaves de privacidade do Bluetooth ausentes no Info.plist. O iOS 13 e posterior exigem as chaves NSBluetoothAlwaysUsageDescription e NSBluetoothPeripheralUsageDescription com valores de string não vazios. Adicione essas chaves antes de testar em dispositivos físicos.
Próximos Passos
Com suas permissões configuradas, você agora pode prosseguir para:
- Instalar o SDK - Configure seus Build Settings e Linker Flags
- Início Rápido: Sua Primeira Venda - Inicialize o manager e processe um pagamento