د پوسټ مینځپانګه
سوال پرتکرار بعدی در مورد این نوتیفیکیشن دائمی اپلیکیشن (تصویر اول) بود که بابت اون دسترسی نوتیفیکیشن گرفته میشه. اپلیکیشن مطمئن باش دو نوع عملکرد دستی و خودکار داره. عملکرد دستی شامل اسکن دستی اپها و بررسی دستی لینک داخل برنامه و... است. عملکرد خودکار مربوط به زمانیه که شما برنامه رو بستید اما به صورت خودکار هنگام نصب اپلیکیشن، اطلاعات اون رو در دیتابیس آفلاین داخل خود برنامه چک میکنه که اگر اطلاعاتی در موردش وجود داشت به کاربر هشدار بده. برای چنین عملکرد خودکاری، یک سرویس باید در پیشزمینه فعال باشه که در برنامهنویسی اندروید بهش (Foreground Service) گفته میشه. حالا در نظر بگیرید در گذشته اپلیکیشنهای زیادی ممکن بود بدون اینکه شما متوجه باشید برای کارهای مختلف در گوشی شما یک سرویس در پیشزمینه اجرا میکردند. این سرویس باعث مصرف منابع و باتری و... هم میشد. مثل زمانی که یک آهنگ یا پادکست گوش میدید اما اپلیکیشن موزیکپلیر یا پادکست رو بستید. در راستای حفاضت بیشتر از کاربر، خود اندروید در نسخههای جدیدتر، برنامهنویس رو مجبور کرده برای اجرای یک سرویس در پیشزمینه یک نوتیفیکیشن به کاربر نمایش بده تا کاربر متوجه باشه یک سرویس در پیشزمینه توسط این برنامه در حال اجراست. اندروید این اقدام و اجبار رو برای این گذاشته که هیچ اپلیکیشنی بدون اطلاع کاربر یواشکی سرویس پیشزمینه فعال نداشته باشه. حتی موقع برنامه نویسی وقتی بخوای برای اجرای سرویس از دستوی startForeground استفاده کنی، مجبوری یک نوتیفیکیشن به این دستور ارسال کنید. (طبق تصویر دوم): startForeground(FOREGROUND_NOTIFICATION_ID, serviceNotification) طبق تصویر سوم که از مستندات رسمی توسعهدهندگان اندروید به آدرس زیر است (لینک برای ایران تحریم است و باید با ویپیان باز کنید): https://developer.android.com/develop/background-work/services/fgs نوشته شده: Foreground services show a status bar notification, to make users aware that your app is performing a task in the foreground and is consuming system resources. که ترجمه دقیقش اینه: سرویسهای پیشزمینه یک اعلان در نوار وضعیت نشان میدهند تا کاربران را از اینکه برنامه شما در حال انجام یک کار در پیشزمینه است و منابع سیستم را مصرف میکند، آگاه کنند. در خطهای بعدیش هم دقیقا مثال اپلیکیشن موزیکپلیر رو نوشته: A music player app that plays music in a foreground service. The notification might show the current song being played. حالا این نوتیفیکیشنها نوع (Type)های مختلف دارند. مثلا موزیکپلیرها و اپهای پادکست از نوع FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK (پخش رسانه) استفاده میکنند که باعث میشه در اندرویدهای جدیدتر به شکل یک مربع دیده بشه. نوع تماس و مکان و... هم داره که باعث میشه شکل ظاهریشون تغییر کنه. حالا اپلیکیشنها برای اینکه این نوتیفیکیشن خیلی بلااستفاده نباشه، روی اون برخی اطلاعات یا دکمههای کاربردی رو میذارن. من هم فعلا در نسخه اول نوشته "در حال محافظت توسط مطمئن باش" رو نوشتم که کاربر متوجه بشه سرویس برنامه در حال اجراست. و دقایقی بعد تغییر میکنه و وضعیت سپرهای فعال رو نمایش میده تا به هر دلیلی سپری غیرفعال شد کاربر متوجه بشه. در نظر دارم در نسخههای بعدی این نوتیفیکیشن رو کاربردیتر کنیم و در تنظیمات کاربر انتخاب کنه همین متن باشه یا به جاش تاریخ شمسی نمایش داده بشه یا دکمه اسکن برنامهها و... خلاصه موضوع اینکه نمایش این نوتیفیکیشن از سمت اندروید اجباریست و از نظر فنی راهی برای مخفی شدن آن نیست. چنانچه دسترسی نوتیفیکیشن برنامه برای این موضوع غیرفعال شود، سرویس خودکار برنامه از کار خواهد افتاد. برای اینکه این نوتیفیکیشن اجباری کمتر باعث مزاحمت باشد، من اهمیت اون رو کمترین حد ممکن قرار دادم تا نوتیفیکیشنهای مهمتر بالاتر بیاد. اون رو سایلنت کردم و... تنها راه این است منتظر بمانید در نسخههای بعد از این فضا استفاده بهتری شود و برای محتوای آن به مرور تنظیمات بیشتری اضافه کنم. وگرنه طبق مستندات فنی اندروید، غیرفعال کردن آن ممکن نیست. 👀 🖥@MiladNouriChannel