Nearby Messages es una API de publicación y suscripción que permite el intercambio de dispositivos cercanos cargas útiles de datos pequeñas. Una vez que un dispositivo publica un mensaje, los dispositivos cercanos pueden para recibir el mensaje. En esta guía, se explican todas las funciones que tu app debe implementar para publicar mensajes y suscribirse a ellos con la API de Nearby Messages.
El conjunto de dispositivos cercanos está determinado por el intercambio de pequeños tokens en Bluetooth Cuando un dispositivo detecta un token de un dispositivo cercano, envía la al servidor de Nearby Messages para validarlo y verificar si mensajes para entregar para el conjunto actual de suscripciones de la aplicación.
Una aplicación puede controlar el conjunto de medios usados para descubrir dispositivos si los medios se usan para transmitir tokens o buscar tokens. De forma predeterminada, la transmisión y la búsqueda se realizan en todos los medios. Tareas pendientes el descubrimiento en un subconjunto o medios, y para controlar si transmitir o buscar debes pasar parámetros adicionales cuando crees publicaciones y suscripciones.
Cuando publicas y te suscribes de forma activa, aparece el mensaje "Nearby está en uso" notificación para informar a los usuarios que Nearby está activo. Esta notificación es solo se muestra cuando una o más apps usan Nearby activamente, lo que brinda a los usuarios una oportunidad de conservar la duración de la batería si no se necesita Nearby. Proporciona a los usuarios con las siguientes opciones:
- Navega a una app para inhabilitar Nearby.
- Fuerza una app para que deje de usar Nearby.
- Ve a la pantalla Configuración de Nearby.
Puedes usar PublishCallback()
y SubscribeCallback()
para detectar casos en los que un usuario fuerza a la app a dejar de usar Nearby Cuando esta
sucede, la
onExpired()
método de pago.
Como las APIs de Nearby Messages tienen el potencial de afectar la duración de la batería, solo deben usarse desde una actividad en primer plano (a excepción de suscripción en segundo plano BLE).
Llama a publish()
o subscribe()
para usar la API de Nearby Messages. Tu app siempre debe
simétricamente unpublish()
y unsubscribe()
en onStop()
.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
Log.d(TAG, "Found message: " + new String(message.getContent()));
}
@Override
public void onLost(Message message) {
Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
}
}
mMessage = new Message("Hello World".getBytes());
}
@Override
public void onStart() {
super.onStart();
...
Nearby.getMessagesClient(this).publish(mMessage);
Nearby.getMessagesClient(this).subscribe(mMessageListener);
}
@Override
public void onStop() {
Nearby.getMessagesClient(this).unpublish(mMessage);
Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
...
super.onStop();
}
Publicar un mensaje
Para publicar un mensaje, llama a Nearby.getMessagesClient(Activity).publish()
pasando tu array de bytes de mensaje. Recomendamos que la cantidad de mensajes sea menor que,
3 KB: estos mensajes podemos entregar más rápido, pero podemos admitir hasta 100 KB para
en las apps que lo necesitan. Este servicio no está diseñado para intercambiar objetos más grandes, como
como fotos y videos.
De manera opcional, puedes llamar a PublishOptions.setStrategy()
para definir la estrategia
usar.
En el siguiente ejemplo, se muestra cómo llamar a publish()
para enviar un mensaje de texto pequeño
mensaje:
private void publish(String message) {
Log.i(TAG, "Publishing message: " + message);
mActiveMessage = new Message(message.getBytes());
Nearby.getMessagesClient(this).publish(mActiveMessage);
}
Anula la publicación de un mensaje
Para anular la publicación de un mensaje, llama a unpublish()
. Como mínimo, tu
app debería llamar a la anulación de publicación en su onStop()
.
. Pasa el mismo Message
el objeto que se usó para publicar (mActiveMessage
en este ejemplo).
En el siguiente ejemplo de código, se muestra cómo llamar a unpublish()
:
private void unpublish() {
Log.i(TAG, "Unpublishing.");
if (mActiveMessage != null) {
Nearby.getMessagesClient(this).unpublish(mActiveMessage);
mActiveMessage = null;
}
}
Suscríbete a los mensajes
Para suscribirte a mensajes de otros dispositivos, llama a Nearby.getMessagesClient(Activity).subscribe()
. Deberás aprobar
un MessageListener
para administrar la recepción de mensajes a suscriptores.
De manera opcional, puedes llamar a SubscribeOptions.setStrategy()
para definir la estrategia
usar.
En el siguiente ejemplo, se muestra la suscripción a mensajes:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
Log.d(TAG, "Found message: " + new String(message.getContent()));
}
@Override
public void onLost(Message message) {
Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
}
}
}
// Subscribe to receive messages.
private void subscribe() {
Log.i(TAG, "Subscribing.");
Nearby.getMessagesClient(this).subscribe(mMessageListener, options);
}
Anular la suscripción
Para anular la suscripción y dejar de recibir mensajes en el dispositivo, llama
Nearby.getMessagesClient(Activity).unsubscribe()
Pasar el mismo
MessageListener
que se usó para suscribirse (mMessageListener
en este ejemplo).
En el siguiente ejemplo de código, se muestra la anulación de suscripción:
private void unsubscribe() {
Log.i(TAG, "Unsubscribing.");
Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
}