Designing magical experiences for your customers in the smartphone area is inseparably tied with creating a mobile application that is aware of a user’s context. You could use a museum application (e.g Guggenheim), for instance, to push content to a visitor depending on what artwork they are closest to. A shop application (e.g Tesco) could send your guests discounts, coupons, and special promotions based on information about the department that the shopper is in. The list goes on, but all of these use cases prove that beacon technology is a great solution to bind the physical world (shops, departments, exhibits) with mobile applications — by providing proximity information. At Estimote, we want to make sure you succeed in creating context aware applications, which is why today we are officially launching Proximity SDK for iOS and Android.
Yes, this means that Estimote Monitoring, the most reliable notification solution, is now available on Android.
Proximity SDK provides context to your apps in a super-easy way. You no longer need to spend time on understanding either beacon physics or different packet types to correctly react to users’ moving around your venue. With this SDK we want to let you build on our experience in recognizing the right context, to let you focus on creating magical experiences for the users of your app.
Why should you use it?
Reliability. To make sure that you are always capable of consuming a user’s proximity in a predictable, reproducible manner
Ease of use. Proximity SDK is focused on using beacon signals easily and providing a reliable app experience. That’s all it does.
Reliability
Under the hood, Proximity SDK uses Estimote Monitoring, Estimote’s algorithm for more reliable enter/exit reporting. This full stack solution, originating from the beacons’ hardware, continuing with their firmware and handled by the mobile SDK, provides enter and exit notifications where and when you really expect them.
We have verified that our solution lets us achieve amazing results and that is why we have enabled it by default in Estimote Beacons and built the Proximity SDK upon Estimote Monitoring.
We are happy to also announce that Proximity SDK brings the most reliable notification solution to Android phones! We now provide a consistent experience on iOS and the most popular Android phones, updated to work smoothly with the latest release of Android OS.
Ease of use
With Proximity SDK, you’re getting a short and consistent API that is:
easy to learn - you won’t need to spend much time to understand and get familiar with it.
sufficiently powerful - SDK contains functionality that you will actually need, no less and no more.
Our experience with proximity deployments helped us design an API which works well in many situations. For example, it may be convenient to assume there’s always just one beacon nearby, but in real-world conditions, signals can overlap, interfere with one another, etc. Our new API is designed to help you gracefully handle those situations, and make your beacon integration successful despite the complexities of the radio waves and the physical world.
Due to these advantages in our API, it will be easy for you to use and integrate Proximity SDK into your own app.
Attachment-based identification
Details of each of your Estimote devices are available in Estimote Cloud. Each device has a unique identifier, but remembering it and using it for every one of your devices can be challenging. This is why Proximity SDK uses attachment-based identification. Imagine you have two beacons, and in Estimote Cloud you tag them with an attachment/JSON: one as blueberry_desk, one as mint_desk, and both as venue = office.
In the SDK, you can now say, “monitor for the blueberry_desk and tell me when I enter and exit its proximity” and “monitor for venue, tell me when I enter/exit its proximity and which venue that is”
Here’s how you can do this using our iOS SDK
ESTCloudCredentials.setUpSharedInstance(appID: yourAppIDGoesHere, appToken: yourAppTokenGoesHere)
self.proximityObserver = ESTProximityObserver(credentials: ESTCloudCredentials.shared!, errorBlock: { error in
print("Ooops! \(error.localizedDescription)")
})
let blueberryZone = ESTProximityZone(range: ESTProximityRange.custom(desiredMeanTriggerDistance: 0.5)!,
attachmentKey: "blueberry_desk")
blueberryZone.onEnterBlock = { attachment in
print("Currently, you are within blueberry_desk zone")
}
blueberryZone.onExitBlock = { attachment in
print("You are no longer within blueberry_desk zone")
}
let midVenueZone = ESTProximityZone(range: ESTProximityRange.custom(desiredMeanTriggerDistance: 1.5)!,
attachmentKey: "venue")
midVenueZone.onEnterBlock = { attachment in
print("Currently, you are within venue zone")
}
midVenueZone.onExitBlock = { attachment in
print("You are no longer within venue zone")
}
self.proximityObserver.startObserving([blueberryZone, midVenueZone])
And our Android SDK
proximityObserver = ProximityObserverFactory().create(applicationContext, EstimoteCloudCredentials(YOUR_APP_ID, YOUR_APP_TOKEN))
val proximityRule0 = proximityObserver.ruleBuilder()
.forAttachmentKey("blueberry_desk")
.withOnEnterAction{
attachment ->
print("Currently, you are within blueberry_desk zone")
}
.withOnExitAction{
print("You are no longer within blueberry_desk zone")
}
.withDesiredMeanTriggerDistance(0.5)
.create()
val proximityRule1 = proximityObserver.ruleBuilder()
.forAttachmentKey("venue")
.withOnEnterAction{
attachment ->
print("Currently, you are within venue zone")
}
.withOnExitAction{
print("You are no longer within venue zone")
}
.withDesiredMeanTriggerDistance(1.5)
.create()
proximityObserver
.addProximityRules(proximityRule0, proximityRule1)
.withBalancedPowerMode()
.startWithSimpleScanner()
Another benefit of this approach is that when you change your mind and want to replace one beacon with another, all you need to do is reassign JSON attachments in Estimote Cloud. You don’t even need to connect to the beacon or rebuild the app!
Software-defined range
Proximity SDK lets you “consume” beacon signals at different ranges. The range where you get the notification doesn’t depend on packet broadcasting power anymore — you can even use a single beacon to trigger notifications at far, medium and near ranges. Previously, you would probably use a beacon per range (three in this example).
Give it a try and let us know what do you think!
You can find Proximity SDK for both iOS and Android on Github with sample apps that help you get started.
Share your thoughts on our forums or drop us an email