MessagesClient | Doclava
public abstract class

MessagesClient

extends GoogleApi<MessagesOptions>
java.lang.Object
   ↳ com.google.android.gms.common.api.GoogleApi<com.google.android.gms.nearby.messages.MessagesOptions>
     ↳ com.google.android.gms.nearby.messages.MessagesClient

Class Overview

API which allows your app to publish simple messages and subscribe to receive those messages from nearby devices.

The API performs its operations in an unauthenticated manner, so it does not require a Google account. However, it requires that the developer has a project in the Google Developers Console with the following prerequisites:

  1. Nearby Messages API turned on.
    Follow these instructions to enable the "Nearby Messages API".
  2. An API key for the Android application using its package name and SHA1 fingerprint.
    Follow these instructions to create the "Public API access" API key specific for your app.
  3. Add the API key generated above to your application's manifest:
     <manifest ...>
       <application ...>
         <meta-data
             android:name="com.google.android.nearby.messages.API_KEY"
             android:value="SPECIFY_APPLICATION_API_KEY_HERE" />
         <activity>
         ...
         </activity>
       </application>
     </manifest>
     

The Messages API should be accessed from the Nearby entry point. For example:

 @Override
 protected void onStart() {
   Task<Void> task = Nearby.getMessagesClient(context).publish(new Message(bytes));
 }
 

All of the Messages APIs should be used from a foreground Activity, with the exception of the variants of subscribe that take a PendingIntent parameter. Your Activity should publish(Message) or subscribe(MessageListener) either in onStart() or in response to a user action in a visible Activity, and you should always symmetrically unpublish(Message) or unsubscribe(MessageListener) in onStop().

Summary

Public Methods
abstract void handleIntent(Intent intent, MessageListener messageListener)
Extracts information from an Intent sent as a subscription callback, and calls the corresponding methods on the given MessageListener.
abstract Task<Void> publish(Message message)
Publishes a message so that it is visible to nearby devices, using the default options from DEFAULT.
abstract Task<Void> publish(Message message, PublishOptions options)
Publishes a message so that it is visible to nearby devices.
abstract Task<Void> registerStatusCallback(StatusCallback statusCallback)
Registers a status callback, which will be notified when significant events occur that affect Nearby for your app.
abstract Task<Void> subscribe(MessageListener listener, SubscribeOptions options)
Subscribes for published messages from nearby devices.
abstract Task<Void> subscribe(MessageListener listener)
Subscribes for published messages from nearby devices, using the default options in DEFAULT.
abstract Task<Void> subscribe(PendingIntent pendingIntent, SubscribeOptions options)
Note: Currently, this method only finds messages attached to BLE beacons.
abstract Task<Void> subscribe(PendingIntent pendingIntent)
Note: Currently, this method only finds messages attached to BLE beacons.
abstract Task<Void> unpublish(Message message)
Cancels an existing published message.
abstract Task<Void> unregisterStatusCallback(StatusCallback statusCallback)
Unregisters a status callback previously registered with registerStatusCallback(StatusCallback).
abstract Task<Void> unsubscribe(MessageListener listener)
Cancels an existing subscription.
abstract Task<Void> unsubscribe(PendingIntent pendingIntent)
Cancels an existing subscription.
[Expand]
Inherited Methods
From class java.lang.Object

Public Methods

public abstract void handleIntent (Intent intent, MessageListener messageListener)

Extracts information from an Intent sent as a subscription callback, and calls the corresponding methods on the given MessageListener.

Note: Only onFound(Message) and onLost(Message) are supported.

For example:

 PendingIntent pendingIntent = PendingIntent.getService(context, 0,
     new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT);

 messagesClient.subscribe(pendingIntent, ...);

 public class MyService extends IntentService {
   protected void onHandleIntent(Intent intent) {
     messagesClient.handleIntent(intent, new MessageListener() {
       @Override
       public void onFound(Message message) {...}
     }
   });
 }
 

Parameters
intent Intent: An intent that was sent as a result of subscribe(PendingIntent, SubscribeOptions)
messageListener MessageListener: This will be called immediately with information present in the Intent

public abstract Task<Void> publish (Message message)

Publishes a message so that it is visible to nearby devices, using the default options from DEFAULT.

Parameters
message Message: A Message to publish for nearby devices to see
Returns
Task<Void>

public abstract Task<Void> publish (Message message, PublishOptions options)

Publishes a message so that it is visible to nearby devices.

The message is only delivered to apps that share the same project id in the Developer Console and have an active subscription. Create project identifiers and turn on the Nearby API in the Google Developers Console.

Parameters
message Message: A Message to publish for nearby devices to see
options PublishOptions: A PublishOptions object for this operation
Returns
Task<Void> The Task which can be used to determine if the call succeeded

public abstract Task<Void> registerStatusCallback (StatusCallback statusCallback)

Registers a status callback, which will be notified when significant events occur that affect Nearby for your app.

When your app first calls this API, it may be immediately called back with current status.

Parameters
statusCallback StatusCallback: A callback to notify when events occur
Returns
Task<Void> The Task which can be used to determine if the call succeeded

public abstract Task<Void> subscribe (MessageListener listener, SubscribeOptions options)

Subscribes for published messages from nearby devices.

Only messages published by apps sharing the same project id in the Developer Console will be delivered.

Parameters
listener MessageListener: A MessageListener implementation to get callbacks of received messages
options SubscribeOptions: A SubscribeOptions object for this operation
Returns
Task<Void> The Task which can be used to determine if the call succeeded

public abstract Task<Void> subscribe (MessageListener listener)

Subscribes for published messages from nearby devices, using the default options in DEFAULT.

Parameters
listener MessageListener: A MessageListener implementation to get callbacks of received messages
Returns
Task<Void>

public abstract Task<Void> subscribe (PendingIntent pendingIntent, SubscribeOptions options)

Note: Currently, this method only finds messages attached to BLE beacons. See Beacons.

Subscribes for published messages from nearby devices in a persistent and low-power manner. This uses less battery, but will have higher latency and lower reliability. Notably, updates may only be delivered when the device's screen turns on (or when Bluetooth turns on). The subscription will be retained after the client disconnects.

Call handleIntent(Intent, MessageListener) to handle the Intents received from Nearby while subscribed. Call unsubscribe(PendingIntent) to cancel the subscription.

Each application can pass up to 5 PendingIntents. When the limit is reached, this returns TOO_MANY_PENDING_INTENTS, and the subscription is not created.

Parameters
pendingIntent PendingIntent: A PendingIntent to get callbacks about nearby messages
options SubscribeOptions: A SubscribeOptions object for this operation
Returns
Task<Void> The Task which can be used to determine if the call succeeded

public abstract Task<Void> subscribe (PendingIntent pendingIntent)

Note: Currently, this method only finds messages attached to BLE beacons. See Beacons.

Subscribes for published messages from nearby devices in a persistent and low-power manner, using the default options in DEFAULT.

Parameters
pendingIntent PendingIntent: A PendingIntent to get callbacks about nearby messages
Returns
Task<Void>

public abstract Task<Void> unpublish (Message message)

Cancels an existing published message.

Parameters
message Message: A Message that is currently published
Returns
Task<Void> The Task which can be used to determine if the call succeeded

public abstract Task<Void> unregisterStatusCallback (StatusCallback statusCallback)

Unregisters a status callback previously registered with registerStatusCallback(StatusCallback).

Parameters
statusCallback StatusCallback: A callback previously registered with registerStatusCallback(StatusCallback)
Returns
Task<Void> The Task which can be used to determine if the call succeeded

public abstract Task<Void> unsubscribe (MessageListener listener)

Cancels an existing subscription.

Parameters
listener MessageListener: A MessageListener implementation that is currently subscribed
Returns
Task<Void> The Task which can be used to determine if the call succeeded

public abstract Task<Void> unsubscribe (PendingIntent pendingIntent)

Cancels an existing subscription.

Parameters
pendingIntent PendingIntent: A PendingIntent that is currently subscribed
Returns
Task<Void> The Task which can be used to determine if the call succeeded