إنشاء اشعارات لتطبيقك في اندرويد | Android Notifications


(عمار الخوالدة) #1

###السلام عليكم ورحمة الله وبركاته …
سنقوم اليوم بتعلم طريقة استخدام الإشعارات في التطبيقات باستخدام الأندرويد ستوديو ، قد يكون الموضوع طويلا قليلا وربما معقدا فاسلوبي في شرح المواضيع الطويلة سيئ نوعا ما لكن النتيجة ستكون مرضية بإذن الله، أنشئ مشروعا جديدا وقم بتطبيق وفهم ما سأشرحه في هذا الدرس .


فهرس الموضوع :

  • التجهيز لانشاء التطبيق .
  • استخدام كلاس الاشعارات .
  • تعديل وشرح الدوال في كلاس الاشعارات .
  • النتيجة النهائية .

التجهيز لإنشاء التطبيق .

أولا قم بإنشاء Button في الـLayout .
ثم سنقوم بإنشاء دالة في الـ Activity ببارميتر واحد من نوع View لنقوم بربطه بخاصية onClick للـ Button اللذي قمنا بإنشائه . ان لم تعرف كيف تستخدم هذه الخاصية فقم بإضافة هذا الكود في ملف الـLayout ضمن خصائص الـ Button :

android:onClick="اسم الدالة اللتي قمت بإنشائها" 

الآن لتجهيز الـ Notification أو الإشعار قم بانشاء كلاس جديد من نوع Notification كما هو موضح في الصورة :

ستظهر النافذة التالية وشرح الخيارات فيها موضح على الصورة :

سيقوم الأندرويد ستوديو تلقائيا بتكوين مصادر للاشعار (الصور المصغرة المستخدمة في الاشعار) وتستطيع تغيير الاعدادات بالنافذة التالية :

بعد الانتهاء والضغط على Finish سيبدأ بانشاء الكلاس ، ستلاحظ انه مليء بالدوال ولاحظ ان كل دالة مشروحة بالـComments .


استخدام كلاس الاشعارات .

الآن سنجرب ان تشغل الاشعار مجرد تجربة ثم سنشرح طريقة تعديل اعدادات الاشعار والنص بداخله وغيرها ، سنضع دالة تشغيل الاشعار بداخل الحدث اللذي ربطناه بالـ Button ، ودالة تشغيل الاشعار هي الدالة notifiy الموجودة بداخل الكلاس اللذي انشأناه ويمكنك استدعاءها بدون انشاء كائن لانها معرفة على انها Static .

بما انني سميت الكلاس باسم accNotification فسأقوم باستدعاء الدالة notify من داخله :

دالة notify تملك 3 بارميترات الأول من نوع context وهو يدل على الـ Context الحالي ويمكن ان تعبر عنه بـ this والثاني من نوع String والثالث من نوع int وسنتعرف لاحقا إلى فائدتهما لكن كبداية مرر قيمة ACC للبارميتر الثاني و صفر للبارميتر الثالث :

accNotification.notify(this,"ACC",0);

شغل البرنامج واضغط على الزر وسيظهر الاشعار بهذا الشكل :

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


تعديل وشرح الدوال في كلاس الاشعارات .

كل ما علينا فعله هو ان نعدل على الدوال وعند النظر إلى الدوال اللتي تم استخدامها وفيما يلي شرح لمعظم الدوال في كلاس الاشعارات :

  • setDefaults وهي دالة تقوم بتحديد الاعدادات الافتراضية لكل من (الاهتزاز ، نغمة الاشعار ، ضوء الـ LED اللذي يكون عادة في اعلى الهاتف)

لهذه الدالة عدة قيم فلاحظ ان قيمتها الآن هي DEFAULT_ALL أي استخدم الاعدادات الافتراضية لكل من الاشياء الثلاث اللتي تحدثت عنها في الأعلى ولو غيرتها مثلا إلى DEFAULT_SOUND فسيقوم فقط باصدار صوت الاشعارات الافتراضي ولن يقوم بالاهتزاز ولا بتشغيل ضوء الـ LED .

  • setSmallIcon وهي الدالة المسؤولة عن تحديد الصورة المصغرة للاشعار (الصورة اللتي تظهر في شريط الاشعارات وليس في قائمة الاشعارات) :

  • setContentTitle وهي الدالة المسؤولة عن تحديد عنوان الإشعار وهو هذا :

لاحظ انهم وضعو المتغير title كقيمة له وبامكانك بكل بساطة حذف المتغير وكتابة اي نص بدلا منه بالاضافة الى حذف تعريف هذا المتغير حتى لا يأخذ مساحة لا فائدة منها في الذاكرة .

مثلا ساجعل العنوان This is the title ، لكن لاحظ انك عند حذف تعريف هذا المتغير سيحدث خطأ آخر في الكلاس وهو عند الدالة setBigContentTitle وهو العنوان اللذي سيظهر عند تكبير الاشعار ففي بعض الاجهزة يكون الاشعار كبيرا بشكل افتراضي لكن في اجهزة اخرى لن يظهر كامل النص الا اذا سحبت الاشعار الى الاسفل ، في المثال اللذي وضعته في الاعلى لصورة الاشعار كان الاشعار قد تم توسيعه بالسحب الى الاسفل لذلك سيظهر في العنوان محتوى الدالة setBigContentTitle وليس محتوى الدالة setContentTitle بالنسبة لي انا افضل ان اجعل قيمتهما واحدة .

  • setContentText وهي الدالة اللتي تحوي النص اللذي سيظهر يمكنك حذف المتغير اللذي تم وضعه واستبداله بمتغير من عندك او نص مباشر . بالنسبة لي ساجعله This is the content text ، وكما حصل عند تغيير العنوان سيحدث خطأ في دالة BigText وهو النص المطول اللذي سيظهر بعد توسيع الاشعار بالسحب غيره الى ما تريد ساغيره الى :

This is the big text of the notification its an example for aosus.org by ammar

هكذا سنفرق بين النصين .

  • دالة setLargeIcon هي الدالة المسؤولة عن اظهار الصورة الكبيرة اللتي تظهر بجانب الاشعار في قائمة الاشعارات :

انا ساقوم بتبديلها ووضع شعار اسس بدلا منها .

  • محتوى دالة setTicker هو محتوى نصي يظهر عند ظهور الاشعار للمرة الاولى على شريط الاشعارات لاحظ انه يحدد عن طريق البارميتر الثاني لدالة notify :

  • محتوى دالة setNumber هو محتوى عددي يظهر بجانب الايقونة المصغرة وتؤخذ قيمته من البارميتر الثالث للدالة notify عندما تكون قيمته 0 لا يظهر ، فائدته تكون عادة لاجل معرفة عدد الاشعارات اللتي وصلت مثال لو كنت تبرمج برنامج دردشة سيكون من المزعج ان يكون لديك اشعارات بمقدار الرسائل لكن يمكنك برمجته بحيث يعدل هذا الرقم فقط .

  • الدالة setContentIntent هي دالة مهمة جدا جدا جدا ، لاحظ انها تحوي Intent يحولك الى صفحة جوجل بالمتصفح احذفه واضف الـ Intent اللذي تريده ، وسيتم تنفيذ هذا الـ Intent عندما يضغط المستخدم على الاشعار .

  • دالة setStyle هي الدالة اللتي تحدد شكل الاشعار (قمنا بتحديد خصائصها مسبقا في النافذة الاولى من معالج انشاء الاشعارات) وكل الدوال بداخلها تطرقنا لها خلال الشرح ما عدا دالة setSummaryText وهي دالة تستخدم لتحديد محتوى نصي يظهر في نهاية الاشعار كملخص للكلام المكتوب ، سابقيها كما هي في هذا المثال .

  • دالة addAction هي الدالة اللتي تحدد عدد الازرار اسفل الاشعار ووظيفتها تعديلها سهل جدا فقط انتبه لطريقة كتابتها .

  • دالة setAutoCancel تأخذ احد قيمتين true أو false اذا جعلتها true فسيتم اغلاق الدالة اذا ضغطت عليها او على اي من ازرارها اما اذا كتبت false فستبقى في لائحة الاشعارات الى ان يقوم المستخدم باغلاقها يدويا اما بزر اغلاق الاشعارات او بسحب الدالة الى اليمين او الى اليسار .


اظن هكذا انني شرحت كل الدوال او معظمها وان لم تفهم احدى الدوال اقرأ الـ Comments المكتوبة اعلى كل دالة في الكلاس .


النتيجة النهائية .

مثال على شكل الاشعار بعد تعديله :