Si fabricas dispositivos o estás desarrollando una aplicación complementaria de un dispositivo (como un wearable o una app de la IoT), puedes usar el servicio de vinculación rápida para simplificar los pasos que deben seguir los usuarios finales para vincular dispositivos a teléfonos Android.
De hecho, no hay que escribir código para habilitar la vinculación rápida, a menos que quieras controlar la vinculación con tu aplicación complementaria, en lugar de permitir que lo haga la API.
El proceso de vinculación consta de tres partes:
Figura 1: Notificación de conexión mediante vinculación rápida
Cuando el usuario active el modo de vinculación del dispositivo periférico, su teléfono Android mostrará en la parte inferior un diálogo que contiene el nombre del dispositivo, una foto de él y el botón Conectar (como se muestra también en la figura 1).
El usuario solo debe hacer clic en el botón a fin de vincular los dispositivos y empezar a disfrutar de una experiencia agradable sin problemas.
El servicio de vinculación rápida también permite que los usuarios puedan encontrar dispositivos perdidos mediante el teléfono o ver el nivel de batería de los auriculares True Wireless Stereo (TWS).
Por último, la vinculación rápida puede solicitar a los usuarios que instalen una aplicación complementaria para tu dispositivo.
Para que tu dispositivo funcione correctamente con vinculación rápida y brinde una mejor experiencia al usuario final, debe cumplir con los siguientes requisitos:
Si quieres proteger la privacidad de los usuarios y evitar que se realicen seguimientos, los dispositivos deben usar anuncios de Bluetooth de bajo consumo (BLE) con direcciones privadas aleatorias que pueden resolverse (RPA).
La dirección debe cambiar cada 15 minutos y al inicio de cada sesión de anuncios. Sin embargo, la dirección no debe cambiar mientras el modo de vinculación esté habilitado, ya que puede impedir que las conexiones se establezcan o mantengan debido a que la conexión se interrumpe cuando la dirección deja de estar disponible.
La vinculación rápida usa claves de cuenta para representar a los distintos usuarios individuales de un dispositivo periférico. Cada clave de cuenta está asignada a una dirección de Gmail.
Tu dispositivo periférico debe almacenar al menos cinco claves de cuenta, de modo que varias personas puedan usar el mismo dispositivo. Por ejemplo, es posible que en una familia que consta de padres y adolescentes se comparta un vehículo, de modo que cada persona usaría su dirección de Gmail como clave de cuenta.
Como función adicional, según el servicio de vinculación rápida, una persona que usa la misma cuenta de Gmail en varias tablets o teléfonos Android representa una sola clave de cuenta. Por lo tanto, si diez dispositivos Android diferentes comparten una cuenta de Gmail, tu dispositivo periférico no notará la diferencia. La vinculación rápida lo considerará como un solo usuario.
Tu dispositivo debe ser compatible con los perfiles GATT de BLE con servicios y características.
Para usar la vinculación rápida, debes definir un servicio con un UUID de 0xFE2C y las siguientes características personalizadas:
Estas características se suman a las estándares y cualquier otra personalizada (usadas de forma opcional en la comunicación con una aplicación complementaria).
Si tienes una aplicación complementaria y está instalada en el dispositivo central, se transmitirán los datos personalizados a la app. De lo contrario, simplemente se ignorarán.
Puedes optar por hacer que tu app registre una instancia de BroadcastReceiver de com.google.android.gms.nearby.fastpair.ACTION_LOG_BUFFER_FULL. Esto es opcional porque el uso de esta función requiere que tu dispositivo periférico notifique al dispositivo central que el búfer está lleno; es decir, que deben intervenir tanto el firmware periférico como la aplicación complementaria para poder acceder a los datos.
La vinculación rápida se suele usar con auriculares, que requieren compatibilidad con A2DP o HFP. Siempre que el dispositivo admita uno de estos perfiles, tras completarse, la vinculación rápida intentará conectarse a A2DP y, luego, a HFP, en ese orden.
Para los auriculares TWS, los requisitos son los siguientes:
Si bien estos no son necesarios para otros dispositivos periféricos, la vinculación rápida los admite y se recomienda su uso.
La vinculación rápida cuenta con un flujo de inicio de app más genérico que admite varios dispositivos complementarios. En este flujo, la vinculación rápida solo detecta el dispositivo que se encuentra más cerca, verifica la aplicación complementaria para el dispositivo (y solicita a los usuarios instalarla si aún no lo hicieron) y redirecciona a los usuarios a las pantallas específicas de la aplicación complementaria. No se realiza una vinculación por BT en este flujo.
FitBit usa este flujo a fin de simplificar el proceso de configuración del dispositivo. Otro dispositivo que utiliza este flujo puede ser, por ejemplo, una balanza inteligente o un cepillo de dientes eléctrico que lo emplee para promocionar su aplicación complementaria y simplificar la experiencia inicial.
Figura 2: Redireccionamiento a la aplicación complementaria
Aunque la publicidad es una comunicación unidireccional, la comunicación bidireccional se hace posible una vez que tu dispositivo se conecta correctamente a un dispositivo central, como un teléfono Android.
La vinculación rápida proporciona un canal RFCOMM a tu dispositivo periférico para mantener una comunicación continua con el dispositivo central. Es perfectamente aceptable cambiar al Bluetooth clásico para lograr comunicación en dos direcciones una vez que se haya establecido la conexión.
Deberás registrar el modelo de tu dispositivo con Google como un proveedor de vinculación rápida.
Un proveedor de vinculación rápida es un dispositivo periférico, como los auriculares, que anuncia que se puede vincular.
Por otro lado, un solicitante de vinculación rápida es un dispositivo central, como una tablet o un teléfono Android, que busca otros dispositivos para conectarse. El framework de los Servicios de Google Play maneja esa parte del trabajo sin intervención de los socios, por lo que no se abarcará aquí.
A fin de registrar tu dispositivo periférico, necesitarás lo siguiente:
Si bien el nombre y la imagen del dispositivo son sencillos, para medir la potencia se requiere un poco más de esfuerzo. Recomendamos medir la fuerza de la señal de la baliza del dispositivo a un metro de distancia de un teléfono Android y agregarle 41 dBm a ese valor (como se describe de forma detallada en un artículo sobre el UID de Eddystone).
Hay dos formas de enviar el TxPower: puedes hacerlo manualmente durante el proceso de registro, o bien tu dispositivo puede incluirlo como parte de la carga útil en los anuncios de este.
Si eliges hacerlo durante el proceso de registro, afirmas que todas las unidades de ese modelo están calibradas a ese nivel exacto de TxPower. Por otro lado, si decides que lo haga tu dispositivo como parte del registro de anuncio, el nivel de TxPower se considerará por unidad.
Una vez completado el registro, te brindaremos un ID de modelo y un par de claves criptográficas pública/privada. Como ocurre con cualquier sistema criptográfico asimétrico, se recomienda almacenar la clave privada dentro de un elemento seguro (SE) en el dispositivo, de modo que los atacantes no puedan acceder a ella. (Puedes obtener más información sobre claves asimétricas en este artículo sobre cómo mejorar la criptografía de tu app).
En el anuncio, la carga útil (registro de anuncio) de tu dispositivo debería incluir el ID del modelo que recibiste de Google y el nivel de TxPower de la unidad, si no se informó durante el registro.
La vinculación rápida es un servicio que ofrece Google como parte de los Servicios de Google Play a fin de simplificar el proceso de vinculación para los usuarios de Android. Además de facilitar el proceso, la vinculación rápida ofrece múltiples funciones útiles, como ayudar a los usuarios a encontrar dispositivos perdidos y solicitar que instalen la aplicación complementaria del dispositivo. Aunque hay varios requisitos previos para garantizar una buena experiencia del usuario, el proceso de registro en sí es muy sencillo, puesto que solo se necesita el nombre del dispositivo y una imagen de este. ¡Feliz codificación!