مراحل نشاط تطبيق Chrome

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

آلية عمل مراحل النشاط

يُحمِّل وقت تشغيل التطبيق صفحة الحدث من جهاز كمبيوتر سطح المكتب للمستخدم ويتم تنشيط الحدث onLaunch(). يخبر هذا الحدث صفحة الحدث بالنوافذ التي يجب إطلاقها وأبعادها.

آلية عمل مراحل نشاط التطبيق

إذا كانت صفحة الحدث لا تحتوي على رمز JavaScript يتم تنفيذه ولا استدعاءات في انتظار المراجعة ولا تتوفّر نوافذ مفتوحة، يؤدي وقت التشغيل إلى إلغاء تحميل صفحة الحدث وإغلاق التطبيق. وقبل إلغاء تحميل صفحة الحدث، يبدأ الحدث onSuspend(). وهذا يمنح صفحة الحدث فرصة للقيام بمهام تنظيف بسيطة قبل إغلاق التطبيق.

إنشاء صفحة حدث ونوافذ

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

إنشاء صفحة حدث

لإنشاء صفحة الحدث، يجب تضمين حقل "الخلفية" في بيان التطبيق وتضمين background.js في مصفوفة النصوص البرمجية. يجب إضافة أي نصوص برمجية للمكتبة تستخدمها صفحة الحدث إلى حقل "الخلفية" أولاً:

"background": {
  "scripts": [
    "foo.js",
    "background.js"
  ]
}

يجب أن تتضمن صفحة الحدث الدالة onLaunched(). يتم استدعاء هذه الدالة عند تشغيل تطبيقك بأي شكل من الأشكال:

chrome.app.runtime.onLaunched.addListener(function() {
  // Tell your app what to launch and how.
});

إنشاء نوافذ

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

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

إليك نموذج نافذة تم إنشاؤها من background.js:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('main.html', {
    id: 'MyWindowID',
    bounds: {
      width: 800,
      height: 600,
      left: 100,
      top: 100
    },
    minWidth: 800,
    minHeight: 600
  });
});

تضمين بيانات الإطلاق

بناءً على كيفية تشغيل تطبيقك، قد تحتاج إلى معالجة بيانات الإطلاق في صفحة الحدث. بشكل افتراضي، لا تكون هناك بيانات تشغيل عند تشغيل التطبيق بواسطة مشغّل التطبيقات. بالنسبة إلى التطبيقات التي تحتوي على معالِجات ملفات، عليك التعامل مع المَعلمة launchData.items للسماح بتشغيلها باستخدام الملفات.

الاستماع إلى أحداث وقت تشغيل التطبيق

يتحكّم وقت تشغيل التطبيق في عمليات تثبيت التطبيق وتحديثاته وإلغاء تثبيته. ليس عليك تنفيذ أي إجراء لإعداد وقت تشغيل التطبيق، ولكن يمكن لصفحة الحدث معالجة الحدث onInstalled() لتخزين الإعدادات المحلية وحدث onSuspend() لتنفيذ مهام بسيطة في عملية الإزالة قبل إلغاء تحميل صفحة الحدث.

تخزين الإعدادات المحلية

يتم استدعاء "chrome.runtime.onInstalled()" عند تثبيت تطبيقك لأوّل مرّة أو عند تحديثه. عند طلب هذه الدالة، يتم تنشيط حدث onInstalled. يمكن لصفحة الفعالية الاستماع إلى هذا الحدث واستخدام Storage API لتخزين الإعدادات المحلّية وتعديلها (يمكنك أيضًا الاطّلاع على خيارات مساحة التخزين).

chrome.runtime.onInstalled.addListener(function() {
  chrome.storage.local.set(object items, function callback);
});

منع فقدان البيانات

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

ويجب على الأقل تخزين إعدادات المستخدم بحيث تظل معلومات المستخدمين في حالة إعادة تثبيت التطبيق متاحة لإعادة الاستخدام. باستخدام واجهة برمجة تطبيقات التخزين (storage.sync)، يمكن مزامنة بيانات المستخدمين تلقائيًا مع مزامنة Chrome.

إزالة البرامج غير المرغوب فيها قبل إغلاق التطبيق

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

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

بعد تلقّي onSuspend، لن يتم تسليم أي أحداث أخرى إلى التطبيق، ما لم يتم إلغاء التعليق لسبب ما. وفي هذه الحالة، سيتم تسليم onSuspendCanceled إلى التطبيق، ولن يتم إلغاء تحميل التطبيق.

chrome.runtime.onSuspend.addListener(function() {
  // Do some simple clean-up tasks.
});