برنامه نویسی 1248 بازدید

اعلان یا «نوتیفیکیشن» (Notification) یکی از سریع‌ترین و آسان‌ترین روش‌ها برای افزایش تعامل‌پذیری و جذب کاربر به اپلیکیشن محسوب می‌شود. نوتیفیکیشن، چکیده کوتاهی از اطلاعاتی که کاربر باید در لحظه جاری بداند را در اختیار وی قرار می‌دهد. نوتیفیکیشن‌ها همچنین به کاربران امکان می‌دهند که در برابر رویدادهای مختلف به سرعت اقداماتی اتخاذ کنند. ما در این نوشته به بررسی مثال‌های پر استفاده از نوتیفیکیشن اندروید می‌پردازیم تا بتوانید در کمترین زمان ممکن به کاربران خود اطلاع‌رسانی کنید.

Android Notifications

ساخت یک نوتیفیکیشن اندروید

نخستین گام برای نمایش یک نوتیفیکیشن برای کاربر، ساخت یک «شیء نوتیفیکیشن» است. نوتیفیکیشن با استفاده از یک NotificationCompat.Builder ساخته می‌شود. کمینه اطلاعاتی که برای نمایش یک نوتیفیکیشن مورد نیاز است صرفاً شامل یک آیکون کوچک می‌شود. این همه موارد ضروری را شامل می‌شود؛ اما چندان مفید نیست. نوتیفیکیشن‌ها باید برای کاربر مفید باشند و از این رو عموماً شامل یک عنوان و متن هستند. در ادامه نموداری از یک نوتیفیکیشن معمول را می‌بیند که بخش‌های مهم توضیح داده شده‌اند.

نوتیفیکیشن اندروید

  • آیکون کوچک در «نوار وضعیت» (status bar) نمایش می‌یابد و لازم است بدانید که رنگ آن در زمان نمایش ترسیم می‌شود. دلیل این مسئله آن است که این آیکون باید کانال آلفا داشته باشد، چون اگر چنین نباشد، در نهایت به جای رنگ خاص برندتان با یک آیکون سفید در نوار وضعیت مواجه خواهید شد.
  • عنوان محتوا نیز مهم است. این عنوان باید توصیفی کوتاه از آن چه نوتیفیکیشن نمایش می‌دهد باشد.
  • متن اصلی محتوا جزییات نسبتاً بیشتری از نوتیفیکیشن ارائه می‌کند. در مورد میزان حجم متنی که در بدنه محتوا قرار می‌دهید باید هوشیار باشید، چون به طور معمول از یک خط متن در این مکان استفاده می‌شود.
  • آیکون بزرگ یک فایل «نقشه‌بیتی» (Bitmap) است که به نوتیفیکیشن مربوط می‌شود. این فایل می‌تواند هر چیزی مانند یک تصویر پروفایل باشد.

کد مورد نیاز نسبتاً ساده است و اگر بخواهید آن را به صورت تجمیع شده ببینید به صورت زیر خواهد بود:

نمایش یک نوتیفیکیشن

اکنون که نوتیفیکیشن ما ساخته شده است باید روشی برای نشان دادن آن بیابیم. اندروید یک سرویس سیستمی برای نمایش نوتیفیکیشن به کاربر ارائه می‌کند. این سرویس با نام NotificationManagerCompat به اپلیکیشن امکان می‌دهد که به کاربر اعلانی را نمایش دهد. بدین منظور باید از یک notificationId و نوتیفیکیشنی که ساخته‌ایم استفاده کنیم.

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

کانال‌ها و اهمیتشان

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

کانال باید اطلاعات زیر را داشته باشد:

  • ID – یک شناسه برای کانال است که می‌تواند یک ثابت رشته‌ای در اپلیکیشن باشد.
  • Name – نام کانال که باید نوع نوتیفیکیشنی که کانال ارائه می‌کند را به اطلاع کاربر برساند. این متغیر می‌تواند کوتاه و ساده باشد مثلاً «Messages» بدین منظور مناسب است.
  • Importance – سطح اهمیت نوتیفیکیشن را می‌توان به صورت High ،Default ،Low یا Min تعیین کرد. میزان اهمیتی که تعیین می‌کنید، در واقع بیانگر سطح دخالت نوتیفیکیشن در زمان اطلاع‌رسانی به کاربر خواهد بود.
  • Description – این توضیح در منوی تنظیمات اندروید نمایش می‌یابد و باید جزییات بیشتری در مورد این کانال نمایش دهد.

پاسخ دادن به اقدام‌های کاربر

هر کاربر چندین روش برای تعامل با یک نوتیفیکیشن دارد. خوشبختانه API مورد نیاز برای مدیریت چگونگی تعامل با نوتیفیکیشن‌ها نسبتاً مشابه است. در این موارد از Intent و PendingIntent برای بازگشت دادن اقدام‌های کاربر به اپلیکیشن استفاده می‌شود و بدین ترتیب امکان اعمال نوعی منطق پدید می‌آید.

ساده‌ترین روش برای مدیریت حجم بالایی از نوتیفیکیشن‌ها، استفاده از یک BroadcastReceiver است. زمانی که کاربر، اقدامی روی یک نوتیفیکیشن صورت می‌دهد، Intent مربوطه پیدا می‌شود و متد onReceive در BroadcastReceiver اجرا می‌شود.

  • ContentIntent زمانی اجرا می‌شود که کاربر روی نوتیفیکیشن بزند. لازم به ذکر است که نوتیفیکیشن تا زمانی که متد (setAutoCancel(true هم روی نوتیفیکیشن فراخوانی نشده باشد، پاک نمی‌شود.
  • DeleteIntent زمانی اجرا می‌شود که کاربر نوتیفیکیشن را به یکی از دو طرف سوایپ کند.
  • Action-ها دکمه‌هایی در انتهای نوتیفیکیشن هستند. اکشن‌ها نیز به آیکون و عنوان نیاز دارند.

برای ایجاد یک BroadcastReceiver باید کلاس BroadcastReceiver را بسط دهیم و متد onReceive را override کنیم. فراموش نکنید که Receiver را در فایل AndroidManifest.xml نیز اعلان کنید.

سخن پایانی

NotificationController یک ابزار سریع جهت ایجاد PendingIntent برای نوتیفیکیشن‌ها محسوب می‌شود. مهم‌ترین نکته این است که اقدام‌هایی با نام متفاوت، برای مدیریت صحیح شیوه تعامل کاربر با نوتیفیکیشن‌ها ایجاد کنیم. ضمناً اگر قصد دارید یک Activity را از BroadcastReceiver اجرا کنید باید از IntentFlag به نام NEW_TASK استفاده کنید. Intent-ها را می‌توان در BroadcastReceiver-های مختلف نیز ثبت کرد و از این رو می‌توانید دامنه آن را به یک BroadcastReceiver برای هر نوع نوتیفیکیشن محدود کنید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

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

بر اساس رای 2 نفر

آیا این مطلب برای شما مفید بود؟

4 نظر در “نوتیفیکیشن های اندروید برای توسعه دهندگان — به زبان ساده

  • سلام من یه سوال داشتم
    میخواستم یک نوتیفیکیشن به صورت روزانه ارسال بشه و وقتی روی اون کلیک شد یه اکتیویتی رو باز کنه که عکس یا متن اون اکتیویتی به صورت روازنه تغییر کنه

    1. سلام و وقت بخیر
      ابتدا باید اشاره کنیم که ارسال نوتیفیکشن برای پلتفرم‌های مختلف از قبیل اندروید، iOS یا وب، شرایط و الزامات متفاوتی دارد، اما به طور کلی در همه پلتفرم‌ها در زمان ثبت کاربر، دستگاه مورد استفاده (Device ID) نیز ذخیره می‌شود. لذا زمانی که می‌خواهیم یک اعلان سفارشی برای یک کاربر بفرستیم، در بک‌اند از این شناسه دستگاه برای ارسال خاص به آن کاربر بهره می‌گیریم.
      با تشکر.

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *