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 memahami semua fungsi yang harus diterapkan 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 mengirim token ke server Nearby Messages untuk memvalidasinya dan memeriksa apakah ada pesan yang akan dikirim untuk kumpulan langganan aplikasi saat ini.
Aplikasi dapat mengontrol kumpulan media yang digunakan untuk penemuan perangkat, dan apakah media tersebut digunakan untuk menyiarkan token dan/atau memindai token. Secara default, siaran 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 aktif memublikasikan dan berlangganan, notifikasi "Di Sekitar sedang digunakan" akan ditampilkan, yang memberi tahu pengguna bahwa Di Sekitar aktif. Notifikasi ini hanya ditampilkan saat satu atau beberapa aplikasi secara aktif menggunakan fitur Di Sekitar, sehingga pengguna memiliki kesempatan untuk menghemat masa pakai baterai jika fitur Di Sekitar tidak diperlukan. Opsi ini menyediakan opsi berikut kepada pengguna:
- Buka aplikasi untuk menonaktifkan fitur Di Sekitar.
- Memaksa aplikasi berhenti menggunakan fitur Di Sekitar.
- Buka layar Setelan Sekitar.
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 masa pakai 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
unpublish()
dan unsubscribe()
secara simetris 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()
yang meneruskan array byte pesan Anda. Sebaiknya pertahankan pesan agar tidak lebih dari
3 KB--pesan ini dapat kami kirimkan lebih cepat--tetapi kami dapat mendukung hingga 100 KB untuk
aplikasi yang membutuhkannya. Layanan ini tidak dimaksudkan untuk bertukar 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 unpublish dalam metode
onStop()
. Teruskan objek Message
yang sama dengan 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 dilanggani.
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 dengan 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);
}