IDTech iOS SDK Guide  1.1.166.045
API reference for NEO2
Connecting to NEO2 BLE With Manual Location

A version of NEO2 uses Bluetooth 4.0, also known as Bluetooth BLE (Bluetooth Low Energy). Unlike previous version of Bluetooth, with BLE you don't need to pair first through the Bluetooth setting on your iOS device. Once BLE scanning is enabled (via a SDK call), the Apple iOS scans and locates all BLE devices in range and presents a list for the SDK to choose from.

Unlike other operating systems where you can locate a BLE device by it's MAC address, due to security reasons Apple does NOT allow you to specify a device by this address. Instead, once a device is selected (by its friendly name), the Apple iOS will calculate a unique identifier (using parameters as the BLE device MAC address and the iOS device UID) so any further connections can be made directly to that device.

The NEO2 has a default friendly name of "Enzytek SPS_S". This is the default name the SDK uses to connect to the first NEO2 it encounters when no other friendly name is set in the SDK, or if the iOS generated device identifier is not provided.

To see the current default BLE name the SDK will use: device_getBLEFriendlyName (IDT_NEO2)

If the NEO2 friendly name is different than "Enzytek SPS-S", then the SDK can be set to recognize this new name: device_setBLEFriendlyName: (IDT_NEO2)

The API method to start BLE scanning : device_enableBLEDeviceSearch: (IDT_NEO2)

The very first time a NEO2 is used with a particular iOS device, it must be located by it's friendly name (as the device identifier hasn't been calculated by the iOS). If there are multiple NEO2's in range, it will stop at the first one located.

[[IDT_NEO2 sharedController] device_enableBLEDeviceSearch:nil];

Once the device is connected, its UUID can be retrieved with device_connectedBLEDevice (IDT_NEO2)

NSUUID* identifier = [[IDT_NEO2 sharedController] device_connectedBLEDevice];

That identifier can be stored in persistent memory and used for future connection to that device on the same iOS device

[[IDT_NEO2 sharedController] device_enableBLEDeviceSearch:identifier];

Scanning for BLE devices has an impact on battery life. Once you start scanning with IDT_NEO2::device_enableBLEDeviceSearch:identifier:(), it will continue to scan until either a device is found (friendly name match, or identifier match) OR a cancel BLE scanning is executed with device_disableBLEDeviceSearch (IDT_NEO2)

As an alternate indicator of scanning progress, and of any devices the iOS found, every BLE device located is reported back to deviceMessage delegate. This information can be used to confirm if a device is in range, verify the device friendly name, or display the iOS calculated UUID for that device. The message will start with "BLE DEVICE FOUND:...."

BLE DEVICE FOUND: Enzytek SPS_S (B469AGF6-A9C0-4FF2-AF2A-2ECD18EDB506)