Configurar permisos de iOS
El SDK de Get Mini requiere permisos específicos de iOS y declaraciones de protocolo de hardware para comunicarse con dispositivos PIN pad Bluetooth. Esta guía explica cómo configurar tu Info.plist con los protocolos de External Accessory necesarios y las claves de privacidad de Bluetooth para el descubrimiento y la conexión de dispositivos.
Requisitos de External Accessory en iOS
iOS restringe la comunicación con hardware Bluetooth externo a través del framework External Accessory. A diferencia de los dispositivos Bluetooth LE estándar, los lectores de tarjetas de pago requieren declaraciones de protocolo explícitas en el Info.plist de tu aplicación. Sin estas declaraciones, el SDK no puede descubrir los PIN pads conectados, incluso cuando están correctamente emparejados a través de los Ajustes de iOS. Tu aplicación también debe solicitar permisos de Bluetooth para buscar y comunicarse con estos dispositivos.
El Bundle Identifier de tu aplicación debe estar registrado con Get Mini antes de configurar estos permisos. La clave de licencia del SDK está vinculada a tu Bundle Identifier y no funcionará correctamente sin el registro adecuado. Ponte en contacto con el soporte de Get Mini para registrar tu Bundle Identifier antes de continuar con el desarrollo.
Declarar protocolos de External Accessory
El SDK se comunica con los PIN pads utilizando el framework External Accessory de iOS. Debes listar explícitamente las cadenas de protocolo para los modelos de hardware que pretendes soportar. Añade la clave UISupportedExternalAccessoryProtocols a tu archivo Info.plist e incluye las cadenas de protocolo apropiadas basadas en los proveedores de hardware soportados.
| Fabricante | Cadenas de protocolo a añadir |
|---|---|
| ITOS | com.datecs.PIN pad |
| 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 |
Si faltan estos protocolos, el SDK devolverá una lista vacía durante el descubrimiento de dispositivos, incluso si el PIN pad está correctamente emparejado en los Ajustes de iOS.
Ejemplo de entrada en Info.plist
<key>UISupportedExternalAccessoryProtocols</key>
<array>
<string>com.datecs.PIN pad</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 claves de privacidad de Bluetooth
Desde iOS 13, Apple exige el consentimiento explícito del usuario para el acceso al Bluetooth con explicaciones claras de por qué tu aplicación necesita este permiso. El sistema muestra estas descripciones cuando el SDK intenta por primera vez escanear dispositivos PIN pad. Añade ambas claves de privacidad de Bluetooth a tu Info.plist para soportar todas las versiones de iOS:
| Clave | Descripción |
|---|---|
NSBluetoothAlwaysUsageDescription | Un mensaje que explica por qué la aplicación necesita Bluetooth (ej., “This app requires Bluetooth to connect to the card reader for processing payments.”) |
NSBluetoothPeripheralUsageDescription | (Heredado) Requerido para compatibilidad con dispositivos que ejecutan versiones anteriores a iOS 13. |
Ejemplo de entrada en 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 defecto, iOS finaliza las conexiones de accesorios externos cuando tu aplicación pasa a segundo plano o la pantalla del dispositivo se bloquea. Si tus requisitos de negocio exigen mantener la conexión del PIN pad mientras está en segundo plano, habilita Background Modes en las capabilities de tu proyecto.
Navega hasta la pestaña Signing & Capabilities de tu target en Xcode, haz clic en + Capability, añade Background Modes y selecciona External accessory communication.
El uso de accesorios externos en segundo plano aumenta significativamente el consumo de batería. Habilita el modo en segundo plano solo si tu aplicación realmente requiere conectividad persistente con el lector. Para la mayoría de las aplicaciones de pago, la operación solo en primer plano proporciona una funcionalidad suficiente con una mejor duración de la batería.
Resolución de problemas de permisos
Rechazo en la App Store por falta de PPID
Al enviar tu aplicación a la App Store, Apple puede solicitar el PPID para los accesorios externos listados en tu Info.plist. Ponte en contacto con el soporte de Get Mini para obtener la documentación específica de PPID para los modelos de terminales implementados. Este es un requisito estándar de Apple para las aplicaciones que utilizan el framework External Accessory.
PIN pad no descubierto durante el escaneo
Si findBluetoothDevices devuelve una lista vacía a pesar de que el PIN pad está emparejado, verifica lo siguiente: Primero, confirma que el dispositivo aparece como “Conectado” en Ajustes de iOS > Bluetooth. Segundo, asegúrate de que la cadena de protocolo en tu Info.plist coincida exactamente con el protocolo específico del fabricante de la tabla anterior (las cadenas de protocolo distinguen entre mayúsculas y minúsculas). Por último, verifica que tu Bundle Identifier coincida con el registrado con Get Mini para la licencia de tu SDK.
Fallo (bloqueo) de la aplicación al escanear dispositivos
Los bloqueos inmediatos de la aplicación durante el descubrimiento de dispositivos indican que faltan las claves de privacidad de Bluetooth en el Info.plist. iOS 13 y posteriores requieren las claves NSBluetoothAlwaysUsageDescription y NSBluetoothPeripheralUsageDescription con valores de cadena no vacíos. Añade estas claves antes de probar en dispositivos físicos.
Próximos pasos
Con tus permisos configurados, ahora puedes proceder a:
- Instalar el SDK - Configura tus Build Settings y Linker Flags
- Inicio Rápido: Tu Primera Venta - Inicializa el manager y procesa un pago