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

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

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

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

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

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

notification-cards

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

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

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

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

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

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

คุณสามารถ สร้างการแจ้งเตือนที่ขยายได้ ด้วยวิธีเดียวกับที่ทำในอุปกรณ์เคลื่อนที่ โดยใช้คลาสย่อย NotificationCompat.Style คลาสใดคลาสหนึ่ง เช่น การแจ้งเตือนมาตรฐานที่ใช้ NotificationCompat.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 เป็นเป้าหมาย ของการดำเนินการแจ้งเตือนได้