Publikasikan dan Berlangganan

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" akan ditampilkan, yang memberi tahu pengguna bahwa Nearby sedang aktif. Notifikasi ini hanya ditampilkan saat satu atau beberapa aplikasi secara aktif menggunakan Nearby, sehingga memberi pengguna kesempatan untuk menghemat daya tahan baterai jika Nearby tidak diperlukan. Fitur ini memberi pengguna opsi berikut:

  • Buka aplikasi untuk menonaktifkan Fitur Sekitar.
  • Memaksa aplikasi berhenti menggunakan Nearby.
  • Buka layar Setelan Terdekat.

Anda dapat menggunakan PublishCallback() dan SubscribeCallback() untuk memproses kasus saat pengguna menghentikan penggunaan Nearby secara paksa. Saat ini terjadi, metode onExpired() dipicu.

Karena berpotensi memengaruhi daya tahan baterai, Nearby Message 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. Pesan ini dapat kami kirimkan lebih cepat. Namun, kami dapat mendukung ukuran hingga 100 KB untuk aplikasi yang memerlukannya. Layanan ini tidak ditujukan untuk menukar 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 singkat:

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 batalkan publikasi di metode onStop(). 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 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);
}