
© copyright Blender Foundation | durian.blender.org · CC BY 3.0
Xodera Plugins · Bubble Native
Xodera Video Player Native
درسها، نمایشهای محصول و پخش زندههای پشتیبانیشده را داخل برنامهتان نمایش دهید، همراه با کنترلهای پخش، تمامصفحه و مسیرهای زبانی موجود.
Public beta guides · Haptics instructions are in its Bubble listing
Public beta offer: free Bubble install · 7-day card trial, then US$1.50/month per plugin/project.
مستندات بررسیشده 6 نوامبر 2026
مثالهای عملی
پیوندهای فصل در برنامه آموزشی
یادگیرنده باید یک گام از نمایش را بدون رفتن به پخشکننده خارجی دوباره پخش کند.
`source_url = Current Lesson’s video URL`؛ `poster_url = Current Lesson’s cover`؛ هر فصل زمان شروع متعلق به برنامه را ذخیره میکند.
کلیک بر فصل → اگر منبع تغییر کند، صبر کنید تا `source_loaded` → Seek به `position_seconds` → Play. برای نمایش جزئی از Set playback rate استفاده کنید و هنگام درخواست Enter fullscreen را به کار ببرید.
`position_seconds`، `duration_seconds` و `is_fullscreen` را بخوانید؛ جریان کاری شما پیشرفت درس را فقط برای منبع فعلی ذخیره میکند.
در `player_error`، `error_code` را نشان دهید، پیشرفت را حفظ کنید و Reload video را ارائه دهید. یک رویداد تکمیل، اثباتی نیست بر این که درس یا ارزیابی ایمنی گذرانده شده است.
از فایلهای ویدئویی مستقیم یا جریانهای پشتیبانیشده استفاده کنید. این پخشکننده ویدئوها را صادر نمیکند.
نمایشهای ویدئویی در فهرستهای بازار
یک تصویر محصول به تنهایی نمیتواند نحوه کار یک آیتم را توضیح دهد، اما یک ویدئوی خارج از سایت جریان خرید را مختل میکند.
`source_url = Selected Listing’s demonstration URL`؛ `poster_url = its thumbnail`؛ `muted = yes` برای پیشنمایش اول عمداً بیصدا.
فهرست انتخابشده را باز کنید → ویدئوی آن را متصل کنید → پس از عمل کاربر Play. برای صدا Set muted و برای بررسی دقیقتر Enter fullscreen را ارائه دهید. `is_active` را به جزئیات قابل مشاهده متصل کنید.
از `has_source`، `is_buffering` و `status` برای تشخیص ویدئوی ناموجود، در حال بارگذاری و رسانه آماده استفاده کنید.
در هنگام جایگزینی منبع، اعمال پیشرفت و انتخابهای قبلی را متوقف کنید. وقتی فایل انتخابشده پشتیبانی نمیشود، یک تصویر بندانگشتی جایگزین نشان دهید.
از فایلهای ویدئویی مستقیم یا جریانهای پشتیبانیشده استفاده کنید. این پخشکننده ویدئوها را صادر نمیکند.
ترکهای زبان موجود را در یک جریان پشتیبانیشده انتخاب کنید
یک برنامه چندزبانه باید ترکهایی را که منبع خاصی واقعاً شامل میشود، ارائه دهد.
`source_url = Selected Programme’s accepted stream URL`؛ منبع باید ترکهای صوتی/زیرنویس سازگار را فراهم کند.
در `tracks_changed`، `audio_tracks_json` و `subtitle_tracks_json` فعلی را بخوانید؛ گزینهها را در برنامه خود بسازید و با اندیس فعلی Select audio track یا Select subtitle track را فراخوانی کنید.
از `selected_audio_index`، `selected_subtitle_index` و `source_generation` برای ارتباط گزینه با این منبع استفاده کنید.
پس از هر تغییر منبع، گزینهها را بازسازی کنید. اگر ترک موجود نباشد یا پشتیبانی نشود، ترک پیشفرض را نگه داشته و بهصورت صادقانه در دسترس بودن آن را نشان دهید.
از فایلهای ویدئویی مستقیم یا جریانهای پشتیبانیشده استفاده کنید. این پخشکننده ویدئوها را صادر نمیکند.
آنچه اکنون کار میکند
Public beta. Use the documented controls and actions; test supported formats, permissions and device behavior in your own native app. Browser preview does not validate native device output.
ساخت گردشکار
از اقدامات بتای موجود در زیر استفاده کنید و نتیجه را بر روی دستگاههای هدف خود آزمایش کنید.
این مثالها از رکوردهای برنامهای مانند Lesson، Message و Order استفاده میکنند. آنها را با انواع داده و نامهای عنصر خود جایگزین کنید. آدرسهای رسانهای نمونه باید با فایلهای خود جایگزین شوند.
source_url = Selected Lesson's video_url و poster_url = Selected Lesson's poster_url را تنظیم کنید. برای MP4 از auto یا progressive استفاده کنید؛ برای یک جریان HLS از hls استفاده کنید.
پس از playback_ready، از Seek برای ادامه در position_seconds ذخیرهشده استفاده کنید. کاربر Play را آغاز میکند. is_active را برای تعیین باز بودن نمای درس تنظیم کنید.
کنترلهای Play، Pause، Seek، Set playback rate و Enter fullscreen را اضافه کنید. position_seconds و duration_seconds را نمایش دهید.
پس از tracks_changed، گزینههای موجود audio_tracks_json و subtitle_tracks_json برای این ویدیو را نشان دهید. اندیس انتخابشده را به Select audio track یا Select subtitle track منتقل کنید. هنگام رویداد ended، پیشرفت را ذخیره کنید.
یکبار پیکربندی کنید
پروژه برنامه Bubble خود را در BestPlugins → Dashboard → Plugins ایجاد یا انتخاب کنید. Xodera Video Player Native را انتخاب کنید، کلید آن را کپی کنید، سپس Bubble → Plugins → Xodera Video Player Native را باز کنید و در licensing_api_key بچسبانید. یک بار ذخیره کنید؛ سپس از اقدامات زیر استفاده کنید. هر افزونه در هر پروژه کلید مخصوص به خود را دارد.
از آدرس مستقیم ویدئو یا جریان استفاده کنید. آدرس YouTube یا صفحه وب Vimeo یک فایل ویدئوی مستقیم نیست. پخش نیازی به دسترسی دوربین یا میکروفن ندارد.
یکبار پیکربندی کنید
- پروژه برنامه Bubble خود را در BestPlugins → Dashboard → Plugins ایجاد یا انتخاب کنید.
- این افزونه را انتخاب کنید و کلید پروژه آن را کپی کنید.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- عنصر را اضافه کنید، دادههای برنامه خود را انتخاب کنید و گردش کار زیر را بسازید.
- In the dashboard, review and confirm the 7-day card trial for this plugin. It then costs US$1.50/month per app project, including development and production. Cancel before the trial ends to avoid the first charge.
نصب و اشتراک
For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.
نتیجه را در برنامه خود ذخیره کنید
مثال WatchProgress: owner = Current User، lesson = Selected Lesson، seconds = Video Player's position_seconds، duration = Video Player's duration_seconds. فقط برای ویدئوی انتخابشده فعلی ذخیره کنید. شاخصهای ترک متعلق به آن ویدئو هستند و نباید بهعنوان انتخابهای زبانی دائمی ذخیره شوند.
خطا، لغو و بازیابی
در player_error، error_code را نشان دهید و Reload video را ارائه کنید. بدون شروع پخش دوباره بارگذاری میشود. انتخاب منبع دیگر انتخابهای ترک قبلی را پاک میکند. خروج از نما ویدئو را متوقف میکند؛ کاربر برای ادامه Play را فشار میدهد.
قابلیتها و محدودیتها
سرعتها: 0.5، 1، 1.5 و 2. صدا: 0–1. فرمتها: auto، progressive، HLS و فقط Android‑DASH. مسیرهای موجود به فایل بستگی دارند. برای خاموش کردن یک مسیر از -1 استفاده کنید؛ -2 به معنای ناشناخته است و قابل انتخاب نیست. ویرایش، خروجی ویدئو، DRM، تصویر‑در‑تصویر یا حافظهٔ آفلاین دائمی وجود ندارد.
تنظیمات، اقدامات و نتایج
از این نامها در Bubble استفاده کنید. ویژگیهای برنامهریزیشده بهصورت جداگانه علامتگذاری شدهاند.
تنظیمات بتای موجود
تنظیمات عنصر
source_url · textposter_url · textcontent_type · textrate · numbervolume · numbermuted · yes/noloop · yes/nois_active · yes/nodisabled · yes/nonative_controls · yes/noui_text_json · textlanguage · textوضعیتها
is_playing · yes/nois_buffering · yes/nopending_play · yes/nois_live · yes/nomuted · yes/noloop · yes/nohas_source · yes/nois_fullscreen · yes/noposition_seconds · numberduration_seconds · numbervolume · numberrate · numbersource_generation · numberselected_audio_index · numberselected_subtitle_index · numberstatus · textaudio_tracks_json · textsubtitle_tracks_json · texterror_code · texterror_message · textرویدادها
source_changedsource_loadedplayback_readyplaying_changedtime_changedendedtracks_changedfullscreen_changedplayer_errorاقدامات و ورودیهای آنها
PlayPauseStop and rewindReload videoSeekSet volumeSet mutedSet playback rateEnter fullscreenSelect audio trackSelect subtitle trackتنظیمات عنصر · 12
source_urltext · پیشفرض: ""- مقدار مثال
https://bestplugins.online/native-samples/lesson.mp4 - مثال Bubble عبارت
Selected Lesson's video_url - آدرس فایل صوتی، ویدئویی یا تصویری انتخابشده. از نوع فایلی استفاده کنید که این افزونه پشتیبانی میکند.
poster_urltext · پیشفرض: ""- مقدار مثال
https://bestplugins.online/native-samples/poster.jpg - مثال Bubble عبارت
Selected Lesson's poster_url - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
content_typetext · پیشفرض: "auto"- مقدار مثال
auto - مثال Bubble عبارت
Selected Lesson's video_content_type - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
ratenumber · پیشفرض: 1- مقدار مثال
1.5 - مثال Bubble عبارت
Speed Dropdown's value - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
volumenumber · پیشفرض: 1- مقدار مثال
0.8 - مثال Bubble عبارت
Volume Slider's value - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
mutedyes/no · پیشفرض: false- مقدار مثال
no - مثال Bubble عبارت
Mute Checkbox is checked - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
loopyes/no · پیشفرض: false- مقدار مثال
no - مثال Bubble عبارت
Selected Lesson's repeat_enabled - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
is_activeyes/no · پیشفرض: true- مقدار مثال
yes - مثال Bubble عبارت
GuideHost's view_is_active (your yes/no custom state) - در حالی که این نما باز است، مقدار را به بله تنظیم کنید. هنگام خروج، به نه تنظیم کنید تا پخش یا کار جاری متوقف شود.
disabledyes/no · پیشفرض: false- مقدار مثال
no - مثال Bubble عبارت
GuideHost's is_busy (your yes/no custom state) - عنصر را غیرفعال کنید وقتی برنامه شما مشغول است یا این عمل در دسترس نیست.
native_controlsyes/no · پیشفرض: false- مقدار مثال
no - مثال Bubble عبارت
App Settings' use_native_video_controls - کنترلهای ویدئوی استاندارد دستگاه را نشان دهید یا مخفی کنید.
ui_text_jsontext · پیشفرض: "{}"- مقدار مثال
{} - مثال Bubble عبارت
App Settings' player_labels_json (supported keys only) - JSON اختیاری با برچسبهای دکمه پشتیبانیشده. برای استفاده از متن داخلی خالی بگذارید.
languagetext · پیشفرض: "auto"- مقدار مثال
uk - مثال Bubble عبارت
Current User's preferred_language - language=auto را تنظیم کنید تا زبان دستگاه یا مرورگر پشتیبانیشده را دنبال کند. برای انتخاب صریح، کد زبان پشتیبانیشده را وارد کنید.
اقدامات و ورودیهای آنها · 11
Play
پارامترهای اقدام وجود ندارد
Pause
پارامترهای اقدام وجود ندارد
Stop and rewind
پارامترهای اقدام وجود ندارد
Reload video
پارامترهای اقدام وجود ندارد
Seek
position_secondsnumber · پیشفرض: —- مقدار مثال
45 - مثال Bubble عبارت
Selected Chapter's start_seconds - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
Set volume
volumenumber · پیشفرض: —- مقدار مثال
0.8 - مثال Bubble عبارت
Volume Slider's value - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
Set muted
mutedyes/no · پیشفرض: —- مقدار مثال
no - مثال Bubble عبارت
Mute Checkbox is checked - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
Set playback rate
ratenumber · پیشفرض: —- مقدار مثال
1.5 - مثال Bubble عبارت
Speed Dropdown's value - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
Enter fullscreen
پارامترهای اقدام وجود ندارد
Select audio track
indexnumber · پیشفرض: —- مقدار مثال
0 - مثال Bubble عبارت
Selected row's current_source_index - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
Select subtitle track
indexnumber · پیشفرض: —- مقدار مثال
0 - مثال Bubble عبارت
Selected row's current_source_index - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
وضعیتها و رویدادها
وضعیتها
is_playing · yes/noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
is_buffering · yes/noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
pending_play · yes/noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
is_live · yes/noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
muted · yes/noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
loop · yes/noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
has_source · yes/noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
is_fullscreen · yes/noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
position_seconds · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
duration_seconds · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
volume · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
rate · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
source_generation · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
selected_audio_index · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
selected_subtitle_index · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
status · textنتیجه فعلی این عمل. قبل از ذخیره موفقیت، از رویداد تکمیل مطابقتدار استفاده کنید. idle,loading,readyToPlay,error
audio_tracks_json · textمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
subtitle_tracks_json · textمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
error_code · textاطلاعات خطا برای آخرین عمل. پیام مفید نشان دهید و گزینهٔ تلاش مجدد مرتبط را ارائه دهید.
error_message · textاطلاعات خطا برای آخرین عمل. پیام مفید نشان دهید و گزینهٔ تلاش مجدد مرتبط را ارائه دهید.
رویدادها
source_changedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
source_loadedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
playback_readyهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
playing_changedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
time_changedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
endedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
tracks_changedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
fullscreen_changedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
player_errorهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
سؤالاتی که توسعهدهندگان میپرسند
آیا میتوانم بخش انتخابشده را صادر کنم؟
نه. Seek و حالت تمامصفحه پخش را تغییر میدهند، نه بایتهای ویدیو.
اشتراک چگونه کار میکند؟
For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.
راهنماهای مرتبط
برای دریافت کمک، به ما بگویید از کدام افزونه و دستگاه استفاده میکنید، عملی که امتحان کردید و چه اتفاقی افتاد. از مثالی بدون دادههای شخصی استفاده کنید. هرگز کلید یا فایلهای خصوصی خود را به اشتراک نگذارید.