44 -اندرويد : بناء التنبيه Building a Notification

 

ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development

اندرويد :  بناء التنبيه Building a Notification

السلام عليكم ورحمة الله وبركاتهnotify3

سوف نقوم ضمن هذا الدرس بما يلي :

  1. إنشاء باني للتنبيه Create a Notification Builder
  2. تحديد حدث التنبيه Define the Notification’s Action
  3. تحديد السلوك الناتج عن نقر التنبيه Set the Notification’s Click Behavior
  4. اصدار التنبيه Issue the Notification

يفضل ايضا قراءة مايلي :

  • دليل واجهات التنبيهات Notification API Guide
  • دليل تصميم التنبيهات Notifications Design Guide

سيشرح لك هذا الدرس كيف تنشأ وتصدر تنبيهاً.

إن المثال الوارد ضمن هذا الدرس قائم على اساس صف NotificationCompat.Builder.

يتواجد صف NotificationCompat.Builder ضمن مكتبة الدعم Support Library.

 لكي تؤمن افضل دعم للتنبيه وتدعم مجال واسع من  منصات العمل , يتوجب عليك استخدام الصف NotificationCompat, والصفوف الوارثة له, وبشكل خاصNotificationCompat.Builder .

إنشاء باني التنبيه Create a Notification Builder

عندما نقوم ببناء تنبيه Notification  فنحن بحاجة لأن نحدد محتويات واجهة المستخدم , بالاضافة للاحداث المرافقة له ان وجدت , وكل ذلك يتم من خلال غرض NotificationCompat.Builder.

في الحد الآدنى, يتوجب ان يحوي غرض Builder  الامور التالية :

  • ايقونة صغيرة , يتم تحديدها واسنادها عبر التابع setSmallIcon().
  • عنوان , يتم تحديده واسناده عبر التابع setContentTitle().
  • النص التفصيلي , يتم تحديده واسناده عبر التابع setContentText().

على سبيل المثال :

NotificationCompat.Builder mBuilder =
    new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.notification_icon)
    .setContentTitle("My notification")
    .setContentText("Hello World!");

تحديد حدث التنبيه Define the Notification’s Action

بالرغم من ان الاحداث اختيارية, فإنه يتوجب عليك ان تضيف على الاقل حدث واحد إلى تنبيهك.

يأخذ الحدث المستخدمين مباشرة من التنبيه إلى فعالية ما ضمن تطبيقك, حيث يصبح باستطاعتهم النظر إلى الحدث الذي سبب انقداح التنبيه , او لكي يقوموا ببعض الاعمال التي يتوجب عليهم القيام بها.

ضمن التنبيه, يتم تعريف الحدث نفسه عبر PendingIntent ويحوي على Intent  التي بدورها تقوم بتشغيل الفعالية المطلوبة ضمن تطبيقك.

اما طريقة إنشاء الباني الخاص ب PendingIntent  فإنه يعتمد على نوع الفعلية التي ترغب بتشغيلها.

عندما تقوم بتشغيل فعالية من تنبيه, فإنه يتوجب عليك حفظ مراحل التجوال التي مر بها المستخدم navigation.

ضمن الترميز ادناه –  عند النقر على التنبيه يتم فتح فعالية جديدة تقوم بدورها بتوسيع سلوك التنبيه.

ضمن الحالة ادناه , لا يوجد حاجة لإنشاء مكدس مؤقت للتراجع (للمزيد من المعلومات بالامكان الاطلاع على المقطع ادناه الذي يتحدث عن :  الحفاظ على التجوال عند تشغيل فعالية ماPreserving Navigation when Starting an Activity):

Intent resultIntent = new Intent(this, ResultActivity.class);
...
// Because clicking the notification opens a new ("special") activity, there's
// no need to create an artificial back stack.
PendingIntent resultPendingIntent =
    PendingIntent.getActivity(
    this,
    0,
    resultIntent,
    PendingIntent.FLAG_UPDATE_CURRENT
);

تحديد السلوك الناتج عند النقر على التنبيه Set the Notifications’ Click Behavior:

لكي نربط الحدث الذي تم تعريفه عبر  PendingIntent  والذي تم انشائه بالخطوة السابقة مع شكل  وسلوك معين, يجب استدعاء التابع المناسب من توابع الصف NotificationCompat.Builder.

على سبيل المثال, لكي تشغل فعالية عند نقر المستخدم على نص التنبيه ضمن مساحة التنبيه, قم باضافة PendingIntent  عبر استدعاء التابع setContentIntent(). على سبيل المثال:

PendingIntent resultPendingIntent;
...
mBuilder.setContentIntent(resultPendingIntent);

اصدار التنبيه Issue the Notification

لكي نصدر التنبيه نقوم بالامور التالية :

نحصل على مستنسخ من NotificationManager.

يتم استخدام التابع notify()لاصدار التنبيه. عندما تقوم باستدعاء التابع notify(), يجب ان تحدد معرف التنبيه Notification ID. بإمكانك استخدام هذا المعرف ID لتقوم فيما بعد بتحديث التنبيه. سيتم شرح ذلك بالتفصيل ضمن قسم “ادارة التنبيهات Managing Notifications”.

يتم استدعاء التابع build(), الذي يعيد غرض من نوع Notification  والذي بدوره يحوي على الامور التي قمنا بتحديدها.

على سبيل المثال :

NotificationCompat.Builder mBuilder;
...
// Sets an ID for the notification
int mNotificationId = 001;
// Gets an instance of the NotificationManager service
NotificationManager mNotifyMgr = 
        (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Builds the notification and issues it.
mNotifyMgr.notify(mNotificationId, mBuilder.build());

وإلى لقاء في الحلقة القادمة لنتابع ما بدأنا بالحديث عنه ضمن هذه الحلقة

وإلى ذلك الحين استودعكم الله والسلام عليكم ورحمة الله وبركاته

Advertisements

, , , , , , , , , , , , , ,

  1. أضف تعليق

اترك رد

Please log in using one of these methods to post your comment:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: