Nearby Messages adalah API publish-subscribe yang memungkinkan perangkat di sekitar bertukar payload data kecil. Setelah perangkat memublikasikan pesan, perangkat di sekitar dapat menerima pesan tersebut. Panduan ini akan memandu Anda memahami semua fungsi yang harus diimplementasikan aplikasi Anda untuk memublikasikan pesan dan berlangganan pesan menggunakan Nearby Messages API.
Kumpulan perangkat di sekitar ditentukan oleh pertukaran token kecil melalui Bluetooth. Saat mendeteksi token dari perangkat di sekitar, perangkat akan mengirimkan token ke server Nearby Messages untuk memvalidasinya dan memeriksa apakah ada pesan yang akan dikirimkan untuk kumpulan langganan aplikasi saat ini.
Aplikasi dapat mengontrol set media yang digunakan untuk penemuan perangkat, dan apakah media tersebut digunakan untuk menyiarkan token dan/atau memindai token. Secara default, penyiaran dan pemindaian dilakukan di semua media. Untuk melakukan penemuan pada subset atau media, dan untuk mengontrol apakah akan menyiarkan atau memindai, Anda harus meneruskan parameter tambahan saat membuat publikasi dan langganan.
Saat memublikasikan dan berlangganan secara aktif, notifikasi "Nearby sedang digunakan" ditampilkan, yang memberi tahu pengguna bahwa Nearby sedang aktif. Notifikasi ini hanya ditampilkan saat satu atau beberapa aplikasi aktif menggunakan fitur Di Sekitar, sehingga memberi pengguna kesempatan untuk menghemat daya tahan baterai jika fitur Di Sekitar tidak diperlukan. Fitur ini memberi pengguna opsi berikut:
- Buka aplikasi untuk menonaktifkan fitur Di Sekitar.
- Memaksa aplikasi berhenti menggunakan fitur Di Sekitar.
- Buka layar Setelan Terdekat.
Anda dapat menggunakan PublishCallback()
dan SubscribeCallback()
untuk memantau kasus saat pengguna menghentikan paksa aplikasi menggunakan Nearby. Saat hal ini terjadi, metode onExpired()
akan dipicu.
Karena berpotensi memengaruhi daya tahan baterai, Nearby Messages API hanya boleh digunakan dari aktivitas latar depan (kecuali BLE background subscribe).
Panggil publish()
dan/atau subscribe()
untuk menggunakan Nearby Messages API. Aplikasi Anda harus selalu
simetris unpublish()
dan unsubscribe()
di 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();
}
Publikasikan pesan
Untuk memublikasikan pesan, panggil Nearby.getMessagesClient(Activity).publish()
dengan meneruskan array byte pesan Anda. Sebaiknya ukuran pesan tidak lebih dari 3 KB agar pesan dapat dikirim lebih cepat, tetapi kami dapat mendukung hingga 100 KB untuk aplikasi yang memerlukannya. Layanan ini tidak ditujukan untuk menukar objek yang lebih besar seperti foto dan video.
Anda dapat memanggil PublishOptions.setStrategy()
secara opsional
untuk menetapkan strategi
yang akan digunakan.
Contoh berikut menunjukkan cara memanggil publish()
untuk mengirim pesan teks kecil:
private void publish(String message) {
Log.i(TAG, "Publishing message: " + message);
mActiveMessage = new Message(message.getBytes());
Nearby.getMessagesClient(this).publish(mActiveMessage);
}
Membatalkan publikasi pesan
Untuk membatalkan publikasi pesan, panggil unpublish()
. Minimal, aplikasi Anda harus memanggil batal publikasi dalam metode onStop()
-nya. Teruskan objek Message
yang sama yang digunakan untuk memublikasikan (mActiveMessage
dalam contoh ini).
Contoh kode berikut menunjukkan cara memanggil unpublish()
:
private void unpublish() {
Log.i(TAG, "Unpublishing.");
if (mActiveMessage != null) {
Nearby.getMessagesClient(this).unpublish(mActiveMessage);
mActiveMessage = null;
}
}
Berlangganan pesan
Untuk berlangganan pesan dari perangkat lain, panggil Nearby.getMessagesClient(Activity).subscribe()
. Anda harus meneruskan
MessageListener
untuk menangani penerimaan pesan yang dikirimkan.
Anda dapat memanggil SubscribeOptions.setStrategy()
secara opsional
untuk menetapkan strategi
yang akan digunakan.
Contoh berikut menunjukkan cara berlangganan pesan:
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);
}
Berhenti berlangganan
Untuk berhenti berlangganan dan berhenti menerima pesan perangkat, panggil
Nearby.getMessagesClient(Activity).unsubscribe()
. Teruskan objek
MessageListener
yang sama yang digunakan untuk berlangganan (mMessageListener
dalam contoh ini).
Contoh kode berikut menunjukkan cara berhenti berlangganan:
private void unsubscribe() {
Log.i(TAG, "Unsubscribing.");
Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
}