2. Overview
• A quick overview of beacon technology
• What are context aware apps?
• What is iBeacon?
• What is Eddystone?
• Demos
3. What are beacons
• Bluetooth LE devices
• Broadcast a signal at a defined interval with a
defined data packet
• They don’t rely on a client connection, just a
regular, public broadcast
• Low power - some run off USB, some run of
batteries with lifetimes in months to years
4. What are context aware
apps?• Context aware apps are aware of some kind of
contextual information provided by the devices
location relative to the beacons
• Better than GPS as this can work indoor as well as
out
• Context is based off the location of a beacon, and this
is not necessarily a fixed point
• Context is defined by an multi part id
• Beacons broadcast a signal strength indicator so the
device can get an approximate distance based off
the received signal strength
5. What apps can you build
to take advantage of
this?• Museum guide - app knows which exhibit you are
standing next to and plays the correct audio
• Stadium location - app can pinpoint your location
and direct you to your seat, and let you know when
a beer seller is close by
• Shopping - notifications of special offers when you
are next to the items on offer
• Respond to indoor location - turn your lights off
when you put your phone down on your bedside
table, notify friends when you are home safe
6. Problems!
• Security - anyone can read your beacon by
scanning for Bluetooth devices and spoof your
id
• Power - some beacons run off the mains so
need socket, battery powered ones will die
and need replacing
• Accuracy - not very, for example in a busy
location people can decrease signal strength
7. What are iBeacons?
• Apple’s beacon specification
• Message has an Id, version
(major, minor), measured
power
• Multiple iBeacons can have
the same Id, versions can be
used to distinguish different
iBeacons
8. How do they interact with
your iOS app?• Apple defines an API to interact
with iBeacons as part of
CoreLocation
• Apps can register to monitor a
region - all beacons with a given
Id
• Monitoring notifies when an
iBeacon moves in or out of
range
• Monitoring can happen in the
background even if your app is
terminated and will launch your
app
• Once your app is in the
foreground, you can range the
iBeacons to get their
proximity/distance as it changes
9. What is Eddystone?
• Google’s beacon specification - recently
announced and open source
• Broadcasts one of two possible message
formats
• Eddystone UID broadcasts a UID and a
version
• Eddystone URL broadcasts a URL (limited
length)
• Eddystone TLM goes alongside one of the
other 2 formats and provides telemetry
• Beacon broadcasts can wake your Android
app up
10. Which one is better?
• Eddystone URL allows discovery - can be detected
by Chrome instead of a custom app
• Downside is spamming with too many URLs
• Apple provides OS level interaction with iBeacons so
can wake your iOS app up - iBeacons can work on
Android with manufacturers SDKs but can’t wake
your app up
• Eddystone can interact with the latest Google Play
services and wake your Android app up, but not an
iOS app
• In the future beacons could broadcast multiple
packets to wake apps up on both platforms
11. Using beacons with
Xamarin
• iBeacons on iOS is available in CoreLocation
• Eddystone on Android is available in Google
Play Services 7.8
• Google is releasing a Nearby API for iOS and
Android that supports Eddystone on both
platforms - no Xamarin binding yet
• Estimote (a beacon vendor) has a Xamarin
component for iOS and Android that supports
iBeacon, needs to be updated to support
Eddystone
Install Chrome on iOS, Google Physical Web on Android
Just like a lighthouse or other signaling beacon - hence the name.
Interval is hardware configured
Packet is defined by standards - iBeacon and Eddystone are both standards
Very low power - coin cell battery can last for years depending on signal strength and interval
Signal can be pretty strong - up to 100m is normal, some do 500m
GPS can provide some context, rough location, speed etc.
Beacons can provide more including fine grained location inside, proximity to well know points that are not fixed in location etc. E.g. painting or exhibits in a museum, vendors at events.
By monitoring the distance to a beacon an app can act accordingly
Security can be a problem for payments - another beacon can broadcast the same id and the wrong person pays. Some vendors have a secure ID system that needs an internet connection to decrypt
Battery is an issue with large installations - imaging having to replace them regularly in an art gallery where they would be hidden behind pictures.
Not accurate with people in the way - a problem in busy areas like shops, museums and art galleries. Brooklyn Museum has a great article on this.
Apple recommends 100ms broadcast interval but doesn’t enforce it
The Id is a 128bit UUID, version is 2 16-bit integers for major and minor
Multiple beacons with the same Id can be used to indicate the same thing to allow discovery over a wider area than the broadcast power of a single iBeacon
Can only register up to 20 regions made up of id, or id/major or id/major/minor. Normal usage would be things like id for a department in a store, major for an aisle and minor for an area in the aisle
Monitoring detects iBeacons moving into an our of fixed ranges. Once your app is in the foreground you can range the iBeacons to get notifications of distance changes.
The iBeacon message contains the measured power. The API provides a value for the RSSI - relative signal strength indicator. This is the power detected by the iOS device and can be used to calculate the approximate distance.
Distance is only approximate and is based on assuming empty air - things in the way can reduce the detected signal - furniture, people etc.
Ranging will call a method regularly when your app is in the foreground to provide the updated distance.
Eddystone UUID (referred to as a namespace) broadcasts a 10 byte ID and 6 byte instance ID - usage is multiple beacons can share the namespace for one area and with different instances to define different beacons for more accurate context.
Eddystone URL broadcasts a URL but is limited to 17 bytes with some abbreviations allowing longer (e.g. one bye can replace .com/)
Eddystone TLM sends things like battery life remaining, up time etc.
URL allows discovery - can drive people to your app. URL appears in chrome, but nothing to stop you being spammed, especially in a potentially busy place like a shopping centre.
Eddystone needs latest google play services - only been out for a week
No one standard can work in the background on both devices
Eddystone URL - Blueberry for URL
Green for dodgy URL
iBeacon - white for monitoring - show Xamarin code