It’s been a while since we last talked about the Estimote SDK, so sit down, relax, and let us take you on a tour of what we’ve been up to these past few releases. Configurable stickers settings and iOS 9 compatibility aside, we’ve got better error reporting, improved performance, and lots of updates to the Android SDK.
Configurable stickers settings
Today, we’re releasing an updated Estimote iOS SDK (3.7.0), and a new Estimote Stickers firmware (SA1.1.0) to go with it—a tandem which unlocks the configuration options of our sticker beacons. You can now change their transmit power (to adjust their range) and advertising interval (to tweak their responsiveness).
The quickest way to go about that is to build yourself the Examples project bundled with the SDK, and use its Nearable Demos: Device Settings and Update Firmware. Estimote iOS app will soon be updated to utilize this latest SDK and let you manage your stickers’ settings in a more convenient way. Android SDK and app will join the club later this year.
Last but not least, keep in mind that increasing the broadcasting power and lowering the advertising interval will shorten the battery life of your stickers—which is one year on the default settings.
iOS 9 compatibility
If, just like us, you’ve been eagerly waiting to utilize all of the latest and greatest developer features tied to iOS 9 release, here’s some good news: Estimote SDK 3.7.0 was compiled with Xcode 7 and brings two of such additions with it!
First: bitcode support. Bitcode is a new technology from Apple that allows apps to be compiled, linked, and optimized on the App Store.
What does it mean? Say, if Apple comes up with a new optimization technique in their compiler in the future, they’ll be able to re-optimize your app without you having to submit a new binary to the App Store.
Taking advantage of bitcode requires all the frameworks in the app bundle to include bitcode. Guess what, Estimote SDK 3.7.0 does!
Second: we added nullability and generics annotations to our header files, which means Estimote SDK is now much easier to use with Swift 2.0: all the optional and non-optional values are clearly marked so, and containers now specify the type of the objects they hold. Compare:
func beaconManager(manager: AnyObject!,
didRangeBeacons beacons: [AnyObject]!,
inRegion region: CLBeaconRegion!) {
// ...
}
… to:
func beaconManager(manager: ESTBeaconManagerType,
didRangeBeacons beacons: [CLBeacon],
inRegion region: CLBeaconRegion) {
// ...
}
No more let beaconsReally = beacons as! [CLBeacon]
.
Better error reporting
In SDK 3.7.0, we’re also taking a first step towards better error reporting, with the goal of accelerating troubleshooting … nothing more frustrating than being stuck with a cryptic error message—or worse even, the app not behaving as expected despite there being no errors at all.
We’ve started with the ESTBeaconManager
. If you’ve ever wondered why your ranging delegate is not being called, only to find out that you forgot or misspelled the NSLocationWhenInUseUsageDescription
(tell us this is not a typo-magnet!) key in the Info.plist file, our SDK will now let you know that you’re trying to use ranging and/or monitoring without appropriate Location Services authorization.
Similarly, if you’ve ever experienced the cryptic “The operation couldn’t be completed. (kCLErrorDomain error 5.)” error message, our SDK will now let you know this means you’re trying to monitor for more than 20 regions at a time.
Last but not least, if you forget to implement the monitoringDidFailForRegion
or rangingBeaconsDidFailForRegion
delegates, and an error happens, our SDK will print the error in Xcode’s console instead … and gently remind you to implement them, so that you properly handle the errors and not leave the users of your app confused as to why it’s not working.
Better performance for large-scale deployments
With more and more at-scale beacon deployments rolling out, we’ve also comitted to making our SDK more robust, and perform better under heavy load. We’ve made numerousimprovements to Secure UUID, decreased SDK initialization time, and dramatically improved performance of collecting analytics.
Estimote Android stack, almost caught up!
Last but not least, we’ve been iterating a lot on our Androidstack in the past few months. We added support for Estimote Cloud in April; firmware update in May; nearables/stickers, Power Modes, and Flip to Sleep in June; Eddystone in July; our enterprise-security firmware in August; support for built-in temperature and acceleration sensors in September; and finally, just a few days ago, we brought Secure UUID compatiblity into our Android stack. We anticipate to have all the other features ported to Android by the end of the year.
It’s a wrap
Would now be a good time to recommend always keeping the Estimote SDK up-to-date, to benefit from the latest and greatest? Let us also remind you that we’re on CocoaPods, which makes updating the SDK as simple as pod update
.
Piotr Krawiec, Technology Evangelist, Estimote
& the Estimote SDK team