> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerix.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# وصول التغييرات والعمل دون اتصال

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

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

## متى يتحقق التطبيق

| اللحظة | ما يحدث |
| - | - |
| **تشغيل التطبيق** | تُطبَّق الإجابة المحفوظة فوراً، قبل أي طلب شبكة، فتظهر شاشة المنع من الإطار الأول. ثم تجلب الحزمة إجابة جديدة. |
| **العودة إلى الواجهة** (الويب: عودة التبويب إلى الظهور، أو عودة الاتصال) | تجلب الحزمة الإجابة مجدداً إذا تجاوزت الإجابة المحفوظة مدة صلاحيتها. |
| **في الواجهة، ما دامت مدة الصلاحية 60 ثانية** | تجلب الحزمة الإجابة كل 60 ثانية. |
| **إشعار صامت** (تطبيقات الجوال وسطح المكتب التي تستخدم إشعارات Lerix) | تجلب الحزمة الإجابة فوراً، حتى في الخلفية. |
| **من شيفرتك** | تجلب `refresh()` الإجابة فوراً وتعيد الحالة الجديدة. |

يحدد Lerix مدة صلاحية الإجابة:

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

ولا تكلّف الإجابات غير المتغيرة شيئاً يُذكر: ترسل الحزمة نسخة الإجابة التي لديها،
فيرد Lerix بأنها "لم تتغير" دون أي محتوى.

### الإشعار الصامت

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

* يصل إلى التطبيقات التي أعدّت إشعارات Lerix (أي تستدعي تهيئة الإشعارات في
  الحزمة)، كما في دليل [الإشعارات](https://docs.lerix.dev/ar/modules/push-notifications.md) الخاص بإطار
  عملك. أما التطبيقات التي ليس لديها رمز إشعارات من Lerix فتلتقط التغيير عند
  تحققها التالي.
* إرساله غير مضمون. قد يؤخر نظام التشغيل الإشعارات الصامتة أو يتجاهلها، مثلاً في
  وضع توفير الطاقة، ولهذا يستمر التحقق الدوري.
* يرسل Lerix إشعاراً واحداً في الدقيقة على الأكثر لكل مشروع، ويجمع التغييرات
  المتتالية السريعة.
* لا تتلقاه صفحات الويب، بل تعتمد على التحقق الموضّح أعلاه.

## العمل دون اتصال

لكل جزء من الحالة قاعدته الخاصة حين تفشل الشبكة أو تتقادم الإجابة المحفوظة. حالات
المنع تفشل بما يحميك، والحالات المؤقتة تفشل بما يحمي مستخدميك:

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

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

وقاعدتان أخريان تُبقيان الإجابة المحفوظة صادقة:

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

## مصمَّم ليفشل بأمان

* **الإجابة المعيبة لا تعطّل تطبيقك.** تُتجاهل الحقول والقيم غير المعروفة والأنواع
  الخاطئة جزءاً جزءاً، وأي خطأ أثناء قراءة الإجابة يُلتقط داخل الحزمة.
* **الجهاز الذي لا يُعرف إصداره لا يُمنع أبداً** بقاعدة تحديث.
* **الصيانة تنتهي دائماً.** لكل نافذة وقت انتهاء لا يتجاوز 7 أيام بعد بدايتها.
* **رفع الكل** يزيل كل حالات المنع بنقرة واحدة.

## مفتاح إيقاف حزمة Lerix

يمكن للإجابة نفسها أن تطلب من الحزمة إيقاف عملها، إذا اضطر فريق Lerix يوماً إلى
إيقاف إصدار معيب من الحزمة (راجع
[النظرة العامة](https://docs.lerix.dev/ar/modules/release-control/overview.md#مفتاح-إيقاف-لحزمة-lerix-نفسها)).
وطوال سريانه:

* لا ترسل الوحدات الموقوفة شيئاً (الأخطاء، أو التحليلات، أو تتبّع الطلبات، أو
  الملاحظات، أو الاستبيانات، أو تسجيل رموز الإشعارات، أو جميعها)؛
* يبقى ما كان في قائمة الانتظار على الجهاز ويُرسل بعد وقت الانتهاء؛
* يستمر فحص التحكم بالإصدارات، ليمكن رفع الإيقاف.

إعداداتك لا تغيّر ذلك. فإذا أوقفت التحكم بالإصدارات في تطبيقك (`enabled: false`)،
تتوقف الحزمة عن التحقق، لكن الإيقاف الذي حفظته سابقاً يبقى سارياً حتى وقت
انتهائه.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.