การแจ้งเตือนใน Wear OS

การแจ้งเตือนในนาฬิกาใช้ API เดียวกันและมีโครงสร้างเหมือนกับการแจ้งเตือนในโทรศัพท์

การแจ้งเตือนจะปรากฏในนาฬิกาได้ 2 วิธีดังนี้

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

สำหรับทั้ง 2 กรณี ให้ใช้คลาส NotificationCompat.Builder เพื่อสร้างการแจ้งเตือน เมื่อคุณสร้างการแจ้งเตือนด้วยคลาส Builder ระบบ จะจัดการการแสดงการแจ้งเตือนอย่างเหมาะสม เช่น เมื่อคุณออกการแจ้งเตือนจาก แอปบนอุปกรณ์เคลื่อนที่ การแจ้งเตือนแต่ละรายการจะปรากฏเป็นการ์ดในสตรีมการแจ้งเตือน

ดูตัวอย่างต่อไปนี้เพื่อดูวิธีแสดงการแจ้งเตือน

การ์ดการแจ้งเตือนในนาฬิกา
รูปที่ 1 การแจ้งเตือนเดียวกันที่แสดงในโทรศัพท์และในนาฬิกา

ใช้คลาสย่อย NotificationCompat.Style คลาสใดคลาสหนึ่งเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด

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

หมายเหตุ: ระบบไม่รองรับการแจ้งเตือน Intent เต็มหน้าจอ (setFullScreenIntent()) และสิทธิ์ USE_FULL_SCREEN_INTENT ใน Wear OS

การแจ้งเตือนที่แนะนำสำหรับอุปกรณ์สวมใส่

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

คุณสามารถ สร้างการแจ้งเตือนที่ขยายได้ ด้วยวิธีเดียวกับที่ทำในอุปกรณ์เคลื่อนที่ โดยใช้คลาสย่อย NotificationCompat.Style คลาสใดคลาสหนึ่ง เช่น การแจ้งเตือนมาตรฐานที่ใช้ NotificationCompat.MessagingStyle จะมีลักษณะดังนี้

การแจ้งเตือน MessagingStyle ที่ขยายได้ในนาฬิกา
รูปที่ 2 ตัวอย่างการแจ้งเตือน MessagingStyle ใน Wear OS

คุณจะเห็นว่าการแจ้งเตือนมีการดำเนินการ หลายรายการซ้อนกันที่ด้านล่างของ สถานะขยาย

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

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

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

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

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

เพิ่มฟีเจอร์เฉพาะสำหรับอุปกรณ์สวมใส่ในการแจ้งเตือน

หากต้องการเพิ่มฟีเจอร์เฉพาะสำหรับอุปกรณ์สวมใส่ในการแจ้งเตือน คุณสามารถใช้คลาส NotificationCompat.WearableExtender เพื่อระบุตัวเลือก หากต้องการใช้ API นี้ ให้ทำดังนี้

หมายเหตุ: หากคุณใช้ NotificationManager ของเฟรมเวิร์ก ฟีเจอร์บางอย่างจาก NotificationCompat.WearableExtender จะไม่ทำงาน ดังนั้นโปรดใช้ NotificationCompat

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

// This intent will be fired as a result of the user clicking the "Open on watch" action.
// However, it executes on the phone, not on the watch. Typically, the Activity should then use
// RemoteActivityHelper to then launch the correct activity on the watch.
val intent = Intent(context, LaunchOnWearActivity::class.java)
val wearPendingIntent = PendingIntent.getActivity(
    context,
    wearRequestCode,
    intent,
    PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)

val openOnWatchAction = NotificationCompat.Action.Builder(
    R.drawable.watch,
    "Open on watch",
    wearPendingIntent
)
    .build()

val wearableExtender = NotificationCompat.WearableExtender()
    // This action will only be shown on the watch, not on the phone.
    // Actions added to the Notification builder directly will not be shown on the watch,
    // because one or more actions are defined in the WearableExtender.
    .addAction(openOnWatchAction)
    // This synchronizes dismissals between watch and phone.
    .setDismissalId(chatId)

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(wearableExtender)
    .build()

เปิดแอปในโทรศัพท์จากอุปกรณ์ที่สวมใส่ได้

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

  1. สร้าง Activity ใหม่ที่ขยาย ConfirmationActivity
  2. ใช้ RemoteActivityHelper ใน Activity ใหม่เพื่อเปิดแอปในโทรศัพท์
  3. เมื่อสร้าง Intent เพื่อเปิด Activity จากการแจ้งเตือน ให้ตั้งค่าส่วนเพิ่มเติม EXTRA_ANIMATION_TYPE เป็น OPEN_ON_PHONE_ANIMATION

แนวทางนี้จะแนะนำให้ผู้ใช้โต้ตอบในโทรศัพท์และเป็นไปตาม ข้อกำหนดของแพลตฟอร์มสำหรับการเปิดกระบวนการเบื้องหลัง

หมายเหตุ: คุณไม่สามารถใช้ BroadcastReceiver เป็นเป้าหมาย ของการดำเนินการแจ้งเตือนได้