Gimbal bluetooth low energy devices by default configured with Series 10 Recommended configuration and in that mode, they are not discoverable with Core Location Services Framework functionality. Fortunately Gimbal proximity configuration allows you to change behaviour of the Gimbal device and makes it suitable to work with CL framework.
Add new configuration for your devices
To do that; first of all you need to create an account for Gimbal (https://manager.gimbal.com) When you create your account login to manager system and select “Proximity” on left side menu. At top of the page, press “Manage Configurations” button to create a new configuration. Give a name to your configuration and select “iBeacon” from the Beacon type combo box. When you change the beacon type you will see new extra fields for defining configuration.
“Proximity UUID” will be your key to search this iBeacon device. You can generate a UUID using different tools. Enter this value and define “Major”-“Minor” numbers for the device. Please note that, this values can be use to distinguish iBeacons, which share same UUID, from each other. Save your configuration.
Activate your Gimbal device.
Gently open the Gimbal device. Right up to the battery, you will see a small sticker (For Series 10 Devices) which contains device factory id.
Now you can go to “Beacons” page on the menu and activate your Gimbal. Enter name, factory id and other required information. At this step you can’t change Gimbal configuration but you can change it after activating the device. Activate your beacon using “Activate Beacon” action. On the list page, find little pen icon to edit your device’s definitions. Now you should be able to see “Assigned Configuration” combo box which contains your configurations.
Update your device and now you are done on configuration side.
Create a new Xcode project
Create a new Xcode project and add CoreLocation services framework “Linked Binary Library”. In your code implementation;
// Init your Core Location Manager
manager = [[CLLocationManager alloc] init];
// Create a UUID for your beacon. This UUID is the id that
// you have defined in your configuration.
uuid = [[NSUUID alloc]
// Create a beacon region for your device
beaconRegion = [[CLBeaconRegion alloc]
// Define your delegate class
manager.delegate = self;
Now, by implementing CLLocationManagerDelegate, you can listen beacon region enter/exit events.