اذهب إلى المحتوى

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

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

نظرة عامة عن تطوير تطبيقات الهاتف

سنتعرف في هذا المقال على معلومات عامة عن تطوير تطبيقات الهواتف، وطرق التطوير المعروفة، مع توضيح الميزات والعيوب لكل طريقة.

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

تطبيقات الهاتف وأنظمة تشغيل الأجهزة

تسيطر منصتان رئيستان على سوق الهواتف الذكية، أولهما هو نظام iOS من شركة Apple، وهذه المنصة هي نظام التشغيل المتواجد في الهواتف iPhone من شركة Apple، والثاني هو Android من Google، وهو ليس حكرًا على أجهزة Google فقط كما هو الحال مع Apple، بل يُستخدم أيضًا من قِبل العديد من مصنعي الأجهزة الذكية كالساعات وشاشات العرض والأجهزة المنزلية الذكية، وكذلك الهواتف.

على الرغم من وجود بعض أوجه التشابه بين هذين النظامين الأساسيين عند برمجة وتطوير التطبيقات، فإن التطوير لنظام iOS يختلف عن التطوير لنظام Android، حيث أن عملية التطوير تتضمن استخدام أدوات تطوير برامج SDKs مختلفة، بالإضافة إلى أدوات تطوير أخرى تختلف بين نظامي التشغيل، فحينما نرى أن شركة Apple تستخدم نظام iOS حصريًا للأجهزة الخاصة بها، فإن Google تجعل Android متاحًا للشركات الأخرى شرط أن تفي بمتطلبات محددة مثل تضمين بعض تطبيقات Google على الأجهزة التي تنتجها، ويمكن للمطورين إنشاء تطبيقات لمئات الملايين من الأجهزة من خلال استهداف كلا النظامين.

طرق تطوير تطبيقات الهواتف

هناك أربعة طرق تطوير رئيسة عند إنشاء تطبيقات الهاتف، وهي كما يلي:

  1. تطبيقات الهاتف الأصيلة Native
  2. تطبيقات الهاتف الأصيلة متعددة المنصات عبر الأنظمة الأساسية Cross-Platform Native
  3. تطبيقات الهاتف الهجين Hybrid
  4. تطبيقات الويب التقدمية Progressive Web Applications

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

أولا: تطبيقات الهاتف الأصيلة Native

تُكتَب تطبيقات الهاتف الأصيلة بلغة البرمجة وأطر العمل البرمجية التي يوفرها مالك النظام الأساسي، وتعمل مباشرةً على نظام تشغيل الهاتف ذاك فقط، مثل لغة البرمجة Objective-C وSwift المستخدَمتين لتطوير تطبيقاتٍ تعمل ضمن نظام iOS وAndroid، وفي هذه الطريقة يُستخدم Android Studio على سبيل المثال لتطوير تطبيقات خاصة بنظام Android باستعمال لغات البرمجة المدعومة جافا Java أو كوتلن Kotlin، بينما يُستخدم Xcode على نظام التشغيل Mac لتطوير تطبيقات خاصة بنظام التشغيل iOS باستخدام لغات البرمجة Objective-C أو Swift.

المميزات

  • الأفضل أداءً خلال تشغيل التطبيق.
  • الوصول المباشر إلى واجهات برمجة التطبيقات الخاصة الهاتف.

العيوب

  • ضرورة وجود اعتبار للتكلفة المادية لكل نظام تشغيل عند إنشاء التطبيق وصيانته، حيث أنه ستبنى نسخة كاملة منفصلة لأجهزة الأندرويد من قِبل مبرمج أندرويد، وبالتوازي ستبنى نسخة خاصة بأجهزة لآيفون من قِبل مبرمج iOS.

ثانيا: تطبيقات الهاتف الأصيلة متعددة المنصات عبر الأنظمة الأساسية Cross-Platform Native

يمكن كتابة تطبيقات الهاتف الأصيلة عبر الأنظمة الأساسية بلغات وأطر برمجة مختلفة، ولكنها تُجمَّع لاحقًا في تطبيق أصيل يعمل مباشرةً على نظام تشغيل الهاتف، وفي هذه الطريقة تُستخدم أّطر عمل متقدمة مثل Flutter وXamarin وReact Native

المميزات

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

العيوب

  • الاعتماد على مكتبات خارجية مخصصة للوصول إلى الميزات الأصيلة للهاتف.
  • كود رئيسي/ملفات برمجية متعددة لكل منصة.

ثالثا: تطبيقات الهاتف الهجينة Hybrid

لقد صُمّمت تطبيقات الهاتف الهجينة باستخدام تقنيات الويب القياسية مثل HTML5 وCSS وJavaScript، وهي مجمعة مثل حزم تثبيت التطبيق، حيث تعمل التطبيقات المختلطة -طبعًا على العكس من التطبيقات الأصيلة- على "حاوية ويب" توفر إمكانية التشغيل عبر المتصفح، بالإضافة إلى كونها جسرًا لواجهات برمجة التطبيقات الأصيلة للهواتف، وهنا تُستخدم أُطر عمل مثل أباتشي كوردوفا Apache Cordova وأيونيك Ionic.

المميزات

  • توفير الكثير من الوقت والجهد وكذلك المال، من خلال تطوير تطبيق واحد لكل المنصات.
  • كود رئيسي/ملفات برمجية مشتركة بين تطبيقات الويب وتطبيقات الهاتف، وتُعَد أهم الميزات لمطور التطبيق.
  • استخدام مهارات تطوير الويب لبناء تطبيقات الهواتف.

العيوب

  • أداء أقل موازنةً بالتطبيقات الأصيلة، إضافةً إلى محدودية الأداء بسبب التجسير.
  • يوجد اختلاف - قد لا يتفق عليه الكثير - بخصوص واجهات التطبيق وتجربة المستخدم، فلا شك أن التطبيقات الأصيلة تتفوق في الواجهات عن الهجينة.

رابعا: تطبيقات الويب التقدمية Progressive Web Applications

تطبيقات الويب التقدمية PWA هي تطبيقات ويب تستخدم بعضًا من إمكانيات المتصفح -مثل العمل في وضع عدم الاتصال وتشغيل بعض العمليات في الخلفية وإضافة ارتباط إلى الشاشة الرئيسية للهاتف-، لتوفر للمستخدم تجربة ما يشبه التطبيق عبر المتصفح. تشكّل هذه الطريقة نهجًا بديلًا لتطوير تطبيقات الهواتف التقليدية عن طريق تجاوز تسليم التطبيق لمتجر التطبيقات الخاصة بالمنصة، وكذلك تخطي خطوات تثبيت التطبيق. وهنا تستخدم أُطر عمل مثل Angular وReact وPolymer لإنشاء تطبيقات الويب التقدمية.

المميزات

  • التطبيق نفسه متاح لكل من الويب والهاتف.
  • يمكن الوصول إليه من خلال عنوان الإنترنت URL، ولا يلزم التثبيت.

العيوب

  • دعم محدود للميزات الأصيلة للهاتف.
  • اعتماد إمكانيات التطبيق على المتصفح المستخدم.

موازنة التطبيقات الأصيلة مقابل التطبيقات الهجينة

على أعلى مستوى، هناك أربع طرق رئيسة تختلف بها التطبيقات الأصيلة عن التطبيقات الهجينة كما هو موضح في الجدول التالي:

  التطبيقات الأصيلة التطبيقات الهجينة
المنصة المستهدفة منصة محددة حسب نظام التشغيل متعدد المنصات
لغة البرمجة تستخدم لغة البرمجة التي تدعمها المنصة، مثل استخدام جافا وكوتلن في نظام أندرويد، واستخدام Objective-C وSwift في نظام iOS. لا يمكن استخدام أدوات بديلة مطلقًا.
لا يمكن التعامل مع إمكانيات نظام التشغيل مباشرة إلا من خلال لغات البرمجة المذكورة، حيث يفهمها النظام ويقوم بتفسيرها Compile وتنفيذ تعليماتها
تستخدم طريقة برمجية مختلفة بالاعتماد على تقنيات الويب القياسية يفهمها متصفح الويب في النظام، ويقوم المتصفح بدور الوسيط بين تطبيق الهاتف المبني بهذه الطريقة من جهة، وبين نظام تشغيل الهاتف من جهة أخرى
الوصول إلى إمكانيات الهاتف مباشرةً من خلال النص البرمجي من خلال بعض الإضافات الأصيلة، أو إضافات خارجية في أغلب الحالات
إطار العمل المستخدم أُطر عمل خاصة بالمنصة Platform Frameworks أُطر عمل الويب القياسية Web Frameworks

لماذا تختار طريقة التطبيقات الهجينة على طريقة التطبيقات متعددة المنصات؟

تتمثل إحدى مشكلات تطوير تطبيقات الهاتف الأصيلة في أنها تتطلب مجموعة مهارات عالية التخصص، فعلى الرغم من وجود مجتمعات مطورين كبيرة ونابضة بالحياة للغة سي C (وهي اللغة الأم لتطوير تطبيقات iOS، وما بُني عليها من لغات برمجة عالية المستوى مثل Objective-C ثم Swift التي صدرت لتشكّل بديلًا عن كل ما سبقها)، وجافا Java (الخاصة بتطوير تطبيقات Android)، وكذلك لغة البرمجة Kotlin (التي اعتمدت رسميًا من جوجل منذ 2017 لتكون ثاني لغة برمجة لتطوير تطبيقات الأندرويد بعد جافا)؛ إلا أن هناك عددًا أقل من المطورين الذين يمتلكون مهارات عالية ومعرفة كبيرة بالإصدارات الخاصة بالنظام الأساسي لتلك اللغات وبيئة التطوير المتكاملة IDE الخاصة بكل لغة.

لا شك أن هناك طلب كبير على المطورين المتميزين للتطبيقات الأصيلة، حيث تتعرض العديد من الشركات لضغوط شديدة فتكون الخيارات إما توظيفهم دائمًا وتحمل تكلفتهم الباهظة كما ذكرنا في عيوب هذه الطريقة من التطوير، أو اعتماد أسلوب التعهيد الذي يمكنهم من توظيف مؤقت لشركات أو مبرمجين لإنشاء التطبيقات. هذه التحديات تجعلنا نفكر في اتجاه آخر، وهو إمكانية إنشاء تطبيق يعمل على جميع المنصات بتقنيات معروفة ومهارات متوسطة، وهنا يأتي تصنيف التطبيقات الهجينة الذي يعتمد على تقنيات الويب القياسية، وسنركز على هذا التصنيف في هذه السلسلة؛ أما إن كنت من ذوي المهارات العالية في تطوير التطبيقات لمنصة محددة فهنيئًا لك، إلا أن هذه السلسلة موجهة للمهتمين بتطوير أو إنشاء تطبيقات الهاتف باستخدام الأطر الهجينة.

كيف تعمل الأطر الهجينة ومتعددة المنصات عبر الأنظمة الأساسية؟

تسمح التطبيقات الهجينة للمطورين باستخدام تقنيات الويب القياسية HTML, CSS, JS، حيث يمكن من خلال هذه التقنيات إنشاء موقع ويب مثل موقع لعرض معلومات المؤسسة، أو موقع إخباري، أو موقع شخصي.. إلخ؛ أو إنشاء تطبيق ويب ليكون موقعًا ذا غرض معين مثل موقع لعرض المقالات، أو موقع لتنزيل الكتب، أو موقع لحساب السعرات الحرارية والوزن المثالي.. إلخ.

تُغلّف التطبيقات الهجينة في حاوية تسمح لتطبيق الويب بالعمل مثل التطبيق الأصيل على الهاتف، حيث يمكن استخدام معظم التعليمات البرمجية من تطبيق ويب لإنشاء تطبيق هاتف بالاعتماد على أنّ تطبيقات الهواتف الهجينة هي مجرد تطبيقات ويب تعمل في بيئة متصفح الويب المضمن في نظام تشغيل الهاتف. يعتمد نظام أندرويد على عارض الويب WebView بينما يعتمد نظام iOS على UIWebView الذي يستخدم في إصدار iOS الثاني حتى الثامن، وقد طُوِّر لتسريع عرض المكونات في المتصفح بدءًا من الإصدار الثامن، وصدر باسم جديد هو WKWebView. يُعَدّ تطوير التطبيقات الهجينة بديلًا فعالًا لمطوري الويب الذين يرغبون في إنشاء تطبيقات الهواتف بسرعة، نظرًا لأن أداء طريقة عمل المتصفحات في الهواتف في تحسن مستمر من ناحية تحويل التطبيق وتشغيله وعرضه.

وبالمثل، تُكتَب تطبيقات الويب التقدمية PWA باستخدام تقنيات برمجة تطبيقات الويب التقليدية، ويكون الوصول إليها مبدئيًا من خلال متصفح نظام التشغيل إما على الهاتف أو جهاز الحاسوب.

توفر معظم الأطر المشتركة بين الأنظمة الأساسية مكونات أصيلة للعمل مع التعليمات البرمجية عبر الأنظمة الأساسية، بينما تعمل بعض الأطر الأخرى مثل Flutter وXamarin، على ترجمة التعليمات البرمجية عبر الأنظمة الأساسية إلى الكود الأصيل للحصول على أداء أفضل.

أجزاء تطبيقات الهاتف من وجهة نظر فريق التطوير

ينظر فريق التطوير إلى عملية تطوير التطبيق من خلال منظورين رئيسين، وهما الواجهات الأمامية والوظائف التي ينفذها التطبيق. بعض التطبيقات ينجزها شخص واحد مؤهل في المنظورين - بلا شك اعتمادًا على حجم التطبيق والوقت المقدر لإنشائه -، وبعض التطبيقات يحتاج إلى فريق عمل متخصص كل في جزئيته، نوضّحهما كما يلي:

الواجهة الأمامية لتطبيق الهاتف Front-End

الواجهة الأمامية للهاتف هي الجزء المرئي والتفاعلي من التطبيق الذي يتفاعل معه المستخدم، وعند استخدام مصطلح "مبرمج تطبيقات الهاتف"، فإننا غالبًا ما نقصد الجزء الأمامي من التطبيق، بحيث يكون هذا المبرمج مؤهلًا في اللغات، والتقنيات المستخدَمة لإنشاء هذه الواجهات، بحيث قد يكون وحده مطورًا للتطبيق، أو يشاركه أشخاص مختلفون في تصميم وتطوير الواجهات، فقد يتواجد في الفريق مصممو رسومات متخصصون مسؤولون عن إنشاء عناصر مرئية للتطبيقات مثل الرموز والخلفيات والألوان والسمات وأجزاء أخرى من التطبيق، في حالة أنواع معينة من التطبيقات مثل الألعاب مثلًا، وقد يضم الفريق مطوري الرسوم المتحركة.

الواجهة الخلفية لتطبيق الهاتف Back-End بغضّ النظر عن النظام الأساسي للواجهة الأمامية أو طريقة التطوير المستخدمة ومدى جمال والتصميم، فإن تنفيذ التطبيق للوظائف المطلوبة منه تُعَد أكثر أهميةً للمستخدمين، وإلا ما الفائدة من تطبيق آلة حاسبة يبدو جيدًا، ويستخدم رموز وسمات وألوان رائعة، لكنه ينجز عمليات الحساب بطريقة خاطئة ومنافية للمنطق. نظرًا للأهمية الحاسمة للخدمات الخلفية لنجاح تطبيقات الهاتف، فإن لدى المطورين العديد من الخيارات المعمارية المهمة التي يجب عليهم الموازنة بينها واختيار أفضلها، من بينها الخدمات التي يجب أن ينشؤوها بأنفسهم، وأي الخدمات الخارجية المقدَّمة من طرف ثالث يجب أن يستفيدوا منها، وبعد ذلك يجب عليهم تشغيل وصيانة خدماتهم الخاصة أو إذا استفادوا من خدمات الطرف الثالث.

خدمات تطبيقات الهاتف الرئيسية

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

خدمات أساسية

  • إدارة إنشاء العضوية وتسجيل الدخول للمستخدمين.
  • تسجيل الدخول عبر منصات التواصل الاجتماعي (تسجيل الدخول بحساب Facebook أو Twitter، إلخ).
  • تحليل طريقة استخدام المستخدم للتطبيق ومتابعة سجل الأخطاء.
  • الإشعارات الآنية/اللحظية.
  • اختبار التطبيق على نفس الفئة من الأجهزة المستخدمة.

خدمات البيانات

  • التخزين السحابي.
  • بيانات الحقيقية في الوقت الفعلي.
  • منطق ووظائف التطبيق / وظائف السحابة.

تعلم الآلة

  • المحادثة الآلية (الرد التلقائي).
  • التعرف على الصور والفيديو.
  • التعرف على الكلام (تحويل النص إلى صوت، وبالعكس).

الموازنة بين التطبيقات المذكورة لإنشاء تطبيقك الخاص

من خلال ما سبق وتعرفت عليه، فما هو اختيارك من بين الطرق المذكورة أعلاه لإنشاء تطبيقك الخاص؟

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

01_choose mobile app development approach.JPG

إنشاء تطبيق أصيل

هذه الطريقة هي المثلى، حيث تكون كل الخيارات للتطوير متاحة، وبلا شك ستُرضي كافة المستخدمين عبر تجربة مستخدم متكاملة، لكن يجب رصد ميزانية جيدة لها، إضافةً إلى زيادة عدد المطورين في فريق العمل لتشمل نظامي التشغيل Android وiOS، مع الأخذ بالحسبان الوقت الذي يتطلبه التطوير لإنشاء التطبيق وإطلاقه لمتجر التطبيقات وسوق العمل.

إنشاء تطبيق متعدد الأنظمة الأساسية

تُعَد هذه الطريقة حلًا وسطًا بين خيارات طرق تطوير تطبيقات الهواتف، فهي أقل تكلفةً موازنةً بالتطبيقات الأصيلة، مع أداء في مستوى جيد ومرضٍ للمستخدمين، إضافةً إلى كسب الوقت المستغرق في إنشاء نفس التطبيق لكافة أنظمة التشغيل.

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

ما تتميز به هذه الطريقة هو سرعة وقت تطوير التطبيق مع تكلفة متواضعة، وغالبا ما تستفيد الشركة الناشئة من إنشاء تطبيق هجين مثل حل تجريبي.

إنشاء تطبيق ويب PWA

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

خاتمة

لقد تعرفنا في هذا المقال على تصنيف تطبيقات الهاتف، وصنّفنا طرق تطوير هذه التطبيقات في أربعة طرق، حيث وضحنا منهجية كل طريقة في إنشاء أو تطوير تطبيقات الهاتف، إضافةً إلى التركيز على بيان ميّزات كل طريقة وعيوبها، ثم تطرّقنا إلى الحديث عن تقسيمٍ لعملية تطوير تطبيق الهاتف، والتي تنقسم لفئتين أولاهما فئة تصميم واجهات التطبيق Front-End والتي تهتم بالشكل الجمالي لواجهات وصفحات التطبيق، والتي بدورها تراعي تجربة المستخدم وتعمل على تطويرها وتطويع التطبيق ليكون أسهل ما يكون للمستخدم؛ أما الفئة الثانية فتختص بتطوير وظائف وعمليات التطبيق وتسمى تطوير الواجهات الخلفية Back-End. وقد خُتم المقال بآلية توجه المستخدِم نحو اختيار الطريقة المناسبة في التطوير، متبوعةً برسم توضيحي عن المزايا التي يتطلبها المستخدم في التطبيق، والطريقة المثلى لتطوير هذه التطبيق.

سنتحدث في المقال القادم عن الخطوة الأولى في تطوير تطبيقات الهاتف بالطريقة الهجينة، بالاعتماد على تقنيات الويب القياسية HTML5, CSS, JS من خلال إطار العمل أباتشي كوردوفا Apache Cordova وما تتطلبه من أدوات لتجهيز بيئة العمل والبدء بإنشاء أول تطبيق جوال من خلال كوردوفا.

اقرأ أيضًا


تفاعل الأعضاء

أفضل التعليقات



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...