
© copyright Blender Foundation | durian.blender.org · CC BY 3.0
Xodera Plugins · Bubble Native
Xodera Video Player Native
Wyświetlaj lekcje, demonstracje produktów i obsługiwane transmisje na żywo w aplikacji, z kontrolkami odtwarzania, pełnym ekranem i dostępnymi ścieżkami językowymi.
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.
Dokumentacja przeglądnięta 6 listopad 2026
Praktyczne przykłady
Linki do rozdziałów w aplikacji szkoleniowej
Uczeń musi odtworzyć jeden krok demonstracji bez przechodzenia do zewnętrznego odtwarzacza.
`source_url = Current Lesson’s video URL`; `poster_url = Current Lesson’s cover`; każdy rozdział przechowuje własny czas rozpoczęcia w aplikacji.
Kliknięcie rozdziału → jeśli zmienia źródło, poczekaj na `source_loaded` → Seek do `position_seconds` → Play. Użyj Set playback rate dla szczegółowej demonstracji i Enter fullscreen na żądanie.
Przeczytaj `position_seconds`, `duration_seconds` i `is_fullscreen`; Twój przepływ pracy zapisuje postęp lekcji tylko dla bieżącego źródła.
Przy `player_error` pokaż `error_code`, zachowaj postęp i zaoferuj Reload video. Zdarzenie zakończenia nie jest dowodem, że lekcja lub ocena bezpieczeństwa została zaliczona.
Używaj bezpośrednich plików wideo lub obsługiwanych strumieni. Ten odtwarzacz nie eksportuje wideo.
Demonstracje wideo w ofertach na rynku
Sam obraz produktu nie wyjaśnia, jak przedmiot działa, ale wideo zewnętrzne przerywa proces zakupu.
`source_url = Selected Listing’s demonstration URL`; `poster_url = its thumbnail`; `muted = yes` dla celowo wyciszonego pierwszego podglądu.
Otwórz wybraną ofertę → powiąż jej wideo → Play po akcji użytkownika. Zaproponuj Set muted dla dźwięku i Enter fullscreen dla bliższego przyjrzenia się. Powiąż `is_active` z widoczną szczegółowością.
Użyj `has_source`, `is_buffering` i `status`, aby odróżnić brak wideo, ładowanie i gotowe media.
Po zamianie źródła przestań stosować poprzedni postęp i wybory ścieżek. Pokaż miniaturę zastępczą, gdy wybrany plik nie jest obsługiwany.
Używaj bezpośrednich plików wideo lub obsługiwanych strumieni. Ten odtwarzacz nie eksportuje wideo.
Wybierz dostępne ścieżki językowe w obsługiwanym strumieniu
Wielojęzyczna aplikacja musi oferować ścieżki, które faktycznie zawiera dane źródło.
`source_url = Selected Programme’s accepted stream URL`; samo źródło musi dostarczać kompatybilne ścieżki audio/napisów.
Po `tracks_changed` odczytaj bieżące `audio_tracks_json` i `subtitle_tracks_json`; zbuduj wybory w aplikacji i wywołaj Select audio track lub Select subtitle track z aktualnym indeksem.
Użyj `selected_audio_index`, `selected_subtitle_index` i `source_generation`, aby powiązać wybór z tym źródłem.
Odbuduj wybory po każdej zmianie źródła. Jeśli ścieżka jest nieobecna lub nieobsługiwana, zachowaj domyślną ścieżkę i uczciwie pokaż jej dostępność.
Używaj bezpośrednich plików wideo lub obsługiwanych strumieni. Ten odtwarzacz nie eksportuje wideo.
Co działa teraz
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.
Zbuduj przepływ pracy
Użyj dostępnych poniżej akcji beta i przetestuj wynik na docelowych urządzeniach.
Te przykłady używają rekordów aplikacji, takich jak Lesson, Message i Order. Zastąp je własnymi typami danych i nazwami elementów. Przykładowe adresy mediów należy zastąpić własnymi plikami.
Ustaw source_url = Selected Lesson's video_url i poster_url = Selected Lesson's poster_url. Użyj auto lub progressive dla pliku MP4; użyj hls dla strumienia HLS.
Po playback_ready użyj Seek, aby wznowić zapisany position_seconds. Użytkownik uruchamia Play. Ustaw is_active, aby określić, czy widok lekcji jest otwarty.
Dodaj kontrolki Play, Pause, Seek, Set playback rate i Enter fullscreen. Wyświetl position_seconds i duration_seconds.
Po tracks_changed wyświetl dostępne opcje audio_tracks_json i subtitle_tracks_json dla tego wideo. Przekaż wybrany indeks do Select audio track lub Select subtitle track. Po zdarzeniu ended zapisz postęp.
Skonfiguruj raz
Utwórz lub wybierz swój projekt aplikacji Bubble w BestPlugins → Dashboard → Plugins. Wybierz Xodera Video Player Native, skopiuj jego klucz, a następnie otwórz Bubble → Plugins → Xodera Video Player Native i wklej go do licensing_api_key. Zapisz raz; potem użyj poniższych akcji. Każda wtyczka w każdym projekcie ma własny klucz.
Użyj bezpośredniego adresu wideo lub strumienia. Adres YouTube lub strona Vimeo nie jest bezpośrednim plikiem wideo. Odtwarzanie nie wymaga dostępu do kamery ani mikrofonu.
Skonfiguruj raz
- Utwórz lub wybierz swój projekt aplikacji Bubble w BestPlugins → Dashboard → Plugins.
- Wybierz tę wtyczkę i skopiuj jej klucz projektu.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Dodaj element, wybierz dane aplikacji i zbuduj poniższy przepływ pracy.
- 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.
Instalacja i subskrypcja
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.
Zapisz wynik w swojej aplikacji
Przykład WatchProgress: owner = Current User, lesson = Selected Lesson, seconds = Video Player's position_seconds, duration = Video Player's duration_seconds. Zapisuj tylko dla aktualnie wybranego wideo. Indeksy ścieżek należą do tego wideo i nie powinny być przechowywane jako stałe wybory językowe.
Błąd, anulowanie i odzyskiwanie
W przypadku player_error pokaż error_code i zaoferuj Reload video. Ładuje ponownie bez uruchamiania odtwarzania. Wybranie innego źródła usuwa poprzednie wybory ścieżek. Opuszczenie widoku wstrzymuje wideo; użytkownik naciska Play, aby kontynuować.
Możliwości i ograniczenia
Prędkości: 0.5, 1, 1.5 i 2. Głośność: 0–1. Formaty: auto, progressive, HLS i Android‑only DASH. Dostępne ścieżki zależą od pliku. Użyj -1, aby wyłączyć ścieżkę; -2 oznacza nieznane i nie może być wybrane. Brak edycji, eksportu wideo, DRM, obrazu‑w‑obrazie ani trwałej pamięci offline.
Ustawienia, akcje i wyniki
Użyj tych nazw w Bubble. Planowane funkcje są oznaczone osobno.
Dostępne ustawienia beta
Ustawienia elementu
source_url · textposter_url · textcontent_type · textrate · numbervolume · numbermuted · yes/noloop · yes/nois_active · yes/nodisabled · yes/nonative_controls · yes/noui_text_json · textlanguage · textStany
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 · textZdarzenia
source_changedsource_loadedplayback_readyplaying_changedtime_changedendedtracks_changedfullscreen_changedplayer_errorAkcje i ich wejścia
PlayPauseStop and rewindReload videoSeekSet volumeSet mutedSet playback rateEnter fullscreenSelect audio trackSelect subtitle trackUstawienia elementu · 12
source_urltext · Domyślne: ""- Przykładowa wartość
https://bestplugins.online/native-samples/lesson.mp4 - Przykładowe wyrażenie Bubble
Selected Lesson's video_url - Adres wybranego pliku audio, wideo lub obrazu. Użyj typu pliku obsługiwanego przez tę wtyczkę.
poster_urltext · Domyślne: ""- Przykładowa wartość
https://bestplugins.online/native-samples/poster.jpg - Przykładowe wyrażenie Bubble
Selected Lesson's poster_url - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
content_typetext · Domyślne: "auto"- Przykładowa wartość
auto - Przykładowe wyrażenie Bubble
Selected Lesson's video_content_type - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
ratenumber · Domyślne: 1- Przykładowa wartość
1.5 - Przykładowe wyrażenie Bubble
Speed Dropdown's value - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
volumenumber · Domyślne: 1- Przykładowa wartość
0.8 - Przykładowe wyrażenie Bubble
Volume Slider's value - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
mutedyes/no · Domyślne: false- Przykładowa wartość
no - Przykładowe wyrażenie Bubble
Mute Checkbox is checked - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
loopyes/no · Domyślne: false- Przykładowa wartość
no - Przykładowe wyrażenie Bubble
Selected Lesson's repeat_enabled - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
is_activeyes/no · Domyślne: true- Przykładowa wartość
yes - Przykładowe wyrażenie Bubble
GuideHost's view_is_active (your yes/no custom state) - Ustaw tak, gdy ten widok jest otwarty. Ustaw nie przy zamykaniu, aby odtwarzanie lub bieżąca praca mogły się zatrzymać.
disabledyes/no · Domyślne: false- Przykładowa wartość
no - Przykładowe wyrażenie Bubble
GuideHost's is_busy (your yes/no custom state) - Wyłącz element, gdy aplikacja jest zajęta lub akcja jest niedostępna.
native_controlsyes/no · Domyślne: false- Przykładowa wartość
no - Przykładowe wyrażenie Bubble
App Settings' use_native_video_controls - Pokaż lub ukryj standardowe kontrolki wideo urządzenia.
ui_text_jsontext · Domyślne: "{}"- Przykładowa wartość
{} - Przykładowe wyrażenie Bubble
App Settings' player_labels_json (supported keys only) - Opcjonalny JSON z obsługiwanymi etykietami przycisków. Pozostaw puste, aby użyć wbudowanego tekstu.
languagetext · Domyślne: "auto"- Przykładowa wartość
uk - Przykładowe wyrażenie Bubble
Current User's preferred_language - Ustaw language=auto, aby podążał za obsługiwanym językiem urządzenia lub przeglądarki. Wprowadź obsługiwany kod języka, aby wybrać go explicite.
Akcje i ich wejścia · 11
Play
Brak parametrów akcji
Pause
Brak parametrów akcji
Stop and rewind
Brak parametrów akcji
Reload video
Brak parametrów akcji
Seek
position_secondsnumber · Domyślne: —- Przykładowa wartość
45 - Przykładowe wyrażenie Bubble
Selected Chapter's start_seconds - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
Set volume
volumenumber · Domyślne: —- Przykładowa wartość
0.8 - Przykładowe wyrażenie Bubble
Volume Slider's value - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
Set muted
mutedyes/no · Domyślne: —- Przykładowa wartość
no - Przykładowe wyrażenie Bubble
Mute Checkbox is checked - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
Set playback rate
ratenumber · Domyślne: —- Przykładowa wartość
1.5 - Przykładowe wyrażenie Bubble
Speed Dropdown's value - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
Enter fullscreen
Brak parametrów akcji
Select audio track
indexnumber · Domyślne: —- Przykładowa wartość
0 - Przykładowe wyrażenie Bubble
Selected row's current_source_index - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
Select subtitle track
indexnumber · Domyślne: —- Przykładowa wartość
0 - Przykładowe wyrażenie Bubble
Selected row's current_source_index - Użyj wartości bieżącego rekordu biznesowego; zweryfikuj ją względem poniższych limitów.
Stany i zdarzenia
Stany
is_playing · yes/noAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
is_buffering · yes/noAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
pending_play · yes/noAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
is_live · yes/noAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
muted · yes/noAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
loop · yes/noAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
has_source · yes/noAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
is_fullscreen · yes/noAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
position_seconds · numberAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
duration_seconds · numberAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
volume · numberAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
rate · numberAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
source_generation · numberAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
selected_audio_index · numberAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
selected_subtitle_index · numberAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
status · textAktualny wynik tej akcji. Użyj pasującego zdarzenia zakończenia przed zapisaniem sukcesu. idle,loading,readyToPlay,error
audio_tracks_json · textAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
subtitle_tracks_json · textAktualna wartość wybranego elementu. Odczytaj ją po powiązanym zdarzeniu.
error_code · textInformacje o błędzie ostatniej akcji. Wyświetl pomocną wiadomość i zaoferuj odpowiednią ponowną próbę.
error_message · textInformacje o błędzie ostatniej akcji. Wyświetl pomocną wiadomość i zaoferuj odpowiednią ponowną próbę.
Zdarzenia
source_changedGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
source_loadedGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
playback_readyGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
playing_changedGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
time_changedGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
endedGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
tracks_changedGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
fullscreen_changedGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
player_errorGdy to zdarzenie wystąpi, odczytaj powiązane stany z tego samego elementu.
Pytania, które zadają programiści
Czy mogę wyeksportować wybrany fragment?
Nie. Seek i zmiana trybu pełnego ekranu wpływają na odtwarzanie, nie na bajty wideo.
Jak działa subskrypcja?
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.
Powiązane przewodniki
Aby uzyskać pomoc, podaj, której wtyczki i urządzenia używasz, jaką akcję podjąłeś i co się stało. Użyj przykładu bez danych osobowych. Nigdy nie udostępniaj swojego klucza ani prywatnych plików.