เผยแพร่และสมัครรับข้อมูล

Nearby Messages เป็น API แบบสมัครรับข้อมูลการเผยแพร่ ซึ่งช่วยให้แลกเปลี่ยนอุปกรณ์ที่อยู่ใกล้เคียงได้ เพย์โหลดข้อมูลขนาดเล็ก เมื่ออุปกรณ์เผยแพร่ข้อความแล้ว อุปกรณ์ที่อยู่ใกล้เคียงจะทำสิ่งต่อไปนี้ได้ รับข้อความ คู่มือนี้จะอธิบายถึงฟังก์ชันการทำงานทั้งหมด แอปของคุณต้องใช้เพื่อเผยแพร่ข้อความและสมัครรับข้อความ โดยใช้ Nearby Messages API

ชุดอุปกรณ์ใกล้เคียงจะกำหนดโดยการแลกเปลี่ยนโทเค็นขนาดเล็กเกิน บลูทูธ เมื่ออุปกรณ์ตรวจพบโทเค็นจากอุปกรณ์ใกล้เคียง อุปกรณ์จะส่ง โทเค็นไปยังเซิร์ฟเวอร์ข้อความ Nearby เพื่อตรวจสอบความถูกต้องและดูว่ามี ข้อความที่จะส่งสำหรับชุดการสมัครใช้บริการปัจจุบันของแอปพลิเคชัน

แอปพลิเคชันสามารถควบคุมชุดสื่อที่ใช้สำหรับการค้นหาอุปกรณ์ และ จะใช้สื่อในการออกอากาศโทเค็นและ/หรือสแกนหาโทเค็นหรือไม่ โดยค่าเริ่มต้น การออกอากาศและการสแกนจะทำบนสื่อทุกประเภท สิ่งต้องทำ การค้นพบแบบย่อยหรือสื่อ และเพื่อควบคุมว่าจะเผยแพร่หรือสแกนไหม คุณจะต้องส่งผ่านพารามิเตอร์เพิ่มเติมเมื่อสร้างสื่อเผยแพร่และ การสมัครใช้บริการ

เมื่อมีการเผยแพร่และสมัครรับข้อมูลอยู่ ก็แสดงว่า "ใช้งาน Nearby อยู่" การแจ้งเตือน เพื่อแจ้งให้ผู้ใช้ทราบว่า Nearby ทำงานอยู่ การแจ้งเตือนนี้ แสดงเมื่อมีแอปอย่างน้อย 1 แอปกำลังใช้ Nearby อยู่เท่านั้น ซึ่งทำให้ผู้ใช้ โอกาสที่จะยืดอายุการใช้งานแบตเตอรี่หากไม่จำเป็นต้องใช้ Nearby ซึ่งมี ผู้ใช้ที่มีตัวเลือกต่อไปนี้

  • ไปที่แอปเพื่อปิดใช้ Nearby
  • บังคับให้แอปหยุดใช้ Nearby
  • ไปที่หน้าจอการตั้งค่า Nearby

คุณใช้ PublishCallback() ได้ และ SubscribeCallback() เพื่อคอยฟังกรณีที่ผู้ใช้บังคับให้แอปหยุดใช้ Nearby เมื่อใด สิ่งที่เกิดขึ้น onExpired() ทริกเกอร์

เนื่องจาก Nearby Messages API อาจส่งผลต่ออายุการใช้งานแบตเตอรี่ ควรใช้จากกิจกรรมที่ทำงานอยู่เบื้องหน้าเท่านั้น (ยกเว้น การสมัครใช้บริการในเบื้องหลัง BLE)

โทร publish() และ/หรือ subscribe() เพื่อใช้ Nearby Messages API แอปของคุณควร สมมาตร unpublish() และ unsubscribe() ใน 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();
}

เผยแพร่ข้อความ

หากต้องการเผยแพร่ข้อความ โปรดโทรไปที่ Nearby.getMessagesClient(Activity).publish() ส่งผ่านอาร์เรย์ไบต์ของข้อความ เราขอแนะนำให้ส่งข้อความไม่เกิน 3KB -- ข้อความเหล่านี้เราสามารถส่งได้เร็วขึ้น--แต่สามารถรองรับได้ถึง 100KB แอปที่ต้องการ บริการนี้ไม่ได้มีไว้สำหรับการแลกเปลี่ยนวัตถุขนาดใหญ่ เช่น ในรูปแบบรูปภาพและวิดีโอ

หรือจะโทรหา PublishOptions.setStrategy() ก็ได้ เพื่อกำหนดกลยุทธ์ ในการใช้กัน

ตัวอย่างต่อไปนี้สาธิตการเรียกใช้ publish() เพื่อส่งข้อความขนาดเล็ก ข้อความ:

private void publish(String message) {
    Log.i(TAG, "Publishing message: " + message);
    mActiveMessage = new Message(message.getBytes());
    Nearby.getMessagesClient(this).publish(mActiveMessage);
}

ยกเลิกการเผยแพร่ข้อความ

หากต้องการยกเลิกการเผยแพร่ข้อความ โปรดโทรติดต่อ unpublish() อย่างน้อยที่สุด แอปควรเรียกใช้ "ไม่เผยแพร่" ใน onStop() ผ่านMessageเดียวกัน ที่ใช้เพื่อเผยแพร่ (mActiveMessage ในตัวอย่างนี้)

ตัวอย่างโค้ดต่อไปนี้แสดงการเรียกใช้ unpublish():

private void unpublish() {
    Log.i(TAG, "Unpublishing.");
    if (mActiveMessage != null) {
        Nearby.getMessagesClient(this).unpublish(mActiveMessage);
        mActiveMessage = null;
    }
}

สมัครรับข้อความ

หากต้องการสมัครรับข้อความจากอุปกรณ์อื่นๆ ให้โทร Nearby.getMessagesClient(Activity).subscribe() คุณจะต้องผ่าน MessageListener ในการรับข้อความที่สมัครรับข้อมูล

หรือจะโทรหา SubscribeOptions.setStrategy() ก็ได้ เพื่อกำหนดกลยุทธ์ ในการใช้กัน

ตัวอย่างต่อไปนี้แสดงการสมัครรับข้อมูลข้อความ

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);
}

ยกเลิกการสมัคร

หากต้องการยกเลิกการสมัครและหยุดรับข้อความจากอุปกรณ์ โปรดโทร Nearby.getMessagesClient(Activity).unsubscribe() ผ่าน MessageListener ออบเจ็กต์ที่ใช้ในการสมัครใช้บริการ (mMessageListener ในตัวอย่างนี้)

ตัวอย่างโค้ดต่อไปนี้แสดงการยกเลิกการสมัคร

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