تطوير تطبيقات الجوال

تطوير تطبيقات iOS وأندرويد: ما الذي تقرره ولماذا

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

ابدأ مشروعك

القرار الأول: أصلي أم مشترك أم مزيج

التطبيق الأصلي يُكتب لكل منصة على حدة، بلغة Swift لنظام iOS وبلغة Kotlin لنظام أندرويد. والتطبيق متعدد المنصات يتشارك معظم شيفرته بين المنصتين. وهناك طريق وسط: تُكتب قواعد العمل مرة واحدة وتُكتب الشاشات أصلية. والاختيار الصحيح يأتي من المنتج لا من الموضة.

النهجماذا يعنيمتى يناسب عادةً
تطبيقان أصليانشيفرتان منفصلتان، إحداهما بـ Swift والأخرى بـ Kotlinتطبيقات تقوم على ميزات الجهاز أو الرسوميات أو أحدث إمكانات المنصة
قاعدة شيفرة مشتركةإطار مثل Flutter أو React Native، مع شيفرة أصلية حيث يلزممعظم تطبيقات الأعمال: الحسابات والنماذج والقوائم والخرائط والمدفوعات والمحتوى
منطق مشترك وشاشات أصليةتُكتب قواعد العمل وشيفرة البيانات مرة واحدة، وتُكتب الواجهات لكل منصةفرق ذات خبرة أصلية قوية تريد مجموعة واحدة من قواعد العمل

وللمفاضلة بين الأطر صفحتان مستقلتان، هما Flutter وReact Native، فلا نكرر المقارنة هنا. ويتناول مقال التطبيق الأصلي أم متعدد المنصات السؤال الأوسع.

متى تكون Swift وKotlin الأصليتان الاختيار الصحيح

تستحق الشيفرة الأصلية كلفتها حين تكون المنصة نفسها هي المنتج. اخترها حين:

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

والكلفة حقيقية: شيفرتان تعنيان مهارتين ومجموعتين من الأخطاء، وجهدًا دائمًا لإبقاء الميزات متطابقة. ولتخفيفها شارك نظام التصميم وعقد الواجهة البرمجية وقائمة مهام واحدة. وتستخدم الشاشات الأصلية الحديثة SwiftUI على iOS وJetpack Compose على أندرويد، وكلاهما أداة تصريحية، فكثيرًا ما تتشابه بنية الشيفرتين.

ميزات الجهاز وكيف تختلف

اكتب قائمة بميزات الجهاز التي يحتاجها المنتج قبل أن تختار التقنية، ثم افحص سلوك كل منها على المنصتين. فالميزة نفسها قلّما تكون هي نفسها على iOS وأندرويد.

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

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

مراجعة المتجرين وتخطيط الإصدار

افتح حساب مطوّر باسم المؤسسة في كل متجر مبكرًا، لأن التحقق يستغرق وقتًا. ويراجع المتجران التطبيقات وفق سياسات مكتوبة تتغير، فاقرأ الحالية قبل أن تصمّم ميزة، لا في أسبوع الإطلاق.

  • إقرارات الخصوصية. يجب أن تطابق تفاصيل الخصوصية في Apple وقسم أمان البيانات في Google Play ما يجمعه التطبيق وحزم الأطراف الثالثة فعليًا.
  • الحسابات. إن كان بإمكان الناس إنشاء حساب داخل التطبيق فالمتجران يتوقعان أن يستطيعوا حذفه. راجع القواعد الحالية.
  • المدفوعات. السلع الرقمية والاشتراكات تمر عمومًا عبر نظام الدفع في كل متجر، وتختلف القواعد بحسب المتجر والمنطقة. احسم ذلك قبل تصميم شاشة الاشتراك.
  • صفحة التطبيق. جهّز لقطات الشاشة والوصف والكلمات المفتاحية بالعربية والإنجليزية.
  • الإطلاق. استخدم TestFlight ومسارات الاختبار في Google Play للنسخ التجريبية، ثم إطلاقًا تدريجيًا، فتصل النسخة المعيبة إلى عدد قليل أولًا.

تتفاوت مدد المراجعة وتحدث حالات رفض، فاترك هامشًا حول أي موعد إطلاق ثابت.

التخزين الآمن والمصادقة

يبدأ كل مشروع لدينا بمراجعة للتهديدات في المسارات الأساسية. والأسئلة في تطبيق الجوال هي: ما الذي يُخزَّن على الهاتف، وما الذي ينتقل عبر الشبكة، ومن يستطيع تسجيل الدخول. والإجابات المعتادة:

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

تنتج المراجعة الأمنية قبل الإطلاق قائمة إصلاحات مرتبة بالأولوية، وتشمل خدمة الأمن السيبراني لدينا اختبار تطبيقات الجوال. ويتعمق دليل تطوير التطبيقات الآمنة في الموضوع.

التحديثات والتوافق

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

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

الاختبار على الأجهزة

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

ثم شغّل الحالات المكتوبة التي تسبب أكثر الأعطال:

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

وأتمت ما يتكرر باختبارات الوحدة واختبارات الواجهة (XCUITest على iOS وEspresso على أندرويد) ومسار آلي يبني كل تغيير.

المراقبة بعد الإطلاق

الإطلاق بداية العمل. جهّز قبل الإطلاق:

  • الإبلاغ عن الأعطال، مع حفظ ملفات الرموز لكل بناء حتى تبقى التقارير مقروءة.
  • مؤشرات الأداء: زمن بدء التشغيل والإطارات البطيئة أو المجمّدة وأخطاء الشبكة، تُراقب لكل إصدار ولكل مجموعة أجهزة، إلى جانب تقارير الجودة في كل متجر مثل Android vitals.
  • تنبيهات تصل إلى شخص حين ترفع نسخة جديدة معدل الأعطال، وقاعدة لمتى يُوقَف الإطلاق التدريجي.
  • الخصوصية في التصميم: أبعد البيانات الشخصية عن السجلات وأحداث التحليلات.

واقرأ التقييمات ورسائل الدعم إشارةً أيضًا، وأدخل ما تتعلمه في الخطة الأسبوعية.

كيف نخطط لبناء يستهدف المنصتين

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

أسئلة تصلنا كثيرًا

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

  • تتفاوت بحسب المتجر والتطبيق والوقت، والرفض يعيد العملية من جديد. ولا نستطيع الوعد برقم محدد، لذلك نترك هامشًا حول أي موعد إطلاق ثابت، ونقدّم التطبيق مبكرًا لنكشف مشكلات السياسات، ونستخدم TestFlight ومسارات الاختبار في Google Play قبل الإطلاق العام.

  • لا تخزّن كلمات المرور على الجهاز أصلًا. احفظ الرموز قصيرة العمر في Keychain على iOS وKeystore على أندرويد، لا في تفضيلات أو ملفات عادية، ودع الخادم يلغيها حين يُفقد جهاز. وأبقِ الأسرار الحقيقية والفحوص الحرجة على الخادم، لأن كل ما داخل التطبيق يمكن قراءته.

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

تابع الاستكشاف

هل أنت مستعد لبناء منتج آمن؟

حدّثنا عن منتجك، وسنرد بخطة واضحة.

ابدأ مشروعك

نود استخدام Microsoft Clarity لفهم كيف يستخدم الزوار الموقع حتى نحسّنه. يضع ملفات ارتباط ويبقى متوقفًا ما لم توافق. سياسة ملفات الارتباط