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

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

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

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

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

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

کارت‌های اعلان

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

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

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

اعلان‌های پیشنهادی برای دستگاه‌های پوشیدنی

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

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

اعلان قابل ارتقا

شکل ۲. نمونه‌ای از اعلان MessagingStyle در Wear OS.

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

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

جلوگیری از ارسال اعلان‌های تکراری

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

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

Wear OS با استفاده از رابط‌های برنامه‌نویسی کاربردی پل‌سازی (Bridging APIs) راهی برای جلوگیری از اعلان‌های تکراری ارائه می‌دهد. این امر به ویژه برای برنامه‌هایی که روی دستگاه‌هایی با 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 به عنوان هدف اکشن اعلان استفاده کنید.