9 مبادئ لإنشاء تطبيقات iOS عالية الجودة

تستند المبادئ إلى المنهجية المعروفة من heroku ، والمكيفة مع واقع تطوير ayios (نقص الحاويات ، والمراجعات التي تستغرق عدة أيام وتبطئ عملية النشر ، Xcode يعمل فقط على الخشخاش).


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


TL ؛ د





اعتمادا على


يعلن التطبيق عن جميع تبعياته بالكامل وبدقة باستخدام بيان إعلان التبعية.
يتضمن ذلك إصدارًا محددًا من Swift و Xcode و CocoaPods و Carthgae و Fastlane. أيضًا ، يجب أن تحدد جميع التبعيات في podfile و cartfile إصدارًا محددًا.


واحدة من مزايا الإعلان بوضوح عن التبعيات هي أنه يجعل من السهل تكوين التطبيقات للمطورين الجدد.


بمساعدة تحديد تبعيات محددة ، يمكنك إعادة إنشاء النسخة التي تم استخدامها قبل 6 أشهر ، مع العلم أنه سيتم بناؤها لأن البنية ستستخدم نفس إصدار Xcode و CocoaPods و Swift.


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




ترتيب


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


هناك العديد من الطرق لإدخال قيم التكوين في وقت البناء.


  • ملفات التكوين (ملفات JSON أو YAML)
  • مفاتيح cocoapods لإخفاء المفاتيح وتطبيقها على تطبيق iOS أثناء الإنشاء
  • حل مخصص (مثل استخدام مرحلة البناء)

نظرًا لأن عمليات النشر على النظام الأساسي iOS أبطأ بكثير من الخوادم ، فقد تحتاج إلى طريقة لتحديث التكوين عبر الأثير (OTA) للاستجابة السريعة للمشاكل.


تسمح لك تحديثات تكوين OTA بما يلي:


  • قم بإجراء اختبارات A / B لتمكين وظائف معينة أو تغييرات واجهة المستخدم لجزء فقط من المستخدمين النشطين.
  • تغيير مفاتيح API
  • تحديث مضيفات الويب أو عناوين URL الأخرى التي تغيرت
  • تعطيل الميزات عن بعد أو إخفاء الأزرار

بعض الطرق المحتملة عند تطبيق تحديثات OTA هي:





تطوير التطبيق / العمل التكافؤ


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


  • فارق التوقيت
  • فرق الموظفين
  • فجوة الأداة:

الحل:


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



نشر


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


لسوء الحظ ، نظرًا لحقيقة أن Xcode يجب أن تعمل على نظام MacOS ، لا يمكننا استخدام الحاويات كما هو الحال على الويب. تشغيل macOS في بيئة افتراضية محفوف بالمشكلات الفنية والقانونية.


في الوقت الحالي ، أفضل طريقة يمكن أن نستخدمها مطورو iOS هي:


  • أتمتة تثبيت Xcode مع تثبيت xcode
  • استخدم ملف إصدار .xcode لتحديد الإصدار الدقيق من Xcode
  • حدد جميع التبعيات في ملفات التكوين (انظر عامل التبعيات)
  • أتمتة عملية النشر بأكملها باستخدام fastlane
  • أتمتة توقيع التطبيق (codesigning.guide)
  • الافراج في كثير من الأحيان ، من الناحية المثالية على جدول أسبوعي

تستخدم العديد من الشركات مفهوم قطارات الإصدار: جدول يُصدر إصدارًا جديدًا من التطبيق الخاص بك. سيتم إرسال جميع التعليمات البرمجية التي تم دمجها مع الفرع الرئيسي (رئيسي أو إصدار) في الوقت الحالي "يترك" قطار الإصدار إلى المتجر. يتم تنفيذ هذا النهج بواسطة معظم تطبيقات iOS الكبيرة.




المحلية مقابل بيك


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


يجب أن يفعل التطبيق أكبر قدر ممكن من منطق الأعمال والحوسبة على الجهاز لعدد من الأسباب:


  • السرية: تجنب إرسال البيانات إلى خادم بعيد
  • السرعة: إرسال البيانات إلى الخادم وانتظار استجابة يستغرق بعض الوقت ويمكن أن يؤدي إلى تعطل (على سبيل المثال ، ضعف واي فاي)
  • استخدام البيانات: غالبًا ما يكون لدى المستخدمين حدود بيانات شهرية
  • القياس: إذا أصبح تطبيقك شائعًا ، فأنت مسؤول عن زيادة خدمات الواجهة الخلفية.
  • عمر البطارية: الجوال غالي الثمن
  • الموثوقية: لا تزال اتصالات LTE / 3G ضعيفة في بعض البلدان

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




واجهات برمجة التطبيقات المتوافقة مع السابقة


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


المفهوم الأساسي هو أنك لا تقوم بتحديث واجهة برمجة التطبيقات الحالية ، ولكن بدلاً من ذلك تضيف واحدة جديدة وتتيح لها العمل بشكل متوازٍ


https://your-api.com/1.0/drivers.json https://your-api.com/1.1/drivers.json 



إصدار التطبيق


يتم استخدام الإصدار ورقم الإصدار معًا لتحديد تطبيق معين في التطبيق.


  • رقم الإصدار (CFBundleShortVersionString) - (CFBundleShortVersionString) في Xcode
  • رقم البنية (CFBundleVersion) - (CFBundleVersion) كـ Build في Xcode

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


يحتوي Xcode على أداة مضمّنة تسمى agvtool .




عمولات


لا يسمح متجر التطبيقات مبدئيًا بالتراجع ، لذلك يصف هذا القسم كيفية تحقيق نتائج مماثلة باستخدام الطرق المتاحة.


إصدارات حدث رئيسي - باستخدام إصدارات حدث رئيسي ، يمكنك طرح التجميع ببطء إلى المنتج ، بدءًا من عدد صغير من المستخدمين النشطين


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


كما هو الحال مع الإصدارات المرحلية ، لا يمكن تحديث التجميعات App Store و TestFlight إلا باتباع الخطوات التالية:


  1. ارجع إلى نظام التحكم في الإصدار الخاص بك إلى الحالة التي تريد العودة إليها
  2. زيادة الإصدار و / أو رقم البناء للمشروع الخاص بك
  3. إنشاء وتوقيع التطبيق الخاص بك
  4. توزيع التطبيق الخاص بك من خلال خدمة بيتا أو متجر التطبيقات
  5. يجب على المستخدم تحديث التطبيق على هاتفه.

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


البديل: إعادة التوقيع على البناء القديم


  1. قم بالوصول إلى التجميع القديم (ملف .ipa) قبل تقديم الانحدار
  2. قم بتحديث رقم الإصدار / البنية في ملف Info.plist
  3. "تسجيل مرة أخرى" بناء القديم
  4. توزيعها باعتبارها بناء جديد

ومع ذلك ، فإن "توقيع" تطبيقات iOS غالبًا ما يخلق المزيد من المشكلات ، خاصة وأن أدوات سطر أوامر Xcode لا توفر طريقة جيدة للقيام بذلك.




تخزين البيانات


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


تأكد من اتباع الإرشادات الرسمية لتخزين بيانات Apple iOS :


  • Documents : استخدم هذا الدليل للمحتوى المخصص ، وسيتم أرشفته
  • Caches : استخدم هذا الدليل للبيانات التي يمكن استردادها.
  • tmp : استخدم هذا الدليل للملفات المؤقتة
  • استخدم خاصية do not back up للملفات

لا تقم أبدًا بتخزين معلومات المستخدم السرية (مثل كلمات المرور أو الجلسات) في هذه الأدلة. استخدم Keychain API بدلاً من ذلك.

Source: https://habr.com/ru/post/ar461317/


All Articles