โดยค่าเริ่มต้น ระบบจะบริดจ์หรือแชร์การแจ้งเตือนจากแอปโทรศัพท์ไปยัง นาฬิกาที่จับคู่ไว้ หากคุณสร้างแอปสมาร์ทวอทช์และแอปของคุณมีอยู่ในโทรศัพท์ที่จับคู่ด้วย ผู้ใช้อาจได้รับการแจ้งเตือนซ้ำ 2 รายการ ได้แก่ รายการที่แอปโทรศัพท์สร้างและบริดจ์ และรายการที่แอปสมาร์ทวอทช์สร้าง 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() )
ปิดใช้การบริดจ์สำหรับการแจ้งเตือนทั้งหมด (ไม่แนะนำ)
หากต้องการป้องกันไม่ให้มีการบริดจ์การแจ้งเตือนทั้งหมดจากแอปโทรศัพท์ ให้ใช้รายการ
<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" />
ตั้งค่ารหัสการปิดเพื่อซิงค์การแจ้งเตือนที่คล้ายกัน
เมื่อคุณป้องกันการบริดจ์ด้วยฟีเจอร์โหมดการบริดจ์ ระบบจะไม่ซิงค์การปิดการแจ้งเตือนในอุปกรณ์ของผู้ใช้
อย่างไรก็ตาม หากมีการสร้างการแจ้งเตือนที่คล้ายกันทั้งในโทรศัพท์และนาฬิกา คุณอาจต้องการให้ระบบปิดการแจ้งเตือนทั้ง 2 รายการเมื่อผู้ใช้ปิดการแจ้งเตือนรายการใดรายการหนึ่ง
ใน
NotificationCompat.WearableExtender
คุณสามารถตั้งค่ารหัสที่ไม่ซ้ำกันทั่วโลกเพื่อให้เมื่อผู้ใช้ปิดการแจ้งเตือน
การแจ้งเตือนอื่นๆ ที่มีรหัสเดียวกันในนาฬิกาที่จับคู่ไว้จะถูกปิดด้วย
คลาส NotificationCompat.WearableExtender มีเมธอดที่ช่วยให้คุณใช้รหัสการยกเลิกได้ ดังที่แสดงในตัวอย่างต่อไปนี้
เมื่อผู้ใช้ปิดการแจ้งเตือน การแจ้งเตือนอื่นๆ ทั้งหมดที่มี
รหัสการปิดเดียวกันจะถูกปิดบนนาฬิกาและโทรศัพท์ หากต้องการดึงข้อมูล
รหัสการปฏิเสธ ให้ใช้ getDismissalId()
ในตัวอย่างต่อไปนี้ มีการระบุรหัสที่ไม่ซ้ำกันทั่วโลกสำหรับ การแจ้งเตือนใหม่ เพื่อให้ระบบซิงค์การปิดการแจ้งเตือน
val notification = NotificationCompat.Builder(context, channelId) // ... set other fields ... .extend( NotificationCompat.WearableExtender() .setDismissalId("abc123") ) .build()
การแจ้งเตือนเฉพาะในพื้นที่
หากไม่ต้องการรับการแจ้งเตือนซ้ำ คุณสามารถใช้ setLocalOnly() เพื่อ
ให้การแจ้งเตือนอยู่ในโทรศัพท์ได้
อย่างไรก็ตาม ให้ใช้วิธีนี้เฉพาะในกรณีที่ต้องให้การแจ้งเตือนปรากฏเฉพาะในอุปกรณ์ที่สร้างการแจ้งเตือนเท่านั้น ซึ่งรวมถึงไม่เพียงแค่อุปกรณ์ Wear OS แต่ยังรวมถึงอุปกรณ์ที่สวมใส่ได้อื่นๆ และอุปกรณ์อื่นๆ ที่เชื่อมต่อด้วย การแจ้งเตือนในเครื่องเท่านั้นจะไม่ เชื่อมต่อ แม้ว่าคุณจะไม่ได้ติดตั้งแอปในนาฬิกาก็ตาม
เมื่อสร้างแอป Wear OS และแอปโทรศัพท์ที่สร้างการแจ้งเตือนทั้งคู่ อย่าใช้วิธีนี้เพื่อหลีกเลี่ยงการแจ้งเตือนที่ซ้ำกัน แต่ให้ใช้ตัวเลือกการเชื่อมต่อ แทน
ตัวอย่างเช่น ใช้การแจ้งเตือนแบบเฉพาะในเครื่องเมื่อผู้ใช้ดาวน์โหลดไฟล์ในโทรศัพท์ และการแจ้งเตือนระบุว่าการดาวน์โหลดเสร็จสมบูรณ์แล้ว
เมื่อไม่มีการเชื่อมต่อการแจ้งเตือน
ระบบจะไม่เชื่อมต่อการแจ้งเตือนประเภทต่อไปนี้
- การแจ้งเตือนในพื้นที่เท่านั้นที่ตั้งค่าโดยใช้
Notification.Builder.setLocalOnly(boolean) - การแจ้งเตือนที่ทำงานอยู่ซึ่งตั้งค่าโดยใช้
Notification.Builder.setOngoing(boolean)หรือNotification.FLAG_ONGOING_EVENT - การแจ้งเตือนที่ล้างไม่ได้ซึ่งตั้งค่าโดยใช้
Notification.FLAG_NO_CLEAR - การแจ้งเตือนที่แอปสำหรับอุปกรณ์สวมใส่คู่กันปิดใช้การส่งต่อการแจ้งเตือน
ข้อควรพิจารณาในการติดตั้งใช้งานสำหรับการแจ้งเตือนที่เชื่อม
ระบบจะใช้เวลาในการพุชหรือนำการแจ้งเตือนที่บริดจ์จากอุปกรณ์ที่สวมใส่ได้ออก ขณะออกแบบการแจ้งเตือน โปรดหลีกเลี่ยงลักษณะการทำงานที่ไม่คาดคิดซึ่งเกิดจากเวลาในการตอบสนองนี้ หลักเกณฑ์ต่อไปนี้จะช่วยให้มั่นใจว่าการแจ้งเตือนที่บริดจ์จะทำงานกับการแจ้งเตือนแบบอะซิงโครนัส
- หากยกเลิกการแจ้งเตือนในโทรศัพท์ ระบบอาจใช้เวลาสักครู่ในการยกเลิก การแจ้งเตือนที่เกี่ยวข้องในนาฬิกา ในระหว่างนี้ ผู้ใช้ อาจส่งหนึ่งใน PendingIntent ในการแจ้งเตือนนั้น ด้วยเหตุนี้ คุณจึงยังคงได้รับ PendingIntent ในแอปจากการแจ้งเตือนที่ระบบยกเลิก เมื่อยกเลิกการแจ้งเตือน ให้เก็บตัวรับ PendingIntent ของการแจ้งเตือนเหล่านั้นไว้ให้ถูกต้อง
- อย่ายกเลิกและทริกเกอร์การแจ้งเตือนทั้งหมดอีกครั้งพร้อมกัน แก้ไขหรือนำการแจ้งเตือนที่ได้รับการแก้ไขจริงออกเท่านั้น ซึ่งจะหลีกเลี่ยงเวลาในการตอบสนองในการอัปเดตอุปกรณ์ที่สวมใส่ได้และลดผลกระทบของแอปต่ออายุการใช้งานแบตเตอรี่
ข้อควรพิจารณาในการออกแบบ
การแจ้งเตือนของ Wear OS มีหลักเกณฑ์การออกแบบของตัวเอง ดูข้อมูลเพิ่มเติมได้ที่หลักเกณฑ์การออกแบบ Wear OS