Las balizas son transmisores Bluetooth que envían cierta información o datos publicitarios que pueden ser aceptados por los teléfonos inteligentes y tabletas dentro del alcance del transmisor. Por ejemplo, una parada de autobús inteligente puede transmitir horarios de rutas, una tienda puede enviar información de descuentos, un museo puede transmitir el horario de exposiciones, etc. Un mensaje transmitido como notificación puede contener un enlace a alguna página web.
El punto de partida del movimiento de los Beacons se considera el desarrollo de iBeacons por Apple, anunciado en 2013. Los Beacons son los dispositivos compatibles con la tecnología Bluetooth de baja energía. Su tarea es simple: enviar en serie paquetes de datos (paquetes de publicidad).
Este paquete consta de las siguientes partes:
- La identificación de la baliza de 3 componentes:
- UUID – 16 bytes. Por ejemplo, la identificación de su empresa, la identificación de la tienda minorista, etc.
- Mayor – 2 bytes. La identificación de la ciudad donde se encuentra su empresa / tienda.
- Menores – 2 bytes. Las coordenadas GPS de un lugar específico.
- TX Power – 1 byte. Este es un ejemplo de la intensidad de la señal. El modelo es la intensidad de la señal a una distancia de 1 metro de la baliza. Medidas en dBm.
La solución iBeacon solo era apta para iOS. Android tuvo que usar bibliotecas de terceros (como la biblioteca de balizas de Android).
- ¿Debo aprender Growth Hacking o Data Science a continuación?
- ¿Cuál es la mejor manera de aprender JAVA cuando conozco los conceptos básicos de It?
- ¿Cómo aprendió a escribir Helen Keller?
- ¿Puede una persona mayor de 18 años aprender un idioma extranjero con tanta fluidez que parezca un nativo?
- ¿Dónde puedo aprender la mejor fotografía en Calcuta?
Eddystone
En julio de 2015, Google anunció Eddystone, un formato abierto para balizas Bluetooth. Esta tecnología también es compatible con iOS, ya que el formato de los paquetes es similar al de iBeacon. Eddystone puede lanzar 4 tipos de paquetes:
- Eddystone-UID. Este es el mismo identificador, un análogo de iBeacon (UUID, Major, Minor). Eddystone-UID consta de las dos partes:
- ID de espacio de nombres (10 bytes)
- ID de instancia (96 bytes)
- Eddystone-EID cambia pseudoaleatoriamente su identificador encriptado AES de 8 bytes con un período de vida promedio establecido por el desarrollador cada pocos minutos. En cuanto al resto, actúa de manera similar al marco UID.
- La telemetría Eddystone-TLM accede a datos como la capacidad de la batería, el nivel de carga de la batería, la temperatura del dispositivo y la cantidad de paquetes enviados.
- Eddystone-URL transmite la URL a un sitio web protegido mediante SSL. Esta baliza es la base de la tecnología web física. El límite de URL es de 10 bytes.
Para las operaciones complejas que usan balizas, Google desarrolló una serie de soluciones independientes bajo la Plataforma Beacon de Google unificada. Incluye el formato Eddystone, el sistema de monitoreo y administración de Beacon Dashboard y las API para la interacción de las balizas (como la API de Google Beacon Proximity, la API de Mensajes Cercanos y la API de Lugares).
La API de Mensajes cercanos es la API para Android e iOS que escanea dispositivos, recopila datos de Google Cloud, Beacon y datos adjuntos.
Google Proximity Beacon API es la API para la administración y la administración de balizas. Brevemente, hay una nube de Google donde todas las balizas están registradas por sus identificadores. Puede usar una Proximity Beacon API o una aplicación Beacon Tools para esto. *
Con la ayuda de Google Beacon Platform, solo puede registrar balizas con el soporte de Eddystone. Después de eso, puede enlazar los datos a la baliza, los llamados Adjuntos. Con Beacon Dashboard no solo puede registrar balizas, sino que también puede monitorear y administrar fácilmente los archivos adjuntos a través de una interfaz utilizable. Después de esto, puede interactuar con otras balizas en los dispositivos utilizando la API de Mensajes Cercanos y la API de Lugares. API de Lugares es la IU, que permite vincular los metadatos de ID de Lugar a las balizas.
Cerca
Muy cerca se encuentra la tecnología de intercambio de datos de red. Esta herramienta ofrece contenido para los usuarios según su ubicación. A través de esta tecnología puedes implementar notificaciones conectadas al lugar oa una persona. Un aspecto importante es la interacción con los otros dispositivos. La API-UI de las conexiones cercanas API permite que una aplicación descubra fácilmente otros dispositivos de la red local, se conecte e intercambie mensajes en tiempo real. Cerca está disponible a partir de la versión de Android 4.4 (KitKat).
Web fisica
Physical Web es la capacidad de traducir una URL regular de una baliza a los dispositivos móviles con la ayuda de la tecnología Bluetooth Low Energy (BLE). El paquete Eddystone-URL se envía desde una baliza y es recibido por los dispositivos con Bluetooth activado. Por ejemplo, hay una baliza en una tienda que envía notificaciones con enlaces a través de bluetooth. Los usuarios al alcance de la baliza pueden acceder a esta notificación y seguir el enlace al sitio web de la tienda para ver todo el catálogo.
Physical Web es como un código QR, solo un código QR es pasivo y se debe encontrar primero, luego tiene que abrir una aplicación con una cámara, acercar, obtener la URL y seguir el enlace. En Physical Web, es suficiente estar al alcance de la baliza con el dispositivo Bluetooth activado.
Registro de balizas
Primero, ingrese a la consola de Google para desarrolladores, active la API de Mensajes Cercanos y la API de Google Proximity Beacon. Además, cree una clave de API para la aplicación que trabaja con la API de Mensajes Cercanos. Como limitación de la clave, seleccione Aplicación para Android. Después de eso, ingrese el nombre de la aplicación del paquete y la suma de comprobación del certificado SHA-1 para el ID de cliente OAuth 2.0. Luego, con la ayuda de la aplicación Proximity Beacon API o Android / iOS Beacons Tools, complete los siguientes campos:
- Identificación anunciada (obligatorio)
- Estado – activo / inactivo / obsoleto
- Estabilidad: estable / rara vez portátil expresa la consistencia esperada de la distribución.
- Latitud y longitud – un par de variables en grados. Tiene que ser compatible con la representación WGS84 si no se especifica. Los valores deben estar dentro del alcance normalizado.
- Nivel del piso interior: línea legible por humanos que indica el piso donde se encuentra la baliza.
- ID de lugar API de Google Places
- Descripción del texto
- Propiedades arbitrarias como pares clave / valor.
La ID anunciada debe ser un identificador correcto de Eddystone-UID de la baliza (16 bytes con 10 bytes de ID de espacio de nombres y 6 bytes de ID de instancia). El valor de ID tiene que ser base64 implementación de datos.
Las balizas se presentan como la fuente de baliza y se pueden registrar por medio de la fuente de registro beacons.register. Una baliza se puede registrar simultáneamente en un solo proyecto a la vez en la Consola de desarrolladores de Google. Un intento de registrar una baliza la segunda vez puede llevar a un error. Tan pronto como se registra la baliza, su campo AdvertisedID no se puede editar.
Un ejemplo de configuración con la ayuda de Google Proximity Beacon API:
Método HTTP:
ENVIAR
URL de solicitud:
https://proximitybeacon.googleapis.com/v1beta1/beacons:register
Cuerpo de solicitud: {
“advertisedId”: {
“tipo”: “EDDYSTONE”,
“id”: “Fr4Z98nSoW0hgAAAAAAAAg ==”
}
“Estado: Activo”,
“placeId”: “ChIJTxax6NoSkFQRWPvFXI1LypQ”,
“latLng”: {
“latitud”: “47.6693771”,
“longitud”: “-122.1966037”
}
“indoorLevel”: {
“nombre”: “1”
}
“expectedStability”: “STABLE”,
“description”: “Un faro de ejemplo.”,
“propiedades”: {
“posición”: “entrada”
}
}
Respuesta:
Si la acción ha tenido éxito, se indica mediante el código 200 estado de respuesta OK. El cuerpo de la respuesta contiene una representación JSON de una baliza con el valor de beacon.beaconName que se puede usar como enlace para la administración de la baliza.
Una vez registrada la baliza, no se puede eliminar del registro de Google Beacons. Hay dos formas de llevar la baliza a un modo fuera de línea:
- Invoque beacons.deactivate para eliminar temporalmente la baliza de un proyecto. Después de la desactivación, la API no devolverá ni los datos enlazados ni la información sobre la baliza. Para volver a poner la baliza en el modo de trabajo, invoque beacons.activate.
- Invoque beacons.decommission para desactivar permanentemente el ID de baliza del proyecto. No puede utilizar la ID que se ha asociado anteriormente. Pero puede asignar fácilmente una nueva ID a la baliza y volver a registrarla con una nueva ID.
Archivos adjuntos
Los datos genéricos, llamados Adjuntos, pueden estar vinculados a las balizas. Los archivos adjuntos son blobs almacenados en la nube escalable de Google. Actualmente, los archivos adjuntos solo están disponibles para el proyecto en el que se crearon, sin disponibilidad para otros proyectos.
Para crear un archivo adjunto, complete dos campos:
- namespacedType es la línea que consiste en el identificador de espacio de nombres, barra diagonal y tipo de datos. Por ejemplo, subrepticio-banjo-145 / string .
- Datos: representación base64 del tipo de datos, definida en el campo namespacedType. Por ejemplo, aGVsbG8gd29ybGQh
Para averiguar qué espacios de nombres están asociados a qué proyectos, puede invocar namespace.list.
Los archivos adjuntos pueden tener hasta 1024 bytes de longitud. Puede usar cualquier cadena que sea importante para su aplicación, por ejemplo, una identificación de parada de autobús, ubicación de la tienda, datos estructurados como JSON o un enlace a una base de datos externa.
Puede gestionar las balizas en el panel de Google Beacons. La ventana principal del tablero se ve así:
También puede cambiar la configuración de la baliza y agregar archivos adjuntos aquí.
Mensajes cercanos API
La API de Mensajes Cercanos es la API que permite que diferentes dispositivos publiquen y se suscriban a los mensajes, por lo que intercambian datos. La API de Messages cercanos es la parte de Nearby. Para el intercambio de mensajes, los dispositivos no deben estar en la misma red, sino que deben estar conectados a Internet. En este caso, el teléfono inteligente o tableta que va a recibir mensajes debe estar conectado a Internet. Las balizas no requieren conexión a internet. La API de Messages cercanos permite el intercambio de mensajes a través de Bluetooth, Bluetooth Low Energy, Wi-Fi e incluso ultrasonido, pero Bluetooth Low Energy permite minimizar el consumo de energía.
La API de Mensajes cercanos está disponible en dispositivos Android en la biblioteca de servicios de Google Play versión 7.8.0 y más reciente.
Configurando el proyecto:
En el build.gradle, agregue play-services-nearby como una dependencia:
dependencias {
compile fileTree (dir: ‘libs’, incluye: [‘* .jar’])
testCompile ‘junit: junit: 4.12’
compile ‘com.google.android.gms: play-services-nearby: 9.0.0’
}
En el manifiesto de AndroidManifest.xml, especifique API_KEY, almacenado en el almacenamiento de la consola de Google, en Credenciales:
<aplicación
Android: allowBackup = “true”
android: icon = “@ mipmap / ic_launcher”
android: label = “@ string / app_name”
Android: supportRtl = “true”
android: theme = “@ style / AppTheme”>
<metadatos
android: name = “com.google.android.nearby.messages.API_KEY”
android: value = “YOUR_API_KEY” />
En la aplicación, crea GoogleApiClient y agrega la API de mensajes cercanos:
void sincronizado privado buildGoogleApiClient () {
if (mGoogleApiClient == null) {
mGoogleApiClient = nuevo GoogleApiClient.Builder (este)
.addApi (Nearby.MESSAGES_API, nuevo MessagesOptions.Builder ()
.setPermissions (NearbyPermissions.BLE) .build ())
.addConnectionCallbacks (este)
.enableAutoManage (esto, esto)
.construir();
}
}
Para recibir mensajes de las balizas, primero suscríbase a ellas, en cualquiera de las dos formas siguientes:
- Si la aplicación está activa, como respuesta a la acción o evento del usuario.
- En el fondo, es decir, cuando la aplicación está inactiva.
Para analizar, use MessageListener:
MessageListener mMessageListener = new MessageListener () {
@Anular
public void onFound (mensaje de mensaje) {
String messageAsString = new String (message.getContent ());
Log.d (TAG, “mensaje encontrado:” + messageAsString);
Log.d (TAG, “espacio de nombres de mensaje:” + message.getNamespace ());
Log.d (TAG, “Tipo de mensaje:” + message.getType ());
}
@Anular
public void onLost (Mensaje)
String messageAsString = new String (message.getContent ());
Log.d (TAG, “Lost view of message:” + messageAsString);
}
};
Suscripción en modo activo
Cuando la aplicación se suscribe a los mensajes de las balizas en el modo activo. El escaneo se realiza continuamente hasta que la aplicación cancele la suscripción. Se recomienda que se use una suscripción de este tipo solo cuando la aplicación está activa, generalmente como respuesta a algunas acciones del usuario.
MessageListener mMessageListener = new MessageListener () {
@Anular
public void onFound (mensaje de mensaje) {
String messageAsString = new String (message.getContent ());
Log.d (TAG, “mensaje encontrado:” + messageAsString);
Log.d (TAG, “espacio de nombres de mensaje:” + message.getNamespace ());
Log.d (TAG, “Tipo de mensaje:” + message.getType ());
}
@Anular
public void onLost (Mensaje)
String messageAsString = new String (message.getContent ());
Log.d (TAG, “Lost view of message:” + messageAsString);
}
};
Opciones de SubscribeOptions = new SubscribeOptions.Builder ()
.setStrategy (Strategy.BLE_ONLY)
.construir();
Nearby.Messages.subscribe (mGoogleApiClient, mMessageListener, opciones) .setResultCallback (nuevo ResultCallback () {
@Anular
public void onResult (@NonNull Status status) {
si (status.isSuccess ()) {
Log.i (TAG, “Suscrito correctamente.”);
} else {
Log.e (TAG, “Falló la operación. Error:” +
NearbyMessagesStatusCodes.getStatusCodeString (
status.getStatusCode ()));
}
}
});
Suscripción de fondo
La suscripción en segundo plano es iniciada por el servicio Intent:
suscripción privada () {
Opciones de SubscribeOptions = new SubscribeOptions.Builder ()
.setStrategy (Strategy.BLE_ONLY)
.construir();
Nearby.Messages.subscribe (mGoogleApiClient, getPendingIntent (), opciones)
.setResultCallback (nuevo ResultCallback () {
@Anular
public void onResult (@NonNull Status status) {
si (status.isSuccess ()) {
Log.i (TAG, “Suscrito correctamente.”);
startService (getBackgroundSubscribeServiceIntent ());
} else {
Log.e (TAG, “Falló la operación. Error:” +
NearbyMessagesStatusCodes.getStatusCodeString (
status.getStatusCode ()));
}
}
});
}
privado PendingIntent getPendingIntent () {
devolver PendingIntent.getService (este, 0,
getBackgroundSubscribeServiceIntent (), PendingIntent.FLAG_UPDATE_CURRENT);
}
intención privada getBackgroundSubscribeServiceIntent () {
devolver nuevo Intent (this, BackgroundSubscribeIntentService.class);
}
El propio servicio de Intención:
la clase pública BackgroundSubscribeIntentService extiende IntentService {
final estático privado String TAG = “BackSubIntentService”;
Antecedentes públicosSubscribeIntentService () {
super (“BackgroundSubscribeIntentService”);
}
@Anular
void protegido onHandleIntent (Intención de intención) {
si (intento! = nulo) {
Nearby.Messages.handleIntent (intención, nuevo MessageListener () {
@Anular
public void onFound (mensaje de mensaje) {
String messageAsString = new String (message.getContent ());
Log.d (TAG, “mensaje encontrado:” + messageAsString);
}
@Anular
public void onLost (Mensaje)
String messageAsString = new String (message.getContent ());
Log.d (TAG, “Lost view of message:” + messageAsString);
}
});
}
}
}
Si la suscripción ya no es necesaria, cancele la suscripción invocando.
Nearby.Messages.unsubscribe(GoogleApiClient, PendingIntent).
Emulando balizas
Si por alguna razón no hay balizas disponibles, hay una manera de utilizar emuladores de balizas de terceros.
- Node-eddystone-beacon . Un proyecto multiplataforma. Puede distribuir 3 tipos de paquetes:
- Eddystone-UID
2. Eddystone-URL
3. Eddystone-TLM
Funciona sobre el NodeJS. El dispositivo emulador, por ejemplo, una computadora portátil debe ser compatible con Bluetooth v4 (Bluetooth Low Energy).
- Simulador de baliza Una aplicación emulador de baliza para Android.
Manifestación
Vamos a ver Eddystone-UID. En el Panel de control de Google Beacons, agregue una notificación a la baliza. Esta notificación se distribuirá desde la baliza a todos los usuarios al alcance de su señal con su bluetooth activado y conexión a Internet activa. Por ejemplo, el título es “Buscar la información del mundo” y, como URL, configuremos https://google.com.
El dispositivo en la zona de baliza tenía conexión a Internet activa y Bluetooth activado. La notificación es:
Vamos a ver la URL de Eddystone. Para esto: en la configuración de las balizas, proporcioné la URL https://github.com/. Después de esto, aparece una notificación con el enlace de github:
* Aplicaciones de Beacon Tools:
Para Android.
Para iOS.
Shakuro | Diseño y desarrollo web