Pubblica e iscriviti

Nearby Messages è un'API di pubblicazione e abbonamento che consente di scambiare dispositivi nelle vicinanze piccoli payload di dati. Dopo che un dispositivo pubblica un messaggio, i dispositivi nelle vicinanze possono ricevere il messaggio. Questa guida illustra tutte le funzionalità che la tua app deve implementare per pubblicare messaggi e sottoscrivere i messaggi usando l'API Nearby Messages.

L'insieme di dispositivi vicini è determinato dallo scambio di piccoli token su Bluetooth Quando un dispositivo rileva un token di un dispositivo nelle vicinanze, invia il token al server Nearby Messages per convalidarlo e controllare se sono presenti messaggi da consegnare per l'insieme corrente di sottoscrizioni dell'applicazione.

Un'applicazione può controllare l'insieme di mezzi utilizzati per il rilevamento dei dispositivi. se i mezzi vengono utilizzati per trasmettere token e/o eseguire la scansione dei token. Per impostazione predefinita, la trasmissione e la scansione vengono eseguite su tutti i mezzi. Da fare il rilevamento su un sottoinsieme o mezzi e per controllare se trasmettere o scansionare, devi passare parametri aggiuntivi quando crei pubblicazioni abbonamenti.

Quando pubblichi e ti abboni attivamente, viene visualizzato il messaggio "Nelle vicinanze è in uso" notifica per informare gli utenti che la funzionalità Nelle vicinanze è attiva. Questa notifica è visualizzato solo quando una o più app usano attivamente la funzionalità Qui vicino, offrendo agli utenti di prolungare la durata della batteria se la funzionalità Nelle vicinanze non è necessaria. Offre con le seguenti opzioni:

  • Apri un'app per disattivare la funzionalità Qui vicino.
  • Forzare l'interruzione dell'utilizzo della funzionalità Nelle vicinanze da parte di un'app.
  • Vai alla schermata Impostazioni nelle vicinanze.

Puoi utilizzare PublishCallback() e SubscribeCallback() per ascoltare i casi in cui un utente obbliga l'app a interrompere l'utilizzo della funzionalità Nelle vicinanze. Quando questo succede, onExpired() .

Poiché le API Nearby Messages possono influire sulla durata della batteria, devono essere utilizzati solo da un'attività in primo piano (ad eccezione di Abbonamento in background BLE).

Chiama il numero publish() e/o subscribe() per utilizzare l'API Nearby Messages. La tua app deve sempre simmetricamente unpublish() e unsubscribe() in 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();
}

Pubblica un messaggio

Per pubblicare un messaggio, chiama Nearby.getMessagesClient(Activity).publish() in modo da passare l'array di byte dei messaggi. Ti consigliamo di ridurre il numero di messaggi 3 KB, ovvero i messaggi che possiamo recapitare più velocemente, ma possiamo supportare fino a 100 KB per app che ne hanno bisogno. Questo servizio non è pensato per lo scambio di oggetti più grandi, come come foto e video.

Se vuoi, puoi chiamare il numero PublishOptions.setStrategy() per impostare la strategia per l'utilizzo.

L'esempio seguente mostra la chiamata al numero publish() per l'invio di un SMS di piccole dimensioni messaggio:

private void publish(String message) {
    Log.i(TAG, "Publishing message: " + message);
    mActiveMessage = new Message(message.getBytes());
    Nearby.getMessagesClient(this).publish(mActiveMessage);
}

Annullare la pubblicazione di un messaggio

Per annullare la pubblicazione di un messaggio, chiama unpublish(). Come minimo il tuo l'app deve chiamare l'opzione Annulla pubblicazione nel relativo onStop() . Supera lo stesso Message utilizzato per la pubblicazione (mActiveMessage in questo esempio).

L'esempio di codice seguente mostra la chiamata a unpublish():

private void unpublish() {
    Log.i(TAG, "Unpublishing.");
    if (mActiveMessage != null) {
        Nearby.getMessagesClient(this).unpublish(mActiveMessage);
        mActiveMessage = null;
    }
}

Iscriviti ai messaggi

Per abbonarti ai messaggi da altri dispositivi, chiama Nearby.getMessagesClient(Activity).subscribe(). Devi superare Un MessageListener per gestire la ricezione dei messaggi a cui è stata effettuata l'iscrizione.

Se vuoi, puoi chiamare il numero SubscribeOptions.setStrategy() per impostare la strategia per l'utilizzo.

L'esempio seguente mostra la sottoscrizione ai messaggi:

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);
}

Annulla iscrizione

Per annullare l'iscrizione e non ricevere più i messaggi sul dispositivo, chiama Nearby.getMessagesClient(Activity).unsubscribe() Supera lo stesso MessageListener utilizzato per la sottoscrizione (mMessageListener in questo esempio).

L'esempio di codice seguente mostra l'annullamento dell'iscrizione:

private void unsubscribe() {
    Log.i(TAG, "Unsubscribing.");
    Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
}