Publikasikan dan Berlangganan

Nearby Messages adalah API publikasi-langganan yang memungkinkan perangkat di sekitar bertukar muatan data yang kecil. Setelah perangkat memublikasikan pesan, perangkat di sekitar dapat menerima pesan. Panduan ini memandu Anda melalui semua fungsi yang harus diterapkan aplikasi Anda agar dapat memublikasikan pesan, dan berlangganan pesan menggunakan Nearby Messages API.

Set perangkat terdekat ditentukan oleh pertukaran token kecil melalui Bluetooth. Ketika perangkat mendeteksi token dari perangkat terdekat, perangkat akan mengirimkan ke server Nearby Messages untuk memvalidasi 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 pada semua media. Yang akan dilakukan pada {i>subset<i} 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, dialog "Aplikasi Berbagi Langsung sedang digunakan" notifikasi ditampilkan, yang memberi tahu pengguna bahwa Di Sekitar aktif. Notifikasi ini hanya ditampilkan jika satu atau beberapa aplikasi aktif menggunakan Di Sekitar, sehingga pengguna yang dapat menghemat daya tahan baterai jika fitur Di Sekitar tidak diperlukan. Menyediakan dengan opsi berikut:

  • Buka aplikasi untuk menonaktifkan Berbagi Langsung.
  • Paksa aplikasi untuk berhenti menggunakan Nearby.
  • Buka layar Setelan Di Sekitar.

Anda dapat menggunakan PublishCallback() dan SubscribeCallback() untuk memproses kasus saat pengguna memaksa aplikasi untuk berhenti menggunakan Nearby. Jika terjadi, onExpired() akan dipicu.

Karena Nearby Messages API berpotensi memengaruhi masa pakai baterai, tombol hanya boleh digunakan dari aktivitas latar depan (dengan pengecualian langganan latar belakang BLE).

Panggil publish() dan/atau subscribe() untuk menggunakan Nearby Messages API. Aplikasi Anda harus selalu unpublish() secara simetris 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() meneruskan array byte pesan Anda. Sebaiknya pertahankan pesan yang lebih kecil dari 3 KB--pesan ini dapat kami kirimkan lebih cepat--tetapi kami dapat mendukung hingga 100KB untuk aplikasi yang memerlukannya. Layanan ini tidak dimaksudkan untuk bertukar objek yang lebih besar seperti seperti foto dan video.

Jika ingin, Anda dapat memanggil PublishOptions.setStrategy() untuk menetapkan strategi untuk digunakan.

Contoh berikut menunjukkan pemanggilan publish() untuk mengirim pesan kecil pesan:

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 harus memanggil batalkan publikasi dalam onStop() . Teruskan Message yang sama yang digunakan untuk dipublikasikan (dalam contoh ini mActiveMessage).

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 lulus MessageListener untuk menangani penerimaan pesan berlangganan.

Jika ingin, Anda dapat memanggil SubscribeOptions.setStrategy() untuk menetapkan strategi untuk 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 yang sama MessageListener yang digunakan untuk berlangganan (dalam contoh ini mMessageListener).

Contoh kode berikut menunjukkan proses berhenti berlangganan:

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