Opublikuj i zasubskrybuj

Wiadomości w pobliżu to interfejs API do publikowania i subskrypcji umożliwiający urządzeniom w pobliżu wymianę danych małe ładunki danych. Po opublikowaniu wiadomości urządzenia w pobliżu mogą odebranie wiadomości. W tym przewodniku omawiamy wszystkie funkcje musi zaimplementować Twoja aplikacja, aby móc publikować i subskrybować wiadomości za pomocą interfejsu Near Messages API.

Zbiór urządzeń w pobliżu jest określany na podstawie wymiany małych tokenów Bluetooth. Gdy urządzenie wykryje token z urządzenia w pobliżu, wysyła do serwera Wiadomości w pobliżu, aby go zweryfikować i sprawdzić, czy są jakieś wiadomości, które mają zostać dostarczone dla bieżącego zestawu subskrypcji aplikacji.

Aplikacja może kontrolować zestaw mediów używanych do wykrywania urządzeń oraz czy media są używane do rozpowszechniania tokenów i/lub skanowania w poszukiwaniu tokenów. Domyślnie transmisje i skanowanie są przeprowadzane w przypadku wszystkich mediów. Do zrobienia odkrywanie w podzbiorze lub mediach oraz określanie, czy mają być emitowane czy skanowane, musisz podczas tworzenia publikacji przekazywać dodatkowe parametry oraz subskrypcji.

Przy aktywnym publikowaniu i subskrybowaniu funkcja „W pobliżu jest używana” powiadomienie informujący użytkowników, że funkcja W pobliżu jest aktywna. To powiadomienie jest wyświetlane tylko wtedy, gdy co najmniej jedna aplikacja aktywnie korzysta z funkcji W pobliżu. Dzięki temu użytkownicy oszczędzać baterię, jeśli funkcja W pobliżu nie jest potrzebna. Zapewnia z tymi opcjami:

  • Przejdź do aplikacji, aby wyłączyć funkcję W pobliżu.
  • Wymuszaj wyłączenie aplikacji z funkcji W pobliżu.
  • Przejdź do ekranu Ustawienia urządzeń w pobliżu.

Możesz użyć usługi PublishCallback() i SubscribeCallback() aby nasłuchiwać przypadków, w których użytkownik zmusza aplikację do zaprzestania korzystania z funkcji W pobliżu. Gdy to ma miejsce, onExpired() .

Interfejsy Topics API w pobliżu mogą wpływać na czas pracy na baterii, powinny być używane wyłącznie na pierwszym planie (z wyjątkiem subskrypcja BLE w tle).

Zadzwoń pod numer publish() lub subscribe() do korzystania z interfejsu Near Messages API. Aplikacja powinna zawsze symetrycznie unpublish() i unsubscribe() w 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();
}

Opublikuj wiadomość

Aby opublikować wiadomość, zadzwoń pod numer Nearby.getMessagesClient(Activity).publish() i przekazywać tablicę bajtów wiadomości. Zalecamy, by wiadomości były krótsze niż 3 kB – te wiadomości możemy dostarczyć szybciej, ale możemy obsłużyć do 100 kB w przypadku aplikacji, które ich potrzebują. Ta usługa nie służy do wymiany większych obiektów, takich jak zdjęcia i filmy.

Opcjonalnie możesz wywołać metodę PublishOptions.setStrategy() aby ustalić strategię których użyć.

Ten przykład pokazuje, jak wywołać funkcję publish() w celu wysłania małego SMS-a wiadomość:

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

Cofanie publikacji wiadomości

Aby cofnąć publikację wiadomości, wywołaj unpublish(). Co najmniej aplikacja powinna wywołać funkcję Cofnij publikację w narzędziu onStop() . Podaj te same Message który został użyty do opublikowania (w tym przykładzie mActiveMessage).

Ten przykładowy kod pokazuje wywołanie unpublish():

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

Subskrybowanie wiadomości

Aby subskrybować wiadomości z innych urządzeń, zadzwoń pod numer Nearby.getMessagesClient(Activity).subscribe(). Musisz zdać MessageListener obsługi odbierania subskrybowanych wiadomości.

Opcjonalnie możesz wywołać metodę SubscribeOptions.setStrategy() aby ustalić strategię których użyć.

Poniższy przykład pokazuje subskrybowanie wiadomości:

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

Anuluj subskrypcję

Aby anulować subskrypcję i przestać otrzymywać wiadomości na urządzeniu, zadzwoń pod numer Nearby.getMessagesClient(Activity).unsubscribe() Podawaj to samo MessageListener który został użyty do subskrypcji (w tym przykładzie mMessageListener).

Ten przykładowy kod ilustruje anulowanie subskrypcji:

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