اعلان‌ها در Wear OS

اعلان‌های ساعت‌ها از همان میاناهای برنامه‌سازی کاربردی استفاده می‌کنند و ساختاری مشابه اعلان‌های تلفن دارند.

اعلان‌ها به دو روش می‌توانند روی ساعت نشان داده شوند:

  1. برنامه تلفن همراه اعلانی ایجاد می‌کند و سیستم به‌طور خودکار آن اعلان را به ساعت منتقل می‌کند.
  2. برنامه پوشیدنی اعلانی ایجاد می‌کند.

برای هر دو سناریو، از کلاس NotificationCompat.Builder برای ایجاد اعلان استفاده کنید. وقتی اعلان‌ها را با کلاس سازنده می‌سازید، سیستم از نمایش صحیح اعلان‌ها مراقبت می‌کند. برای مثال، وقتی اعلانی از برنامه تلفن همراهتان صادر می‌کنید، هر اعلان به‌صورت کارت در «جاری‌سازی اعلان» نشان داده می‌شود.

برای دیدن نحوه نمایش اعلان‌ها، مثال زیر را مرور کنید.

کارت‌های اعلان در ساعت.
شکل ۱. اعلان یکسانی که در تلفن و ساعت نمایش داده می‌شود.

برای بهترین نتایج، از یکی از زیرکلاس‌های NotificationCompat.Style استفاده کنید.

توجه: استفاده از RemoteViews اعلان‌های چیدمان‌های سفارشی را حذف می‌کند و پوشیدنی فقط نوشتار و نمادها را نمایش می‌دهد.

توجه: اعلان‌های هدف تمام‌صفحه (setFullScreenIntent()) و اجازه USE_FULL_SCREEN_INTENT در Wear OS پشتیبانی نمی‌شود.

اعلان‌های توصیه‌شده برای فناوری‌های پوشیدنی

از اعلان‌های ازهم بازشدنی به‌عنوان نقطه شروع برای همه اعلان‌ها استفاده کنید، زیرا این اعلان‌ها روش بسیار خوبی برای تعامل با کاربران دستگاه‌های پوشیدنی هستند. وضعیت جمع‌شده در سینی اعلان برای تجربه کوتاه و سریع نمایش داده می‌شود. اگر کاربر روی آن تک‌ضرب بزند، اعلان ازهم باز می‌شود و تجربه پیمایش فراگیری از محتوا و کنش‌های اضافی را نشان می‌دهد.

می‌توانید همان‌طور که در تلفن همراه اعلان ازهم بازشدنی ایجاد می‌کنید بااستفاده از هریک از زیرکلاس‌های NotificationCompat.Style این کار را انجام دهید. برای مثال، اعلان استاندارد بااستفاده از NotificationCompat.MessagingStyle به این شکل است:

اعلان «سبک پیام‌رسانی» ازهم بازشدنی در ساعت
شکل ۲. نمونه‌ای از اعلان MessagingStyle در Wear OS.

می‌توانید ببینید که اعلان چندین کنش دارد که در پایین حالت ازهم بازشده چیده شده‌اند.

نکته: اگر اعلان‌هایتان شامل کنش «پاسخ» باشد، مثلاً برای برنامه پیام‌رسانی، می‌توانید عملکرد اعلان را بهبود دهید. برای مثال، می‌توانید ورودی صوتی پاسخ‌ها را مستقیماً از پوشیدنی یا پاسخ‌های نوشتاری ازپیش‌تعریف‌شده با setChoices() فعال کنید. برای اطلاعات بیشتر، افزودن دکمه پاسخ را بخوانید.

از اعلان‌های تکراری اجتناب کنید

به‌طور پیش‌فرض، اعلان‌ها از برنامه تلفن همراه به همه ساعت‌های جفت‌شده منتقل می‌شوند. اگر برنامه پوشیدنی نصب نکرده‌اید، این گزینه عالی است.

بااین‌حال، اگر برنامه ساعت مستقل و برنامه همراه تلفن بسازید، برنامه‌ها اعلان‌های تکراری ایجاد می‌کنند.

‫Wear OS با «میاناهای برنامه‌سازی کاربردی پل‌سازی» روشی برای متوقف کردن اعلان‌های تکراری ارائه می‌دهد. این موضوع به‌ویژه برای برنامه‌هایی که در دستگاه‌های دارای Wear OS 5 یا نسخه‌های بالاتر اجرا می‌شوند اهمیت دارد، زیرا برخی‌از اعلان‌هایی که در دستگاه همراه قابل‌بسته شدن هستند در دستگاه Wear OS قابل‌بسته شدن نیستند. برای اطلاعات بیشتر، گزینه‌های پل‌سازی برای اعلان‌ها را بخوانید.

افزودن ویژگی‌های مختص پوشیدنی به اعلان

اگر لازم است ویژگی‌های خاص دستگاه پوشیدنی را به اعلانی اضافه کنید، می‌توانید از NotificationCompat.WearableExtender کلاس برای مشخص کردن گزینه‌ها استفاده کنید. برای استفاده از این API، کارهای زیر را انجام دهید:

توجه: اگر از چارچوب NotificationManager استفاده می‌کنید، برخی‌از ویژگی‌های NotificationCompat.WearableExtender کار نمی‌کنند، بنابراین حتماً از NotificationCompat استفاده کنید.

این مثال نشان می‌دهد چگونه یک کنش ویژه Wear را روی اعلان تنظیم کنید و همچنین شناسه بستن اعلان را تنظیم کنید. وقتی اعلان بسته می‌شود، همه اعلان‌های دیگر با شناسه بسته شدن یکسان در ساعت و تلفن همراه بسته می‌شوند. برای بازیابی شناسه رد، از 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 به‌عنوان هدف کنش اعلان استفاده کنید.