Hola!
Ahora que ya tengo un par de beacons funcionando, el siguiente paso es crear una app para ver como interactuar con los mismos. Para este ejemplo, crearé una app del tipo Xamarin Forms y haré la prueba compilando la app para Android (mi entorno de build and deploy para iOS lo tiene Luis)
Pues bien, nuestra solución de Xamarin Forms posee varios proyectos, el proyecto comun, y las implementaciones propias para Android, iOS y Windows Phone. En cada uno de los proyectos podremos agregar componentes externos que nos ayudarán a trabajar con los beacons. Una búsqueda rápida nos muestra que tenemos varios paquetes NuGet disponibles para trabajar con Estimote.
El primer paso será agregar el componente Estimote SDK for Android para el proyecto de Android. Una búsqueda en los componentes nos mostrará este componente.
La aplicación que haremos será del tipo Forms, con lo que si quieres implementarla en iOS deberás agregar el componente para iOS
El paquete nuget común que debemos agregar en la app de Forms y en los proyectos de Android e iOS, es ACR Estimote PlugIn for Xamarin
Volviendo al proyecto de Android, en el mismo debemos habilitar permisos para trabajar con BlueTooth
- BLUETOOTH
- BLUETOOTH_ADMIN
Y ahora ya es momento de agregar un par de líneas de código. En la app principal agregaremos un stack con 3 labels
- private Label _labelTitle;
- private Label _labelContent;
- private Label _labelStatus;
En el Start() de la app, inicializaremos la interacción con los Beacons (línea 48). En el caso de que todo funcione correctamente, nos suscribiremos a los eventos Raged y RegionStatusChanged (líneas 59 y 60)
Cuando la app detecte un beacon, recibiremos un mensaje con la información del mismo. Los beacons trabajan con un concepto que son las regiones (ver enlaces externos), una region puede estar definida con uno o más beacons. La principal forma de identificarlos consiste en 3 opciones
- With only UUID: it consists of all beacons with a given UUID. For example: a region defined with default Estimote UUID would consist of all Estimote Beacons with unchanged UUID.
- With UUID and Major: it consists of all beacons using a specific combination of UUID and Major. For example: all Estimote Beacons with default UUID and Major set to 13579.
- With UUID, Major and Minor: it consists of only a single beacon (Estimote Cloud prevents having two beacons with the same IDs). For example, one with default Estimote UUID, Major set to 13579 and Minor set to 2468.
En el evento RegionStatusChanged() capturaremos el cambio de region. La nueva region nos mostrará información del UUID, Major y Minor.
Con estas pocas líneas de código ya podemos probar nuestra app. En este momento, podremos desplegar nuestra app en el emulador. Aunque en el mismo veremos que el emulador de Visual Studio 2015 no soporta la emulación de BlueTooth.
Asi que, en el próximo post mostraré como funciona la app en un device real.
Saludos @ Madrid
-El Bruno
References
- El Bruno Estimote and Star Wars
- NuGet Estimote SDK for Xamarin Android
- NuGet Estimote SDK for Xamarin.iOS
- NuGet ACR Estimote PlugIn for Xamarin
- Estimote Beacons and Regions
2 thoughts on “[#XAMARIN] Primeros pasos con #Estimote Beacons”