- Attachments are now resolved from dedicated cloud
Beacon Attachment tab
, and no more from JSON strings coded as tags. - Deprecated
forAttachmentKey("yourKey")
when creatingProximityZone
. Now you need to use key:value pairs. Using deprecated method will work as callingforAttachmentKeyAndValue("yourKey", "")
- Hot-fix for
ProximityTrigger.Handler
where callingstop()
caused crash.
- Added
ProximityTrigger
for displaying notification from your app when user enters the proximity zone. It can be accessed usingProximityTriggerBuilder
.
-
Added a possibility to access entire beacon's attachment payload as Map using
getPayload()
method inProximityAttachment
(e.g. for use in onEnterAction). -
Marks
hasPair()
inProximityAttachment
as deprecated - get entire payload and use Map access methods instead.
ProximityObserverFactory
is nowProximityObserverBuilder
- Choosing whether to use simple scanner, or scanner wrapped in foreground service is now done in
ProximityObserverBuilder
using.withScannerInForegroundService(notification)
proximityObserver = ProximityObserverBuilder(applicationContext, credentials)
.withScannerInForegroundService(notification)
...
.build()
- Starting
ProximityObserver
is now done using.start()
:
observationHandler = proximityObserver
.addProximityZones(venueZone, beetrootDeskZone, lemonDeskZone)
.start()
- Added support for uploading telemetry data to Estimote cloud from beacons nearby. You can turn it on while building
ProximityObserver
object:
proximityObserver = ProximityObserverBuilder(applicationContext, credentials)
.withTelemetryReporting()
...
.build()
Note: You can see the telemetry data in your Estimote Cloud account for each individual beacon. There should be a chart with data such as light level, or temperature. Remember, that enabling telemetry data uploading will make device to use slightly more battery due to an additional scan for Estimote Telemetry
packets.
- Added a possibility to disable Analytics data cloud reporting (It is turned on by default):
proximityObserver = ProximityObserverBuilder(applicationContext, credentials)
.withAnalyticsReportingDisabled()
...
.build()
- Fixed #4 when disabled bluetooth were causing NPE.
- Added helper class to handle checking for requirements needed to scan for beacons. The class is
RequirementsWizard
, and it is located in our helper library. Add this line to yourbuild.gradle
file:
compile 'com.estimote:mustard:0.1.0'
Use it like this:
RequirementsWizardFactory.createEstimoteRequirementsWizard().fulfillRequirements(
applicationContext,
onRequirementsFulfilled = { /* Start proximity observation here */ },
onRequirementsMissing = { /* Handle missing requirements here */ },
onError = { /* Handle errors here */ }
)
Why it is in a separate library? Because it uses Android UI support libraries to display default dialogs for user to enable bluetooth, etc. And we don't want to force you to use them in your app. If you need a custom behavior, feel free to implement your own requirements checker.
- Added support for Android Oreo 8.1 (API 27)
- Added Analytics to the
ProximityObserver
.- Your Enter/Exit events are now reported for each beacon.
- You can check analytics data in Estimote
- Minor improvements to the scanning mechanism
- Introduced improvements to API. Some breaking changes appeared:
ProximityObserver.RuleBuilder
is nowProximityObserver.ZoneBuilder
ProximityObserver
has now methods:addProximityZone
instead ofaddProximityRule
ProximityObserver.ZoneBuilder
has fluent builder now.onExitAction
now returnsProximityAttachment
that was last visible.ProximityObserver.Handler
is now an interface.proximityRuleBuilder.withDesiredMeanTriggerDistance()
is now split into three methods:
inNearRange
inFarRange
inCustomRange(double)
with parameter in meters.
- Errors are now logged to Android logcat by default.
- Fixed the compilation error
unknown element: <uses-permission>
. There was a problem with wrong manifest merging. - Fixed problem when using
forAttachmentKey
was not triggering any actions - now it works properly.
- Added key-value tag support to
ProximityObserver