كيف يتم تنفيذ استقبال البث في الجهاز؟

اقرأ في هذا المقال


لتنفيذ عملية استقبال البث نحتاج إلى العديد من الخطوات، وذلك لنكون بالحالة التي يتطلب علينا فعلها، ويجب أن تكون تلك الخطوات التي قمنا بها آمنة في مساحة العمل، وسوف نقوم بذكر الخطوات اللازمة لتنفيذ عملية استقبال البث والقيود التي تجعلنا في أمان.

تنفيذ جهاز استقبال البث:

نحتاج إلى اتباع الخطوات الأتية لتنفيذ جهاز استقبال البث:

1) نقوم بإنشاء فئة فرعية: من BroadcastReceiver في Android.

2) تنفيذ طريقة onReceive: من أجل إرسال الإخطار، يجب تنفيذ طريقة onReceive، وعند حدوث الحدث الذي تمَّ تسجيل جهاز الاستقبال له، يتم استدعاء onReceive فعلى سبيل المثال، في حالة إشعار انخفاض طاقة البطارية، يتم تسجيل جهاز الاستقبال في حدث Intent.ACTION_BATTERY_LOW بمجرد انخفاض مستوى البطارية عن المستوى المحدد، ويتم استدعاء طريقة onReceive.

الوسيطتان من طريقة onReceive:

  • السياق: يُستخدم هذا للوصول إلى معلومات إضافية، أو لبدء الخدمات والأنشطة.
  • الهدف: يتم استخدام كائن الهدف لتسجيل المتلقي.

الأمان في تنفيذ استقبال البث للجهاز:

نظراً لأن مستقبلات البث لديها مساحة عمل عالمية، فإنَّ الأمن مهم للغاية، وهنا إذا لم يتم تحديد القيود والفلاتر للمستقبلات المسجلة، فإنه يمكن للتطبيقات الأخرى إساءة استخدامها، وفيما يلي بعض القيود التي قد تساعد على ذلك:

  • عندما ينشر جهاز استقبال في بيان تطبيقنا، نجعله غير متاح للتطبيقات الخارجية باستخدام android: exported ”false”، وقد نعتقد أن تحديد عوامل تصفية Intent أثناء نشر جهاز الاستقبال سيؤدي المهمة نيابةً عننا، في حين أنها في الواقع ليست كافية.
  • عند إرسال بث، يمكن للتطبيقات الخارجية استقبالها أيضاً، ويمكن منع ذلك عن طريق تحديد بعض القيود.
  • عند تسجيل جهاز الاستقبال الخاص بنا باستخدام registerReceiver، قد يرسل أي تطبيق للبث، ويمكن منع ذلك باستخدام الأذونات أيضاً.

“PS: اعتباراً من Android 3.1 ، لن يتلقى نظام Android أي نوايا خارجية ، لذا فإن النظام آمن نسبياً الآن”.

العمليات المطولة في البث:

إن استقبال البث نشط فقط لمدة onReceive “السياق ، الهدف”، لذلك إذا كننا بحاجة إلى السماح بإجراء ما بعد تلقي خدمات الإعلام، فينبغي تشغيله وليس بث أجهزة الاستقبال.

  • لإظهار مربع حوار، يجب علينا استخدام NotificationManager API.
  • إذا كنا نرغب في إرسال وجهة بث ستظل قائمة حتى بعد اكتمال البث، ويجب علينا استخدام طريقة sendStickyBroadcast (Intent).

شارك المقالة: