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

โดยค่าเริ่มต้น ระบบจะเชื่อมโยงหรือแชร์การแจ้งเตือนจากแอปในโทรศัพท์ไปยังนาฬิกาที่จับคู่ไว้ ถ้า คุณสร้างแอปสมาร์ทวอทช์และแอปของคุณก็อยู่ในโทรศัพท์ที่จับคู่แล้ว ผู้ใช้อาจได้รับเนื้อหาที่ซ้ำกัน การแจ้งเตือน 1 รายการสร้างขึ้นและเชื่อมต่อโดยแอปโทรศัพท์ และอีกรายการหนึ่งสร้าง จากแอปสมาร์ทวอทช์ 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 ตามที่แสดงในตัวอย่างต่อไปนี้

BridgingManager.fromContext(context).setConfig(
    BridgingConfig.Builder(context, false)
        .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree"))
        .build()
)

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

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

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

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

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

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

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

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

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

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

fun setDismissalId(dismissalId: String): WearableExtender
fun getDismissalId(): String

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

เมื่อปิดการแจ้งเตือน การแจ้งเตือนอื่นๆ ทั้งหมดที่มีรหัสการปิดการแจ้งเตือนเดียวกัน ปิดบนนาฬิกาและในโทรศัพท์ หากต้องการเรียกดูรหัสการปิด ให้ใช้ 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 ที่รอดำเนินการในการแจ้งเตือนนั้น สำหรับกรณีนี้ ให้ยังคงได้รับ Intent ที่รอดำเนินการในแอปจากการแจ้งเตือนที่ยกเลิกไปแล้วต่อไป เมื่อยกเลิกการแจ้งเตือน ให้เก็บผู้รับ Intent ที่รอดำเนินการของการแจ้งเตือนเหล่านั้นไว้ ใช้ได้
  • อย่ายกเลิกและเรียกกลุ่มการแจ้งเตือนทั้งหมดอีกครั้งในคราวเดียว แก้ไขหรือลบเฉพาะการแจ้งเตือนที่ถูกแก้ไขจริงๆ เท่านั้น ซึ่งจะหลีกเลี่ยงเวลาในการตอบสนองขณะอัปเดตอุปกรณ์ที่สวมใส่ได้ และลด ผลกระทบที่แอปมีต่ออายุการใช้งานแบตเตอรี่

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

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