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

The SDK has the ability to scan the area for BLE devices, and present an UIAlertView to allow user selection of a found device.
The SDK must be told which device to filter for, how long to search for devices before presenting results, and what delegate to send the results to.
To accomplish this, you define the Service Characteristic of the NEO2, define your class as the delegate, and then enable the SDK device search. NOTE: The VP3600 does not have Service Characteristics you can filter for. For the VP3600, you must not define a service characteristic when using Automatic Location
First, make sure your class is defined as a delegate for the SDK

//Objective-C
@interface ViewController : UIViewController<IDT_NEO2_Delegate>
//Swift
class ViewController: UIViewController, IDT_NEO2_Delegate

Then execute the following code. In this example, we are asking SDK to search for 2 seconds for all NEO2 in the vacinity

//The first set of examples is filtering ON for all NEO2 BLE devices that are NOT VP3600
//The second set example is filtering OFF for locating VP3600
//Objective-C, search for VP3320, VP3350
NSString* SPS_SERVICE_3320 = @"49535343-FE7D-4AE5-8FA9-9FAFD205E455";
NSString* SPS_SERVICE_3350 = @"0783b03e-8535-b5a0-7140-a304d2495cb7";
[[IDT_NEO2 sharedController] setDelegate:self];
[[IDT_NEO2 sharedController] scanForBLEDevices:2.0 serviceUUIDs:@[[CBUUID UUIDWithString:SPS_SERVICE_3320],[CBUUID UUIDWithString:SPS_SERVICE_3350]] options:nil];
//Swift, search for VP3320, VP3350
let svc3320 = CBUUID.init(string: "49535343-FE7D-4AE5-8FA9-9FAFD205E455")
let svc3350 = CBUUID.init(string: "0783b03e-8535-b5a0-7140-a304d2495cb7")
let svcArray = Array<CBUUID>.init(arrayLiteral: svc3320, svc3350)
IDT_NEO2.sharedController()?.scan(forBLEDevices: 2.0, serviceUUIDs: svcArray, options: nil)
//Objective-C, search ANY device, including VP3600
[[IDT_NEO2 sharedController] setDelegate:self];
[[IDT_NEO2 sharedController] scanForBLEDevices:2.0 serviceUUIDs:nil options:nil];
//Swift, search ANY device, including VP3600
IDT_NEO2.sharedController()?.scan(forBLEDevices: 2.0, serviceUUIDs: nil, options: nil)

After the scan is complete, the SDK will return the alertView to the bluetoothPickerAlert. You simply show this view:

//Objective-C
- (void) bluetoothPickerAlert:(UIAlertView*)view{
[view show];
}
//Swift
func bluetoothPickerAlert(_ view: UIAlertView!) {
view.show()
}
}

Any device selected in that UIAlertView will be automatically connected. There is no further coding needed to process the selection, as the SDK is the delegate for that UIAlertView and will automtically process the selection.