Nearby Messages adalah API publikasi-langganan 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 melalui semua fungsi yang harus diterapkan aplikasi 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 kumpulan media yang digunakan untuk penemuan perangkat, dan apakah media 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" akan ditampilkan, yang memberi tahu pengguna bahwa Nearby aktif. Notifikasi ini hanya ditampilkan saat satu atau beberapa aplikasi menggunakan Nearby secara aktif, sehingga memberi pengguna kesempatan untuk menghemat daya tahan baterai jika Nearby tidak diperlukan. Notifikasi ini memberi pengguna opsi berikut:
- Buka aplikasi untuk menonaktifkan Nearby.
- Paksa aplikasi berhenti menggunakan Nearby.
- Buka layar Setelan Nearby.
Anda dapat menggunakan PublishCallback()
dan SubscribeCallback()
untuk memproses kasus saat pengguna memaksa aplikasi berhenti menggunakan Nearby. Saat hal ini
terjadi, metode
onExpired()
akan dipicu.
Karena Nearby Messages API berpotensi memengaruhi daya tahan baterai, API ini hanya boleh digunakan dari aktivitas latar depan (kecuali langganan latar belakang BLE).
Panggil publish()
dan/atau subscribe()
untuk menggunakan Nearby Messages API. Aplikasi Anda harus selalu
secara 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();
}
Memublikasikan pesan
Untuk memublikasikan pesan, panggil Nearby.getMessagesClient(Activity).publish()
dengan meneruskan array byte pesan Anda. Sebaiknya pesan tidak lebih dari 3 KB--pesan ini dapat kami kirimkan lebih cepat--tetapi kami dapat mendukung hingga 100 KB untuk aplikasi yang memerlukannya. Layanan ini tidak dimaksudkan untuk bertukar objek yang lebih besar seperti foto dan video.
Anda dapat secara opsional memanggil PublishOptions.setStrategy()
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(). Setidaknya aplikasi Anda harus memanggil unpublish dalam onStop()
metode. 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
sebuah MessageListener
untuk menangani penerimaan pesan yang dilanggan.
Anda dapat secara opsional memanggil SubscribeOptions.setStrategy()
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);
}