I built the Campus Communications application as a proof of concept application for Highbury College to show how Beacons could be used in a college environment to improve communications with students.
The twelve beacons were placed around the college in various locations e.g in the library, dining hall, student union etc. Anyone (staff or students) who has installed either of the two native applications on their phone/tablet are able to receive notifications as they move within range of these beacons. For example, a student entering the library might receive a notification such as "Welcome to the Library. This Thursday at 8.00 PM we have a book signing session by J.K Rowling" or, of more interest to the average student perhaps, on entering the student union bar they might receive a notification such as "Happy Hour tonight 9.00 PM - 10.00 PM".
The system was made up of the following parts:
- A Parse back-end database
- An Angular.js front-end to that Parse database
- Twelve Estimote Beacons
- A native Highbury Beacons iOS App
- A native Highbury Beacons Android App
Once the application has been installed and run once on the student's phone it periodically scans for our twelve beacons. The application does this in background, i.e it does not need to be running in foreground to work. The app has a single screen showing a switch which allows the user to switch off the notifications at any time if they wish to do so.
When the application detects a beacon it retrieves its beacon number (I configured the beacons with numbers 1-12). It then makes a call to the Parse back-end database to retrieve the notification text for that particular beacon, and as long as that text is still valid (the text has an expiration date associated with it), a notification then appears on the device, containing that text.
I provided Highbury a URL and sign-in credentials which allow them to maintain this back-end beacon table and edit the text notifications as and when they need to. Rather than have them look at the slightly crude data browsing feature which you get with Parse, I had a colleague built a very nice web front-end application using Angular.js which is what Highbury see and use.
As far as the end-user is concerned the app consists of very simple master-detail notifications screens and a settings screen containing a switch allowing them to turn the beacon detection on or off. Behind the scenes, the app is using Bluetooth Low Energy calls to detect the beacons and Parse API calls to get to our cloud-based beacon table and retrieve the text values. The two apps - for iOS and Android - were been developed in Objective C and Java respectively.
Below are some screenshots of the application running on an iPhone along with a screenshot of the back-end Parse DB and the dashboard.