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