تطبيقك لا يعمل على iOS الجديد: الأسباب الشائعة وخطة الإصلاح
بعد تحديث iOS بدأت الشكاوى: انهيار عند الفتح، أو إشعارات متوقفة، أو شاشات مكسورة. هذا الدليل لصاحب التطبيق ومدير التقنية: كيف تحدد نوع المشكلة، وما متطلبات Apple التي تحكم رفع الإصلاح، وكيف يُرتب العمل من التشخيص إلى النشر.
حين تجد أن التطبيق لا يعمل على iOS الجديد، فأنت غالبًا أمام مشكلتين لا واحدة: خلل في النسخة المنشورة ظهر مع تغيّر سلوك النظام أو الأذونات أو مكتبة قديمة، وعجز عن نشر الإصلاح لأن Apple تشترط رفع التحديثات بإصدار حديث من Xcode، والمشروع لا يُبنى به. لذلك ابدأ بإعادة إنتاج العطل على iOS الجديد وجمع تقارير الانهيار، ثم تأكد أن المشروع يُبنى بأدوات Apple الحالية، ثم حدّث المكتبات المرتبطة بالعطل، ثم اختبر على الإصدار الجديد وأقدم إصدار تدعمه، وانشر تدريجيًا. إعادة بناء التطبيق كله نادرًا ما تكون الحل لتحديث نظام واحد.
صباح يوم تحديث iOS تبدأ الرسائل: التطبيق يُغلق فور فتحه، أو الخريطة لا تظهر، أو الإشعارات توقفت، أو زر الدفع خرج عن الشاشة. لم يغيّر أحد في فريقك شيئًا، لكن النظام الذي يعمل عليه تطبيقك تغيّر. والأصعب أنك حين تطلب إصلاحًا سريعًا، يخبرك المطور أن المشروع لا يُبنى أصلًا بأدوات Apple الحالية. هذه المقالة دليل تشخيص لصاحب التطبيق ومدير التقنية: كيف تعرف نوع المشكلة، وما متطلبات Apple التي تحكم الإصلاح، وبأي ترتيب يُنفذ.
حدد نوع المشكلة من أعراضها أولًا
ليست كل شكوى بعد تحديث iOS لها السبب نفسه. العَرَض يدلك على الطبقة التي تبحث فيها، ويحدد هل الإصلاح سطر في الإعدادات أو ترقية لسلسلة أدوات كاملة:
| العَرَض | السبب المرجح | أين يبحث المطور |
|---|---|---|
| التطبيق يُغلق فور فتحه على الإصدار الجديد فقط | مكتبة تستدعي واجهة تغيّر سلوكها، أو تهيئة تفترض شيئًا لم يعد صحيحًا | تقارير الانهيار مصنفة بإصدار iOS، وأول سطر من الكود في مسار الانهيار |
| انهيار في شاشة واحدة (الكاميرا، الخريطة، الدفع) | مكتبة طرف ثالث قديمة في تلك الشاشة | إصدار المكتبة ومذكرات إصداراتها عن توافقها مع iOS الجديد |
| ميزة تتوقف بصمت دون انهيار (الموقع، الصور، الشبكة المحلية) | تغيّر في الأذونات أو في نصوص طلبها أو في الإذن الافتراضي | ملف إعدادات التطبيق (Info.plist) ومسار طلب الإذن ومعالجة الرفض |
| الإشعارات لا تصل أو لا تظهر | تغيّر في سلوك الإشعارات، أو مشكلة في التسجيل أو المفاتيح | تسجيل الجهاز، وإعدادات المستخدم، وسجلات خادم الإشعارات |
| عناصر متداخلة أو أزرار خارج الشاشة | تغيّر في التصميم الافتراضي للنظام، أو شاشة بمقاس جديد | تخطيط الشاشات على المحاكي والجهاز بالإصدار الجديد |
| الدخول أو الدفع يفشل داخل صفحة ويب مضمنة | تغيّر في سياسة ملفات تعريف الارتباط أو إعادة التوجيه | مسار إعادة التوجيه بين التطبيق والبوابة أو مزود الدخول |
| لا يمكن رفع إصدار إصلاح إلى App Store Connect | أدوات البناء أقدم من الحد الذي تشترطه Apple | إصدار Xcode وSDK وإطار العمل على جهاز البناء |
اجمع قبل أي نقاش: إصدار iOS لدى المتأثرين، وطرازات أجهزتهم، والخطوات التي تسبق العطل، وتاريخ بدء الشكاوى. هذه المعلومات تختصر نصف التشخيص. وإن كان العطل انهيارًا صريحًا، فمقالة التطبيق ينهار عند المستخدمين تفصل كيف تجمع دليل الانهيار ومصدره.
لماذا يتعطل تطبيق كان يعمل قبل التحديث؟
النسخة المنشورة من تطبيقك بُنيت بأدوات وقت بنائها، وتعمل على نظام يتغيّر كل عام. معظم الأعطال تأتي من خمسة مصادر:
1. مكتبات طرف ثالث لم تُحدّث
تطبيق الأعمال المعتاد يعتمد على مكتبات للدفع والخرائط والتحليلات والإشعارات وتسجيل الدخول. كل منها مبني على افتراضات عن النظام، ومزودها يصدر تحديثًا يتوافق مع iOS الجديد. إن لم يُحدَّث تطبيقك منذ مدة، فهو يحمل نسخًا قديمة منها، وأي تغيير في النظام يظهر فيها أولًا.
2. تغيّر الأذونات والخصوصية
تشدد Apple ضوابط الخصوصية مع الإصدارات: نصوص طلب الإذن، ومستوى الوصول إلى الموقع والصور، والوصول إلى الشبكة المحلية، وتتبع المستخدم. الميزة التي كانت تعمل لأن الإذن كان يُمنح ضمنيًا قد تتوقف دون رسالة خطأ، فيبدو الأمر كأن التطبيق «لا يستجيب».
3. واجهات برمجية مهملة أو تغيّر سلوكها
تعلن Apple إهمال بعض الواجهات قبل سنوات من إزالتها، وتغيّر سلوك بعضها حين يُبنى التطبيق بالإصدار الجديد من SDK. الكود الذي تجاهل تحذيرات الإهمال في كل بناء سابق يدفع الثمن دفعة واحدة.
4. تغيّر التصميم وأحجام الشاشات
جاءت iOS 26 بتصميم جديد لعناصر النظام، وأتاحت Apple مفتاح توافق مؤقتًا (UIDesignRequiresCompatibility) لإبقاء المظهر القديم أثناء المراجعة. لكن توثيق Apple لهذا المفتاح ينص على أن النظام يتجاهله عند البناء لـ iOS 27 أو أحدث؛ أي أن التطبيق الذي أجّل التكيف سيظهر بالتصميم الجديد في أول بناء بأدوات iOS 27. ومع كل جهاز بمقاس أو شكل جديد، كالجهاز القابل للطي الذي أعلنت عنه Apple في أخبار المطورين بنظام iOS 27.1، تنكشف الشاشات المبنية بمقاسات ثابتة.
5. إطار متعدد المنصات بإصدار قديم
إن كان التطبيق مبنيًا بـ Flutter أو إطار مشابه، فبين الكود ونظام iOS طبقة إضافية: الإطار نفسه وإضافاته. الإصدار القديم من الإطار قد لا يُبنى بإصدار Xcode الحالي، والإضافات المهجورة لا تُحدَّث أبدًا. هنا يتحول «إصلاح iOS» إلى ترقية للإطار، كما تشرح مقالة تحديث تطبيق Flutter قديم.
متطلبات Apple الحالية لرفع التحديثات
قد يعمل تطبيقك المنشور على iOS الجديد بمشكلة واحدة صغيرة، لكنك لا تستطيع نشر إصلاحها قبل أن يستوفي المشروع شروط الرفع. بحسب صفحة متطلبات Apple القادمة والسارية عند الاطلاع عليها:
- منذ 28 أبريل 2026: يجب أن تُبنى التطبيقات المرفوعة إلى App Store Connect بـ Xcode 26 أو أحدث، باستخدام SDK لـ iOS 26 أو أحدث.
- منذ 9 سبتمبر 2026: يجب أن تستهدف تطبيقات iOS وiPadOS المرفوعة إصدار iOS 13 أو أحدث حدًا أدنى.
- منذ مايو 2024: يجب ذكر أسباب معتمدة لاستخدام واجهات برمجية محددة في كود التطبيق، بما فيه كود المكتبات الخارجية، قبل رفع تطبيق جديد أو تحديث.
وقد أتاحت Apple في سبتمبر 2026 النسخة المرشحة للإصدار من Xcode 27 مع iOS 27. هذه الحدود ترتفع دوريًا، فالمشروع الذي يُبنى اليوم بالحد الأدنى سيحتاج ترقية أخرى حين تعلن Apple الحد التالي. ولا تعتمد على أرقام هذه الفقرة بعد تاريخ نشرها؛ راجع الصفحة نفسها قبل التخطيط.
- Xcode وSDK الذي تشترطه Appleالحد الأدنى للرفع، ويحدد إصدار macOS المطلوب على جهاز البناء
- إطار العمل (إن وُجد)إصدار Flutter أو غيره الذي يُبنى بهذا الإصدار من Xcode
- المكتبات والإضافاتإصدارات تتوافق مع الإطار وSDK معًا، وبعضها مهجور بلا تحديث
- كود التطبيقتعديلات للواجهات المهملة والأذونات والتصميم
- الاختبار والنشرعلى iOS الجديد وأقدم إصدار مدعوم، ثم إطلاق تدريجي
خطة الإصلاح خطوة بخطوة
الترتيب هنا مهم: الإصلاح قبل التشخيص يعالج العَرَض، والترقية قبل إثبات القدرة على البناء تفتح عملًا بلا نهاية واضحة.
- إعادة إنتاج العطل: على جهاز بإصدار iOS الجديد، وبالخطوات التي يصفها المستخدمون، مع تقارير الانهيار من أداة المراقبة أو من Xcode. العطل الذي لا يُعاد إنتاجه لا يُصلح بثقة.
- إثبات القدرة على البناء: هل الكود في المستودع هو نفسه المنشور؟ هل يُبنى على جهاز بإصدار Xcode الحالي؟ هل شهادات التوقيع وحساب المطور في يد منشأتك؟ إن كانت الإجابة «لا» عن أي منها، فهذه أول مهمة، قبل أي إصلاح.
- ترقية أدوات البناء: Xcode، والحد الأدنى المستهدف من iOS، وأداة إدارة الحزم، وإطار العمل إن وُجد. هذه ترقية تُختبر وحدها قبل أي تعديل وظيفي، حتى يُعرف أن ما يظهر بعدها من أعطال سببه الترقية لا الإصلاح.
- تحديث المكتبات بالأولوية: ابدأ بالمكتبات المرتبطة بالعطل، ثم بالحساسة (الدفع، والدخول، والإشعارات)، ثم الباقي. المكتبة المهجورة تُستبدل، وقرار استبدالها يُكتب لأنه يغيّر جزءًا من التطبيق.
- إصلاح الكود: الواجهات المهملة، ومسارات الأذونات ومعالجة الرفض، والشاشات التي تكسرها المقاسات أو التصميم الجديد.
- الاختبار: على iOS الجديد، وعلى أقدم إصدار يدعمه التطبيق، وعلى أجهزة بمقاسات مختلفة، مع اختبار المسارات الحرجة كاملة (الدخول، والدفع، والإشعارات). ثم نسخة TestFlight لفريقك قبل الرفع.
- النشر التدريجي والمراقبة: تتيح Apple إطلاق التحديث على مراحل خلال سبعة أيام لمستخدمي التحديث التلقائي، مع إمكانية إيقافه مؤقتًا. راقب معدل الانهيار في الأيام الأولى قبل أن يصل التحديث إلى الجميع.
هذا الترتيب هو نفسه منطق خدمة إصلاح أخطاء التطبيق: تشخيص قبل الإصلاح، وترتيب الأخطاء بأثرها، وإصلاح السبب لا العَرَض، واختبار يمنع عودة الخطأ، ومراقبة للأعطال بعد النشر.
- نعمهل العطل في مكتبة أو في كود التطبيق؟
- كود التطبيقإصلاح عاجل في إصدار صغير، ثم جدولة تحديث المكتبات
- مكتبةتحديث تلك المكتبة وحدها واختبار ما يعتمد عليها، ثم إصدار إصلاح
- كود التطبيق
- لالا يوجد إصلاح عاجل ممكن قبل ترقية أدوات البناء؛ ابدأ بها واختبرها وحدها، ثم الإصلاح
ما الذي يحدد حجم العمل والتكلفة؟
لا يمكن تقدير هذا النوع من الإصلاح قبل فتح المشروع، لكن العوامل التي تكبّره أو تصغّره معروفة، ويمكنك أن تعرف أغلبها قبل التواصل:
| العامل | يكبّر العمل حين | يصغّره حين |
|---|---|---|
| آخر تحديث للتطبيق | لم يُرفع أي إصدار منذ سنوات، فتتراكم ترقيات عدة إصدارات | يُحدَّث بانتظام، فالفجوة إصدار واحد |
| المكتبات الخارجية | كثيرة، وبعضها مهجور أو بلا بديل مباشر | قليلة ومن مزودين نشطين |
| إطار العمل | إصدار قديم يتطلب ترقيات كبرى متتالية | تطبيق أصلي بـ Swift، أو إطار بإصدار حديث |
| الاختبارات الآلية | غائبة، فكل ترقية تحتاج اختبارًا يدويًا شاملًا | موجودة للمسارات الحرجة، فتكشف ما كسرته الترقية |
| الكود والحسابات | الكود ليس آخر نسخة، أو التوقيع عند المطور السابق | مستودع وحسابات باسم منشأتك وتوثيق للبناء |
إن وجدت أن أغلب العوامل في العمود الأوسط، وأن المشكلة تتكرر مع كل إصدار iOS، فقد يكون السؤال أكبر من إصلاح توافق. مقالة علامات حاجة التطبيق لإعادة تطوير تساعدك على التمييز بالأدلة، لا بالانطباع.
كيف تمنع تكرار المشكلة مع إصدار iOS القادم؟
تتيح Apple نسخًا تجريبية من إصدارات iOS قبل صدورها، وتنشر مواعيد متطلبات الرفع مسبقًا. أي أن معظم ما يفاجئ أصحاب التطبيقات كان معروفًا قبل حدوثه بأشهر، لمن يتابعه. الممارسة الجيدة التي تطلبها من أي مزود:
- اختبار التطبيق على النسخ التجريبية من iOS الجديد قبل صدوره، وتجهيز التحديث ليكون جاهزًا يوم الإطلاق.
- تحديث أدوات البناء والمكتبات مرة على الأقل كل عام، لا عند الأزمة فقط.
- متابعة صفحة متطلبات Apple وإدراج مواعيدها في خطة الصيانة.
- مراقبة للأعطال مصنفة بإصدار النظام، حتى يظهر العطل الجديد في يومه الأول.
- اختبارات آلية للمسارات الحرجة تكشف ما تكسره الترقية.
هذا ما يغطيه عقد صيانة التطبيقات والدعم الفني عندنا: التوافق مع إصدارات iOS وAndroid الجديدة، ومتطلبات المتجرين، وتحديث أدوات التطوير والمكتبات. وتذكر صفحة تطوير تطبيقات iPhone أننا نختبر على النسخ التجريبية من iOS قبل صدورها، ونجهز التحديث ضمن عقد الدعم. وتطبيق Android يواجه المسألة نفسها بمتطلبات مختلفة، تفصلها مقالة توافق التطبيق مع Android الجديد.
أخطاء شائعة حين يتعطل التطبيق بعد تحديث iOS
- طلب «إصلاح سريع» قبل معرفة إن كان المشروع يُبنى: يصلك وعد بيومين، ثم تكتشف أن الترقية شرط سابق.
- ترقية كل شيء دفعة واحدة مع الإصلاح: حين يظهر عطل جديد، لا يُعرف إن كان من الترقية أو من الإصلاح. افصل الترقية واختبرها وحدها.
- الاختبار على الإصدار الجديد وحده: التحديث الذي يعمل على iOS 27 قد يكسر شيئًا على أقدم إصدار تدعمه، وأغلب مستخدميك لا يحدّثون في اليوم الأول.
- نشر التحديث لكل المستخدمين فورًا: الإطلاق التدريجي يحصر أثر أي خطأ في شريحة صغيرة.
- قرار إعادة البناء تحت الضغط: تحديث نظام واحد ليس دليلًا على أن التطبيق انتهى؛ قد يكون تأخر صيانة سنتين.
- تجاهل صفحة المتجر: حين يستمر العطل أيامًا، رد على المراجعات بأن الإصلاح قادم، فذلك يقلل الأثر على التقييم.
ما تطلبه من المطور، وما تجهزه قبل التواصل
جهّز قبل التواصل مع المطور الحالي أو مع جهة جديدة:
- وصف العَرَض بدقة، وإصدارات iOS والأجهزة المتأثرة، وتاريخ بدء الشكاوى، ولقطة أو تسجيل شاشة.
- رابط التطبيق في App Store، ورقم آخر إصدار منشور وتاريخه.
- الوصول إلى المستودع وحساب Apple Developer، أو معرفة باسم من هما.
- أداة مراقبة الأعطال إن وجدت، وصلاحية لقراءة تقاريرها.
- التقنية المبني بها التطبيق (Swift أو Flutter أو غيرها) إن كنت تعرفها.
واطلب من المطور كتابيًا:
- تشخيصًا مكتوبًا للسبب، لا وصفًا للعَرَض.
- إجابة صريحة: هل يُبنى المشروع الآن بإصدار Xcode الذي تشترطه Apple؟ وإن لم يكن، فما الذي يلزم ترقيته؟
- قائمة المكتبات التي ستُحدَّث أو تُستبدل، وسبب كل منها.
- فصل الإصلاح العاجل عن خطة الترقية في التقدير والجدول.
- أجهزة وإصدارات iOS التي سيُختبر عليها، ونسخة TestFlight قبل الرفع.
- خطة نشر تدريجي، وما يفعله إن ظهر عطل بعد النشر.
الخلاصة: شخّص، ثم أثبت البناء، ثم أصلح
التطبيق الذي لا يعمل على iOS الجديد ليس بالضرورة تطبيقًا يحتاج إعادة بناء. هو في الغالب تطبيق تأخرت صيانته، فاجتمعت عليه مكتبات قديمة وأدوات بناء لم تعد تكفي للرفع. حدد العَرَض وطبقته، وتأكد أن المشروع يُبنى بأدوات Apple الحالية، ثم افصل الإصلاح العاجل عن الترقية، واختبر على الإصدار الجديد والقديم، وانشر تدريجيًا. وبعد أن يستقر، اجعل التوافق مع iOS بندًا سنويًا في الصيانة لا أزمة كل خريف.
إن كان تطبيقك متعطلًا الآن، أرسل وصف المشكلة ورابط التطبيق وما لديك من وصول عبر طلب عرض لتطبيقك الحالي، ونرد بخطوة التشخيص الأولى وما يلزم لتقدير الإصلاح.
أسئلة شائعة
ليس بالضرورة أن تصدر تحديثًا كل مرة، لكن يجب أن يُختبر التطبيق على كل إصدار رئيسي، ويفضل على نسخه التجريبية قبل صدوره. وحين تحتاج إلى رفع أي تحديث، ستحتاج إلى أدوات البناء التي تشترطها Apple وقتها، فالتحديث المنتظم يمنع تراكم الترقيات.
غالبًا لأن المشروع لا يُبنى بإصدار Xcode الذي تشترطه Apple للرفع، فيلزم تحديث أدوات البناء وإطار العمل والمكتبات قبل رفع أي إصلاح. اطلب منه أن يفصل في التقدير بين الترقية الإلزامية والإصلاح نفسه، مع قائمة بما سيُحدَّث.
النسخة المنشورة تبقى متاحة عادة ما دامت ملتزمة بالإرشادات، لكنها قد تتعطل تدريجيًا على إصدارات iOS الأحدث، ولا يمكنك رفع أي تحديث لها قبل استيفاء متطلبات البناء الحالية. الخطر ليس الإزالة الفورية، بل أنك تفقد القدرة على الإصلاح السريع حين تحتاجه.
ليس بسبب تحديث iOS واحد. قرار إعادة البناء يُبنى على أدلة متراكمة، مثل أعطال تعود بعد إصلاحها وتكلفة تعديل تتصاعد ومكتبات بلا بديل. أصلح التوافق أولًا، ثم قيّم التطبيق بهدوء إن تكررت المشكلة.
اطلب اختبار المسارات الحرجة على أقدم إصدار iOS يدعمه التطبيق إلى جانب الإصدار الجديد، ونسخة TestFlight يجربها فريقك قبل الرفع، ثم نشرًا تدريجيًا يتيح إيقاف التحديث مؤقتًا إن ارتفعت الأعطال في أيامه الأولى.
خدمات وصفحات مرتبطة
اقرأ أيضًا
أعد تطبيقك للعمل على iOS الجديد
أرسل وصف العطل وإصدارات iOS المتأثرة ورابط التطبيق، ونرد بخطوة التشخيص الأولى وما يلزم ترقيته قبل رفع الإصلاح.