شرکتکنندگان در یک جلسه میتوانند به صورت مشارکتی روی یک فعالیت افزونه Google Meet کار کنند. وقتی یک فعالیت مشارکتی شروع میشود، همه شرکتکنندگان در جلسه اعلانی دریافت میکنند مبنی بر اینکه فعالیت در حال انجام است.
این اعلان با توجه به در دسترس بودن و وضعیت نصب افزونه تنظیم میشود:
اگر شرکتکننده افزونه را نصب کرده باشد : میتواند به فعالیت بپیوندد.
اگر شرکتکننده افزونه را نصب نکرده باشد : به او دستور داده میشود افزونه را نصب کند.
اگر افزونه برای پلتفرم شرکتکننده در دسترس نباشد : به آنها اطلاع داده میشود که نمیتوانند با استفاده از دستگاه فعلی خود به فعالیت بپیوندند.
وقتی کاربری به فعالیت میپیوندد، آیفریمهای خودش را با محتوای افزونه شما بارگذاری میکند. میتوانید تنظیم کنید که آیا کاربران جدید باید فعالیت مشارکتی را در صحنه اصلی یا پنل کناری باز کنند یا خیر.
شروع فعالیت
یک فعالیت با فراخوانی متد startActivity() آغاز میشود که از رابط ActivityStartingState استفاده میکند.
مرحله ۱ (اختیاری): افزونه، وضعیت شروع فعالیت را تنظیم میکند.
ActivityStartingState حاوی اطلاعاتی درباره وضعیت اولیه افزونهای است که هنگام پذیرش دعوت برای پیوستن به فعالیت توسط شرکتکننده، مورد استفاده قرار میگیرد.
این افزونه میتواند با فراخوانی متد setActivityStartingState() در هر زمان قبل یا در حین فعالیت، ActivityStartingState را تنظیم یا بهروزرسانی کند. در صورتی که ActivityStartingState منحصراً در فراخوانی startActivity() تنظیم شده باشد، میتوان فراخوانیهای setActivityStartingState() را حذف کرد.
مرحله ۲: افزونه فعالیت را شروع میکند
این فعالیت زمانی آغاز میشود که افزونه، متد startActivity() را در MeetSidePanelClient فراخوانی کند. متد startActivity() یک شیء ActivityStartingState را به عنوان پارامتر میگیرد، بنابراین میتوان به جای فراخوانی setActivityStartingState() startActivity() فراخوانی کرد.
زمانی که کاربر انتخاب محتوا را تکمیل کرد و آماده شروع یک فعالیت شد، متد 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باز میکند.
مرحله ۳: دریافت وضعیت شروع فعالیت
وقتی کاربری به فعالیت ملحق میشود، افزونه شما را بسته به ActivityStartingState در صحنه اصلی یا پنل کناری بارگذاری میکند.
با استفاده از ویژگی additionalData ، میتوانید دادههای اولیه (که به آن state نیز گفته میشود) را با کاربرانی که به activity میپیوندند به اشتراک بگذارید. پس از مقداردهی اولیه MainStageClient یا SidePanelClient ، میتوانید متد getActivityStartingState() را برای بازیابی ویژگی additionalData فراخوانی کنید.
const startingState = client.getActivityStartingState();
const additionalData = JSON.parse(startingState.additionalData);
مرحله ۴ (اختیاری): اشتراکگذاری وضعیت افزونه در یک فعالیت
همچنین میتوانید وضعیت (state) را بین کاربران در حین انجام فعالیت به اشتراک بگذارید. میتوانید وضعیت را به دو روش به اشتراک بگذارید:
- با نوشتن backend همگامسازی خودتان، خودتان آن را مدیریت کنید.
- از API همکاری (Co-Doing) استفاده کنید، که روشی راحت و سریع برای اشتراکگذاری دادههای دلخواه بین کاربران است.
مثال: افزونه انیمیشن در گیتهاب
افزونه نمونه "انیمیشن" در گیتهاب شامل همکاری در یک افزونه است. مرحله 1 از این راهنما در نمونه گنجانده نشده است. در عوض، هنگامی که آغازگر افزونه روی دکمه "شروع انیمیشن" در پنل کناری کلیک میکند، متد startActivity() با پر کردن حالت شروع با رنگ انتخابی کاربر ( مرحله 2 ) فراخوانی میشود. پس از شروع فعالیت، مرحله اصلی با فراخوانی متد getActivityStartingState() حالت شروع را بازیابی میکند ( مرحله 3 ). مرحله 4 حذف شده است، زیرا حالت (رنگ انتخاب شده) در طول فعالیت در این افزونه نمونه بین شرکتکنندگان به اشتراک گذاشته نمیشود. با این حال، کاربران میتوانند با انتخاب یک رنگ، که از فریم پنل کناری به فریم مرحله اصلی با استفاده از پیامرسانی فریم به فریم ارسال میشود، حالت خود را تغییر دهند.
محدودیتها
- URL های مشخص شده در
ActivityStartingStateباید متعلق به همان مبدایی باشند که در مانیفست افزونه مشخص شده است. برای اطلاعات بیشتر، به بخش امنیت افزونه مراجعه کنید. - طول کاراکترهای ویژگیهای
sidePanelUrl،mainStageUrlوadditionalDataباید با محدودیتهای اندازه مربوطه که در مستندات مرجع SDK منتشر شده است، مطابقت داشته باشد.