Veröffentlichen und abonnieren

Nearby Messages ist eine Publish-Subscribe-API, mit der Geräte in der Nähe ausgetauscht werden können kleine Nutzlasten an Daten. Sobald ein Gerät eine Nachricht veröffentlicht, können Geräte in der Nähe um die Nachricht zu empfangen. Dieser Leitfaden führt Sie durch alle Funktionen Ihre App implementieren muss, damit Nachrichten veröffentlicht und Nachrichten abonniert werden können mithilfe der Nearby Messages API.

Die Anzahl der in der Nähe befindlichen Geräte wird durch den Austausch kleiner Tokens über Bluetooth Wenn ein Gerät ein Token von einem Gerät in der Nähe erkennt, sendet es Token an den Nearby Messages-Server senden, um es zu validieren und zu prüfen, ob Nachrichten, die für die aktuellen Abos der Anwendung bereitgestellt werden sollen.

Eine App kann die Medien steuern, die für die Geräteerkennung verwendet werden, und Informationen darüber, ob die Medien zur Übertragung von Tokens und/oder zum Scannen nach Tokens verwendet werden. Das Senden und Scannen erfolgt standardmäßig auf allen Medien. Aufgabe die Erkennung auf einer Teilmenge oder auf Medien an. Außerdem lässt sich festlegen, ob Beim Erstellen von Publikationen und Abos.

Beim aktiven Veröffentlichen und Abonnieren wird die Meldung „Nearby wird verwendet“ angezeigt. Benachrichtigung angezeigt und die Nutzer darüber informiert, dass Nearby aktiv ist. Diese Benachrichtigung ist werden nur angezeigt, wenn eine oder mehrere Apps Nearby verwenden. um die Akkulaufzeit zu verlängern, wenn Nearby nicht benötigt wird. Sie bietet Nutzer mit den folgenden Optionen:

  • Rufe eine App auf, um Nearby zu deaktivieren.
  • Erzwingen, dass eine App Nearby nicht mehr verwendet.
  • Rufen Sie den Bildschirm Nearby-Einstellungen auf.

Sie können PublishCallback() verwenden und SubscribeCallback() um auf Fälle zu warten, in denen ein Nutzer die App zwingt, Nearby nicht mehr zu verwenden. Wenn diese passiert, die onExpired() ausgelöst.

Da die Nearby Messages APIs die Akkulaufzeit beeinträchtigen können, sollten sie nur bei einer Vordergrundaktivität verwendet werden (mit Ausnahme von Abonnieren mit BLE-Hintergrund.

publish() anrufen und/oder subscribe() um die Nearby Messages API zu verwenden. Ihre App sollte immer symmetrisch unpublish() und 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();
}

Nachricht veröffentlichen

Rufen Sie Nearby.getMessagesClient(Activity).publish() auf, um eine Mitteilung zu veröffentlichen. und das Nachrichtenbyte-Array übergeben. Wir empfehlen, die Anzahl der Nachrichten nicht zu überschreiten 3 KB – diese Nachrichten können wir schneller übermitteln – aber wir können bis zu 100 KB für Apps, die sie brauchen. Dieser Dienst ist nicht für den Austausch größerer Objekte wie wie Fotos und Videos.

Optional können Sie PublishOptions.setStrategy() aufrufen. um die Strategie zu verwenden.

Das folgende Beispiel zeigt, wie publish() aufgerufen wird, um einen kleinen Text zu senden Nachricht:

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

Veröffentlichung einer Mitteilung aufheben

Wenn Sie die Veröffentlichung einer Mitteilung aufheben möchten, rufen Sie unpublish() auf. Zumindest Ihr App sollte in ihrer onStop() „Veröffentlichung aufheben“ aufrufen . Dasselbe Message-Objekt übergeben Objekt, das zum Veröffentlichen verwendet wurde (in diesem Beispiel mActiveMessage).

Im folgenden Codebeispiel wird gezeigt, wie unpublish() aufgerufen wird:

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

Nachrichten abonnieren

Wenn Sie Nachrichten von anderen Geräten abonnieren möchten, rufen Sie Nearby.getMessagesClient(Activity).subscribe() auf. Sie müssen die MessageListener um abonnierte Nachrichten zu verarbeiten.

Optional können Sie SubscribeOptions.setStrategy() aufrufen. um die Strategie zu verwenden.

Das folgende Beispiel zeigt, wie Nachrichten abonniert werden:

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

Abbestellen

Wenn du keine Nachrichten vom Gerät mehr erhalten möchtest, ruf uns an Nearby.getMessagesClient(Activity).unsubscribe() Gleich bestehen MessageListener Objekt, das zum Abonnieren verwendet wurde (in diesem Beispiel mMessageListener).

Das folgende Codebeispiel zeigt, wie Sie Abos kündigen:

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