بهطور پیشفرض، اعلانها از یک برنامه روی تلفن به ساعتهای جفت شده پل زده یا به اشتراک گذاشته میشوند. اگر یک برنامه ساعت میسازید و برنامه شما روی یک تلفن جفت شده نیز وجود دارد، کاربران ممکن است اعلانهای تکراری را دریافت کنند - یکی توسط برنامه تلفن تولید و پلشده و دیگری توسط برنامه ساعت ایجاد میشود. 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
همانطور که در مثال زیر نشان داده شده است استفاده کنید:
BridgingManager.fromContext(context).setConfig( BridgingConfig.Builder(context, false) .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree")) .build() )
غیرفعال کردن پل زدن برای همه اعلان ها (توصیه نمی شود)
توجه: غیرفعال کردن پل زدن برای همه اعلانها توصیه نمیشود، زیرا پیکربندی پلسازی تنظیم شده در مانیفست به محض نصب برنامه ساعت اعمال میشود. اگر کاربر نیاز به باز کردن و راهاندازی برنامه ساعت قبل از دریافت اعلانها داشته باشد، این میتواند منجر به از بین رفتن اعلانها شود.
برای جلوگیری از پل زدن همه اعلانها از یک برنامه تلفن، از ورودی <meta-data>
در فایل مانیفست برنامه ساعت استفاده کنید، همانطور که در مثال زیر نشان داده شده است:
<application> ... <!-- Beware, this can have unintended consqequences before the user is signed-in --> <meta-data android:name="com.google.android.wearable.notificationBridgeMode" android:value="NO_BRIDGING" /> ... </application>
توجه: تعیین یک پیکربندی پل زدن در زمان اجرا، تنظیمات مربوط به پل زدن را در فایل مانیفست اندروید لغو میکند.
برای همگامسازی اعلانهای مشابه، یک شناسه اخراج تنظیم کنید
وقتی از پل زدن با ویژگی حالت پل زدن جلوگیری میکنید، رد اعلانها در دستگاههای کاربر همگامسازی نمیشوند.
با این حال، اگر اعلانهای مشابهی هم در دستگاه تلفن همراه و هم در ساعت ایجاد میشوند، میخواهید زمانی که کاربر یکی از آنها را رد میکند، هر دو اعلانها رد شوند.
در NotificationCompat.WearableExtender
، میتوانید یک شناسه منحصربهفرد جهانی تنظیم کنید تا وقتی یک اعلان نادیده گرفته میشود، سایر اعلانها با همان شناسه در ساعتهای جفت شده نیز نادیده گرفته شوند.
کلاس NotificationCompat.WearableExtender
روش هایی دارد که به شما امکان می دهد از شناسه های رد کردن استفاده کنید، همانطور که در مثال زیر نشان داده شده است:
fun setDismissalId(dismissalId: String): WearableExtender fun getDismissalId(): String
برای همگام سازی رد کردن، از متد setDismissalId()
استفاده کنید. برای هر اعلان، زمانی که متد setDismissalId()
را فراخوانی می کنید، یک شناسه منحصر به فرد جهانی را به عنوان رشته ارسال کنید.
وقتی اعلان رد میشود، همه اعلانهای دیگر با همان شناسه اخراج در ساعت و تلفن حذف میشوند. برای بازیابی شناسه رد کردن، از getDismissalId()
استفاده کنید.
در مثال زیر، یک شناسه منحصربهفرد جهانی برای یک اعلان جدید مشخص شده است، بنابراین اخراجها همگامسازی میشوند:
val notification = NotificationCompat.Builder(context, channelId) // Set other fields ... .extend( NotificationCompat.WearableExtender() .setDismissalId("abc123") ) .build()
توجه: اگر ساعتی با تلفن Android جفت شده باشد، شناسههای رد کردن کار میکنند، اما اگر ساعتی با آیفون جفت شده باشند، کار نمیکنند.
وقتی اعلانها پل نمیشوند
انواع اعلان های زیر پل نمی شوند:
- اعلانهای فقط محلی با استفاده از
Notification.Builder.setLocalOnly(boolean)
تنظیم میشوند. - اعلانهای در حال انجام با استفاده از
Notification.Builder.setOngoing(boolean)
یاNotification.FLAG_ONGOING_EVENT
تنظیم میشوند. - اعلانهای غیرقابل پاکسازی با استفاده از
Notification.FLAG_NO_CLEAR
تنظیم میشوند. - اعلانهایی که در آن اپلیکیشن پوشیدنی مشابه، پل زدن اعلانها را غیرفعال کرده است، همانطور که قبلا توضیح داده شد.
بهترین روش ها برای اعلان های پل شده
فشار دادن یا حذف اعلان های پل شده از یک دستگاه پوشیدنی زمان می برد. همانطور که اعلان های خود را طراحی می کنید، مطمئن شوید که از رفتار غیرمنتظره ناشی از این تأخیر جلوگیری کنید. دستورالعملهای زیر کمک میکنند تا اطمینان حاصل شود که اعلانهای پلشده شما با اعلانهای ناهمزمان کار میکنند:
- اگر یک اعلان را در تلفن لغو کنید، ممکن است مدتی طول بکشد تا اعلان مربوطه در ساعت لغو شود. در طول این مدت، کاربر ممکن است یکی از اهداف معلق را در آن اعلان ارسال کند. به همین دلیل، به دریافت اهداف معلق در برنامه خود از اعلانهایی که لغو کرده است ادامه دهید: هنگام لغو اعلانها، گیرندههای هدف معلق آن اعلانها را معتبر نگه دارید.
- یک پشته کامل از اعلان ها را همزمان لغو و دوباره راه اندازی نکنید. فقط اعلان هایی را تغییر دهید یا حذف کنید که واقعاً اصلاح شده اند. این کار از تأخیر در بهروزرسانی دستگاه پوشیدنی جلوگیری میکند و تأثیر برنامه شما بر عمر باتری را کاهش میدهد.
ملاحظات طراحی
اعلانهای Wear OS دستورالعملهای طراحی خاص خود را دارند. برای اطلاعات بیشتر، دستورالعملهای طراحی Wear OS را مرور کنید.