التعاون باستخدام إضافة Meet

يمكن للمشاركين في اجتماع العمل بشكل تعاوني على أحد أنشطة أضافات Google Meet. عند بدء نشاط تعاوني، يتلقّى جميع المشاركين في الاجتماع إشعارًا بأنّ النشاط جارٍ.

يتم تعديل هذا الإشعار وفقًا لحالة توفّر الإضافة وحالتها المثبَّتة:

  • إذا كانت الإضافة مثبَّتة لدى المشارك: يمكنه الانضمام إلى النشاط.

  • إذا لم تكن الإضافة مثبَّتة لدى المشارك: سيتم توجيهه إلى تثبيت الإضافة.

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

عندما ينضم مستخدم إلى النشاط، سيحمِّل أُطر iframe الخاصة به التي تتضمّن المحتوى الإضافي. يمكنك تخصيص ما إذا كان على المستخدمين الجدد فتح النشاط التعاوني في المرحلة الرئيسية أو اللوحة الجانبية.

بدء النشاط

يتم بدء نشاط من خلال استدعاء الأسلوب startActivity() الذي يستخدم واجهة ActivityStartingState.

الخطوة 1 (اختيارية): تضبط الإضافة حالة بدء النشاط

يحتوي الحقل ActivityStartingState على معلومات عن الحالة الأولية للإضافة التي يتم استخدامها عندما يقبل المشارك دعوة للانضمام إلى النشاط.

يمكن للإضافة ضبط قيمة ActivityStartingState أو تعديلها من خلال استدعاء الأسلوب setActivityStartingState() في أي وقت قبل النشاط أو أثناءه. يمكن حذف المكالمات المُرسَلة إلى setActivityStartingState() إذا تم ضبط ActivityStartingState حصريًا في المكالمة المُرسَلة إلى startActivity().

الخطوة 2: تبدأ الإضافة النشاط

يبدأ النشاط عندما تستدعي الإضافة الأسلوب startActivity() في MeetSidePanelClient. تأخذ طريقة startActivity() كائن ActivityStartingState كأحد المَعلمات، لذا يمكن استدعاء startActivity() بدلاً من استدعاء setActivityStartingState().

بعد أن ينتهي المستخدم من اختيار المحتوى ويصبح جاهزًا لبدء نشاط، استخدِم طريقة startActivity() في الإضافة على النحو التالي:

    sidePanelClient.startActivity({
        mainStageUrl: "https://app.example.com/mainstage",
        additionalData: JSON.stringify({
            // State to send to participants.
        })
    });

عند استدعاء الطريقة startActivity()، ينفِّذ Meet الخطوات التالية:

  • بالنسبة إلى المشاركين الآخرين: يعرض Meet إشعارًا يفيد بأنّه النشاط جاري.

  • بالنسبة إلى باديء التشغيل: إذا تم تحديد عنوان URL للمرحلة الرئيسية في العنصر ActivityStartingState، تفتح Meet المرحلة الرئيسية باستخدام عنوان URL من العنصرActivityStartingState.

الخطوة 3: الحصول على حالة بدء النشاط

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

باستخدام الموقع additionalData، يمكنك مشاركة البيانات الأولية (يُشار إليها أيضًا باسم الحالة) مع المستخدمين الذين ينضمون إلى النشاط. بعد تهيئة MainStageClient أو SidePanelClient، يمكنك استدعاء الأسلوب getActivityStartingState() لاسترداد السمة additionalData.

const startingState = client.getActivityStartingState();
const additionalData = JSON.parse(startingState.additionalData);

الخطوة 4 (اختيارية): مشاركة حالة الإضافة في نشاط

يمكنك أيضًا مشاركة الحالة بين المستخدمين أثناء استمرار النشاط. يمكنك مشاركة الحالة بطريقتين:

  • يمكنك معالجة ذلك بنفسك من خلال إنشاء الخلفية الخاصة بالمزامنة.
  • استخدِم Co-Doing API، وهي طريقة ملائمة وسريعة لمشاركة البيانات العشوائية بين المستخدمين.

مثال: إضافة رسوم متحركة على GitHub

يتضمّن نموذج الإضافة"الحركة" على GitHub ميزة التعاون في إضافة. لا تتضمّن العيّنة الخطوة 1 من هذا الدليل. بدلاً من ذلك، عندما ينقر مُشغِّل الإضافة على زر "بدء الصورة المتحركة" في اللوحة الجانبية، يتمّ استدعاء طريقة startActivity() (الخطوة 2) من خلال تعبئة حالة البدء باللون الذي اختاره المستخدم. بعد بدء النشاط، تسترجع المرحلة الرئيسية الحالة الافتتاحية من خلال طلب الإجراء getActivityStartingState() (الخطوة 3). تم حذف الخطوة 4، لأنّ الحالة (اللون المحدّد) لا تتم مشاركتها بين المشاركين أثناء النشاط في ملف نموذج الإضافة هذا. ومع ذلك، يمكن للمستخدمين الفرديين تغيير حالتهم من خلال اختيار لون يتم إرساله من إطار اللوحة الجانبية إلى إطار المسرح الرئيسي باستخدام الرسائل من إطار إلى إطار.

القيود

  • يجب أن تنتمي عناوين URL المحدّدة في ActivityStartingState إلى المصدر نفسه للمصادر المحدّدة في بيان الإضافة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة أمان الإضافات.
  • يجب أن تكون أطوال أحرف السمات sidePanelUrl و mainStageUrl و additionalData متوافقة مع حدود الحجم الخاصة بها كما هو مذكور في مستندات مرجع حزمة تطوير البرامج (SDK).