Getnet DocsGetnet Docs

Configure iOS Permissions

The Get Mini SDK requires specific iOS permissions and hardware protocol declarations to communicate with Bluetooth PIN pad devices. This guide explains how to configure your Info.plist with the required External Accessory protocols and Bluetooth privacy keys for device discovery and connection.

Understanding iOS External Accessory Requirements

iOS restricts communication with external Bluetooth hardware through the External Accessory framework. Unlike standard Bluetooth LE devices, payment card readers require explicit protocol declarations in your application’s Info.plist. Without these declarations, the SDK cannot discover connected PIN pads even when properly paired through iOS Settings. Your app must also request Bluetooth permissions to scan for and communicate with these devices.

Your application’s Bundle Identifier must be registered with Get Mini before configuring these permissions. The SDK license key is tied to your Bundle ID and will not function correctly without proper registration. Contact Get Mini support to register your Bundle Identifier before proceeding with development.

Declare External Accessory Protocols

The SDK communicates with PIN pads using the iOS External Accessory framework. You must explicitly list the protocol strings for the hardware models you intend to support. Add the key UISupportedExternalAccessoryProtocols to your Info.plist file and include the appropriate protocol strings based on your supported hardware vendors.

ManufacturerProtocol Strings to Add
ITOS / Castlescom.datecs.pinpad
INGENICOcom.ingenico.easypayemv.printer
com.ingenico.easypayemv.barcodereader
com.ingenico.easypayemv.spm-transaction
com.ingenico.easypayemv.spm-configuration
com.ingenico.easypayemv.spm-networkaccess
com.ingenico.easypayemv.spm-sppchannel
com.ingenico.easypayemv.spm-pppchannel
CUSTOS (Flypos)com.custos.bt
Spire SPm20com.thyron
Verifone e285com.verifone.pmr.xpi

If these protocols are missing, the SDK will return an empty list during device discovery, even if the PIN pad is correctly paired in the iOS Settings.

Example Info.plist Entry

<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>

Configure Bluetooth Privacy Keys

Since iOS 13, Apple requires explicit user consent for Bluetooth access with clear explanations of why your application needs this permission. The system displays these descriptions when the SDK first attempts to scan for PIN pad devices. Add both Bluetooth privacy keys to your Info.plist to support all iOS versions:

KeyDescription
NSBluetoothAlwaysUsageDescriptionA message explaining why the app needs Bluetooth (e.g., “This app requires Bluetooth to connect to the card reader for processing payments.”)
NSBluetoothPeripheralUsageDescription(Legacy) Required for compatibility with devices running versions older than iOS 13.

Example Info.plist Entry

<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>

Enable Background Modes (Optional)

By default, iOS terminates external accessory connections when your application moves to the background or the device screen locks. If your business requirements demand maintaining the PIN pad connection while backgrounded, enable Background Modes in your project capabilities.

Navigate to your target’s Signing & Capabilities tab in Xcode, click + Capability, add Background Modes, and select External accessory communication.

Using external accessories in the background significantly increases battery consumption. Only enable background mode if your application genuinely requires persistent reader connectivity. For most payment applications, foreground-only operation provides sufficient functionality with better battery life.

Troubleshooting Permission Issues

App Store Rejection for Missing PPID

When submitting your app to the App Store, Apple may request the PPID (Product Plan Identification) for the external accessories listed in your Info.plist. Contact Get Mini support to obtain the specific PPID documentation for your deployed terminal models. This is a standard Apple requirement for apps using the External Accessory framework.

PIN pad Not Discovered During Scan

If findBluetoothDevices returns an empty list despite the PIN pad being paired, verify the following: First, confirm the device appears as “Connected” in iOS Settings > Bluetooth. Second, ensure the protocol string in your Info.plist exactly matches the manufacturer-specific protocol from the table above (protocol strings are case-sensitive). Finally, verify your Bundle Identifier matches the one registered with Get Mini for your SDK license.

App Crashes When Scanning for Devices

Immediate app crashes during device discovery indicate missing Bluetooth privacy keys in Info.plist. iOS 13 and later require both NSBluetoothAlwaysUsageDescription and NSBluetoothPeripheralUsageDescription keys with non-empty string values. Add these keys before testing on physical devices.

Next Steps

With your permissions configured, you can now proceed to: