Publikasikan dan Berlangganan

Nearby Messages adalah API publikasi-langganan yang memungkinkan perangkat di sekitar bertukar payload data yang kecil. Setelah perangkat memublikasikan pesan, perangkat di sekitar dapat menerima pesan tersebut. Panduan ini memandu Anda melalui 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 mengirimkan token tersebut ke server Nearby Messages untuk memvalidasinya dan memeriksa apakah ada pesan yang akan dikirimkan untuk rangkaian 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, penyiaran dan pemindaian dilakukan di semua media. Untuk melakukan penemuan pada subkumpulan 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 "Di Sekitar sedang digunakan" akan ditampilkan, yang memberi tahu pengguna bahwa fitur Di Sekitar sedang aktif. Notifikasi ini hanya ditampilkan saat satu atau beberapa aplikasi aktif menggunakan fitur Di Sekitar, sehingga pengguna dapat menghemat masa pakai baterai jika fitur Di Sekitar tidak diperlukan. Opsi ini memberi pengguna opsi berikut:

  • Buka aplikasi untuk menonaktifkan fitur Di Sekitar.
  • Paksa aplikasi berhenti menggunakan fitur Di Sekitar.
  • Buka layar Setelan Di Sekitar.

Anda dapat menggunakan PublishCallback() dan SubscribeCallback() untuk memproses kasus saat pengguna memaksa aplikasi untuk berhenti menggunakan fitur Di Sekitar. Saat hal ini terjadi, metode onExpired() akan dipicu.

Karena Nearby Messages API memiliki potensi untuk memengaruhi masa pakai baterai, API tersebut hanya boleh digunakan dari aktivitas latar depan (dengan pengecualian langganan di 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() dengan meneruskan array byte pesan Anda. Sebaiknya buat pesan dengan ukuran kurang 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.

Secara opsional, Anda dapat memanggil PublishOptions.setStrategy() untuk menetapkan strategi yang akan digunakan.

Contoh berikut menunjukkan pemanggilan 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 pembatalan publikasi 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 berlangganan.

Secara opsional, Anda dapat 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 dengan yang digunakan untuk berlangganan (dalam contoh ini mMessageListener).

Contoh kode berikut menunjukkan cara berhenti berlangganan:

private void unsubscribe() {
    Log.i(TAG, "Unsubscribing.");
    Nearby.getMessagesClient(this).unsubscribe(mMessageListener);
}