Thanks to the help of the new collaborator Chris Tacke, the Universal Bluetooth Beacon Library has evolved to its next level. Based on a modularized architecture, the library is now based on .NET Standard 1.3. Extensions provide the glue to the Bluetooth APIs of various platforms.
Currently, Windows 10 (UWP) and Android (Xamarin) are supported. The core library also works fine on iOS, Mac and Linux.
How does the new modular architecture work?
The Core library remains the most important part. It contains C# implementations of various beacon formats, including Eddystone™, an open Bluetooth® beacon format from Google, as well as proximity beacons comaptible to the iBeacon™ format by Apple.
The library parses the bytes of the Bluetooth advertisment frames and manages the beacons discovered so far. As a result, a current list of nearby beacons is always accessible to your app.
The UWP and Android extension libraries provide the interface to the Bluetooth implementations of the operating systems. These libs parse the data received through the platforms and pushes it into the cross-platform processing core of the library.
I’ve designed the NuGet package in a way so that your development environment automatically chooses the correct packages for your platform. Therefore, the library is a single NuGet package, which you can easily add to your app through e.g., the Visual Studio NuGet Package Manager.
For more background on the beacon standards, check my previous blog posts How to Parse Bluetooth Beacons and the Video: Everything You Need To Know About Bluetooth 5 & Beacons.
In addition, the full download from GitHub comes with two new example apps, showcasing the use of the lib in a Xamarin app for Android and Windows 10.
Of course, the existing Windows 10 UWP app still exists and has been slightly updated to interface with the new library format. The new version 3.2.0 is also already available for free from the Windows Store.
Recently, Google has also introduced another new frame type: Eddystone-EID transmits an encrypted ephemeral identifier. I’ve added a C# implementation that recognizes and parses the frame contents. In a future version, the library might also add support for the en/decryption of the broadcasted ephemeral ID.
It’s amazing to see the power of the open source community. Advancing the cross-platform Universal Beacon Library together with other experienced developers around the world like Chris Tacke ensures that future apps can get even more interoperable, improving technology accessibility for users.
Multiple next steps have been identified for the library. These include:
- Platform integration for iOS, plus a Xamarin iPhone sample app.
- Cryptography integration of the Eddystone EID frame.
- Possibly an implementation of the Eddystone Configuration GATT Service, which would also enable the library to become an official and listed full implementation of the Google Eddystone specification.
- Feature parity of the Xamarin sample apps with the UWP example.
If you’d like to get involved, you’re welcome to submit a pull request to the library or to apply to become a contributor. To test the library, simply clone the latest sources from the master branch!