44 -اندرويد : بناء التنبيه Building a Notification
ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development
اندرويد : بناء التنبيه Building a Notification
السلام عليكم ورحمة الله وبركاته
سوف نقوم ضمن هذا الدرس بما يلي :
- إنشاء باني للتنبيه Create a Notification Builder
- تحديد حدث التنبيه Define the Notification’s Action
- تحديد السلوك الناتج عن نقر التنبيه Set the Notification’s Click Behavior
- اصدار التنبيه 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());
وإلى لقاء في الحلقة القادمة لنتابع ما بدأنا بالحديث عنه ضمن هذه الحلقة
وإلى ذلك الحين استودعكم الله والسلام عليكم ورحمة الله وبركاته
Tag:Android, Android development, Android linux, Android Market, android Notifying the User, Android Programming, Android system, building a notification, Google, اضافة التحريك عند تغير عناصر التنسيق Animating Layout Changes, التحريك ضمن اندرويد, اندرويد تنبيه المستخدم, برمجة اندرويد, تطوير وبرمجة اندرويد, نظام اندرويد