การเชื่อมตัวเลือกการแจ้งเตือน

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

หลีกเลี่ยงการแจ้งเตือนที่ซ้ำกัน

เมื่อสร้างการแจ้งเตือนจากแหล่งที่มาภายนอก เช่น จาก Firebase Cloud Messaging แอปบนอุปกรณ์เคลื่อนที่และแอปบนอุปกรณ์ที่สวมใส่ได้จะแสดงการแจ้งเตือนของตัวเองบนนาฬิกาได้ หากต้องการหลีกเลี่ยง การซ้ำกันในลักษณะนี้ ให้ปิดใช้การเชื่อมต่อในแอปบนอุปกรณ์ที่สวมใส่ได้โดยอัตโนมัติ

ใช้แท็กบริดจ์

หากต้องการบริดจ์การแจ้งเตือนบางรายการที่สร้างในแอปบนอุปกรณ์เคลื่อนที่ไปยังนาฬิกา เมื่อติดตั้งแอปที่สวมใส่ได้ ให้ตั้งค่าแท็กบริดจ์

ตั้งค่าแท็กบริดจ์ในการแจ้งเตือนโดยใช้เมธอด setBridgeTag(String) ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(
        NotificationCompat.WearableExtender()
            .setBridgeTag("tagOne")
    )
    .build()

ปิดใช้การบริดจ์

คุณปิดใช้การเชื่อมต่อสำหรับการแจ้งเตือนบางรายการหรือทั้งหมดได้ เราขอแนะนำให้คุณปิดใช้การบริดจ์เฉพาะบางรายการ

ปิดใช้การเชื่อมสำหรับการแจ้งเตือนบางรายการ

คุณปิดใช้การเชื่อมต่อแบบไดนามิก และเลือกอนุญาตการแจ้งเตือนบางรายการ ตามแท็กของการแจ้งเตือนได้ ตัวอย่างเช่น หากต้องการปิดใช้การเชื่อมโยงสำหรับการแจ้งเตือนทั้งหมด ยกเว้นการแจ้งเตือนที่ติดแท็กเป็น tagOne, tagTwo หรือ tagThree ให้ใช้ออบเจ็กต์ BridgingConfig ดังที่แสดงในตัวอย่างต่อไปนี้

// In this example, bridging is only enabled for tagOne, tagTwo and tagThree.
BridgingManager.fromContext(context).setConfig(
    BridgingConfig.Builder(context, isBridgingEnabled = false)
        .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree"))
        .build()
)

ปิดใช้การเชื่อมสำหรับการแจ้งเตือนทั้งหมด (ไม่แนะนำ)

หมายเหตุ: เราไม่แนะนำให้ปิดใช้การเชื่อมโยงสำหรับการแจ้งเตือนทั้งหมด เนื่องจาก การกำหนดค่าการเชื่อมโยงที่ตั้งค่าไว้ในไฟล์ Manifest จะมีผลทันทีที่ติดตั้งแอปนาฬิกา ซึ่งอาจทำให้การแจ้งเตือนสูญหายหากผู้ใช้ต้องเปิดและตั้งค่าแอปนาฬิกา ก่อนที่จะได้รับการแจ้งเตือน

หากต้องการป้องกันการส่งต่อการแจ้งเตือนทั้งหมดจากแอปโทรศัพท์ ให้ใช้รายการ <meta-data> ในไฟล์ Manifest ของแอปนาฬิกา ดังที่แสดงในตัวอย่างต่อไปนี้

<!-- Beware, this can have unintended consequences before the user is signed-in -->
<meta-data
    android:name="com.google.android.wearable.notificationBridgeMode"
    android:value="NO_BRIDGING" />

หมายเหตุ: การระบุการกำหนดค่าการเชื่อมต่อที่รันไทม์จะลบล้างการตั้งค่าที่เกี่ยวข้องกับการเชื่อมต่อ ในไฟล์ Manifest ของ Android

ตั้งค่ารหัสการปิดเพื่อซิงค์การแจ้งเตือนที่คล้ายกัน

เมื่อป้องกันการเชื่อมต่อด้วยฟีเจอร์โหมดการเชื่อมต่อ ระบบจะไม่ซิงค์การปิดการแจ้งเตือนในอุปกรณ์ของผู้ใช้

อย่างไรก็ตาม หากมีการสร้างการแจ้งเตือนที่คล้ายกันทั้งในอุปกรณ์เคลื่อนที่และนาฬิกา คุณอาจต้องการให้ระบบปิดการแจ้งเตือนทั้ง 2 รายการเมื่อผู้ใช้ปิดการแจ้งเตือนรายการใดรายการหนึ่ง

ใน NotificationCompat.WearableExtender คุณสามารถตั้งค่ารหัสที่ไม่ซ้ำกันทั่วโลกเพื่อให้เมื่อมีการปิดการแจ้งเตือน การแจ้งเตือนอื่นๆ ที่มีรหัสเดียวกันในนาฬิกาที่จับคู่ไว้จะถูกปิดด้วย

คลาส NotificationCompat.WearableExtender มีเมธอดที่ช่วยให้คุณใช้รหัสการปิดได้ ดังที่แสดงในตัวอย่างต่อไปนี้

เมื่อการแจ้งเตือนปิด การแจ้งเตือนอื่นๆ ทั้งหมดที่มีรหัสการปิดเดียวกันจะปิดในนาฬิกาและโทรศัพท์ด้วย หากต้องการเรียกข้อมูลรหัสการยกเลิก ให้ใช้ getDismissalId()

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

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(
        NotificationCompat.WearableExtender()
            .setDismissalId("abc123")
    )
    .build()

หมายเหตุ: รหัสการยกเลิกจะใช้งานได้หากจับคู่นาฬิกากับโทรศัพท์ Android แต่จะใช้งานไม่ได้หากจับคู่นาฬิกากับ iPhone

เมื่อไม่มีการเชื่อมต่อการแจ้งเตือน

ระบบจะไม่เชื่อมต่อการแจ้งเตือนประเภทต่อไปนี้

  • การแจ้งเตือนในพื้นที่เท่านั้นที่ตั้งค่าโดยใช้ Notification.Builder.setLocalOnly(boolean)
  • การแจ้งเตือนต่อเนื่องที่ตั้งค่าโดยใช้ Notification.Builder.setOngoing(boolean) หรือ Notification.FLAG_ONGOING_EVENT
  • การแจ้งเตือนที่ล้างไม่ได้ซึ่งตั้งค่าโดยใช้ Notification.FLAG_NO_CLEAR
  • การแจ้งเตือนที่แอปบนอุปกรณ์ที่สวมใส่คู่กันได้ ปิดใช้การเชื่อมต่อการแจ้งเตือนตามที่อธิบายไว้ก่อนหน้านี้

แนวทางปฏิบัติแนะนำสำหรับการแจ้งเตือนที่เชื่อมต่อ

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

  • หากยกเลิกการแจ้งเตือนในโทรศัพท์ ระบบอาจใช้เวลาสักครู่ในการยกเลิก การแจ้งเตือนที่เกี่ยวข้องในนาฬิกา ในระหว่างนี้ ผู้ใช้อาจส่งหนึ่งใน Intent ที่รอดำเนินการในการแจ้งเตือนนั้น ด้วยเหตุนี้ โปรดรับ PendingIntent ในแอปต่อไปจากการแจ้งเตือนที่ยกเลิก เมื่อยกเลิกการแจ้งเตือน ให้เก็บตัวรับ PendingIntent ของการแจ้งเตือนเหล่านั้น ไว้
  • อย่ายกเลิกและทริกเกอร์การแจ้งเตือนทั้งหมดอีกครั้งพร้อมกัน แก้ไขหรือนำการแจ้งเตือนที่ได้รับการแก้ไขจริงออกเท่านั้น ซึ่งจะช่วยหลีกเลี่ยงเวลาในการตอบสนองในการอัปเดตอุปกรณ์ที่สวมใส่ได้และลดผลกระทบของแอปต่ออายุการใช้งานแบตเตอรี่

ข้อควรพิจารณาในการออกแบบ

การแจ้งเตือนของ Wear OS มีหลักเกณฑ์การออกแบบของตัวเอง ดูข้อมูลเพิ่มเติมได้ที่หลักเกณฑ์การออกแบบ Wear OS