
Xodera Plugins · Bubble Native
Xodera Offline Files Native
Bewahren Sie Berichtanhänge und ausgewählte Dateien auf dem Gerät, stellen Sie sie später wieder her und ermöglichen Sie dem Benutzer, eine ausgewählte Kopie zu teilen.
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.
Dokumentation geprüft 6 November 2026
Praktische Beispiele
Stelle mehrere lokale Anhänge bereit, bevor du einen Bericht einreichst
Ein Formular muss anzeigen, welche Dateien ausgewählt wurden, und dem Benutzer ermöglichen, eine verwaltete Kopie zu behalten, bevor eine Cloud‑Übertragung erfolgt.
`accepted_mime_types_json = your allowed MIME list`; `multiple = yes`; setze `max_files`, `max_file_bytes` und einen Konto-/Bericht `document_context`.
Pick files → prüfe die ausgewählten Namen/Größen → Save selection locally. Ihr Formular behält die resultierenden Datei‑IDs, bis der separate Submit‑Workflow die genehmigten Dateien hochlädt.
Verwenden Sie `selection_count`, `file_names`, `file_sizes` und `saved_file_ids`, um die Überprüfungsliste darzustellen. Eine gespeicherte verwaltete Kopie bewahrt das Original des Aufrufenden.
Ein abgebrochener Picker ist kein übermittelter Bericht. Auf `files_error` behalten Sie bereits akzeptierte lokale IDs und zeigen `error_code`; erstellen Sie niemals einen Cloud‑Anhang nur aus einer lokalen URI.
Dateien bleiben auf diesem Gerät, bis sie separat geteilt oder hochgeladen werden.
Behalten Sie die Ausgabe eines Foto‑Editors oder Recorders für spätere Verwendung.
Eine erzeugte lokale Datei kann sich in einem temporären Speicherort befinden; die App benötigt eine explizite verwaltete Kopie.
`source_uri = the local output of a separately accepted editor/recorder`; binden Sie sein echtes `display_name` und `mime_type`; verwenden Sie das `document_context` desselben Besitzers.
Load local source → prüfe Metadaten → Save selection locally. Speichern Sie die zurückgegebene Datei‑ID nur im passenden Gerät/Kontext und führen Sie dann Restore saved file mit dieser genauen ID aus, wenn nötig.
Verwenden Sie `file_id`, `local_uri`, `size_bytes` und `is_saved_locally`; nutzen Sie `file_restored`, um eine abgeschlossene Wiederherstellung von einer bloßen Anforderung zu unterscheiden.
Lehnen Sie eine entfernte HTTP‑URL als lokale Quelle ab. Wenn eine Quelle verschwindet oder die Wiederherstellung fehlschlägt, zeigen Sie `error_code` an und bewahren den ursprünglichen App‑Eintrag zur Wiederherstellung auf.
Dateien bleiben auf diesem Gerät, bis sie separat geteilt oder hochgeladen werden.
Ermöglichen Sie einem Benutzer, einen von der App erzeugten lokalen Beleg oder Export zu teilen.
Die App sollte eine ausgewählte lokale Datei dem Geräteshare‑Sheet übergeben, anstatt eine öffentliche URL zu erfinden.
`selected_file_id = the exact managed copy chosen from your app’s saved-file list`; sein Name und MIME beschreiben die echte lokale Datei.
List saved files → Restore saved file → Share selected file, nachdem der Benutzer auf Teilen tippt. Bewahren Sie die gespeicherte Kopie auf, bis er ausdrücklich Delete saved copy wählt.
Verwenden Sie `share_status` und `share_sheet_closed`, um die UI zu aktualisieren, nachdem das Sheet geschlossen wurde. Behalten Sie die Datei‑ID für ein weiteres gezieltes Teilen bei.
Ein geschlossenes Share‑Sheet beweist nicht, dass eine E‑Mail/Nachricht zugestellt wurde. Behandeln Sie Abbruch und `files_error`, ohne dem Empfänger einen Erfolg zu melden.
Dateien bleiben auf diesem Gerät, bis sie separat geteilt oder hochgeladen werden.
Was jetzt funktioniert
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.
Workflow erstellen
Verwenden Sie die unten verfügbaren Beta‑Aktionen und testen Sie das Ergebnis auf Ihren Zielgeräten.
Diese Beispiele verwenden App‑Datensätze wie Lesson, Message und Order. Ersetzen Sie sie durch Ihre eigenen Datentypen und Elementnamen. Beispiel‑Medienadressen müssen durch Ihre eigenen Dateien ersetzt werden.
Setzen Sie document_context = Current User's unique id oder einen stabilen Wert für das Konto und den Bericht. Wählen Sie accepted_mime_types_json, max_files und max_file_bytes.
Führen Sie Pick files aus oder verwenden Sie Load local source für eine lesbare Datei, die vom Foto‑Editor oder Recorder erzeugt wurde. Nach selection_changed lesen Sie die passenden Dateilisten; Select picked file wählt einen Index.
Führen Sie Save selection locally aus. Nach files_saved behalten Sie saved_file_ids im lokalen Anhangs‑Datensatz Ihrer App. List saved files zeigt gespeicherte Kopien; Restore saved file öffnet die ausgewählte gespeicherte ID.
Share selected file öffnet das System‑Freigabemenü. share_sheet_closed bedeutet lediglich, dass das Menü geschlossen wurde. Delete saved copy benötigt die ausgewählte ID und confirm=yes.
Einmal konfigurieren
Erstellen oder wählen Sie Ihr Bubble‑App‑Projekt in BestPlugins → Dashboard → Plugins. Wählen Sie Xodera Offline Files Native, kopieren Sie dessen Schlüssel und öffnen Sie anschließend Bubble → Plugins → Xodera Offline Files Native, um ihn in licensing_api_key einzufügen. Speichern Sie einmal; verwenden Sie dann die untenstehenden Aktionen. Jeder Plugin in jedem Projekt hat einen eigenen Schlüssel.
Verwenden Sie eine native App mit Zugriff auf die ausgewählten Dateien. Legen Sie ein stabiles document_context für das Konto oder den Bericht fest, damit die gespeicherten Dateien korrekt gruppiert bleiben.
Einmal konfigurieren
- Erstellen oder wählen Sie Ihr Bubble‑App‑Projekt bei BestPlugins → Dashboard → Plugins.
- Wählen Sie dieses Plugin aus und kopieren Sie dessen Projektschlüssel.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Fügen Sie das Element hinzu, wählen Sie Ihre App‑Daten und erstellen Sie den untenstehenden Workflow.
- 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.
Installation und Abonnement
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.
Speichern Sie das Ergebnis in Ihrer App
Beispiel LocalAttachment: Eigentümer, document_context, gespeicherte Datei‑ID, display_name, mime_type und size_bytes. Diese ID funktioniert nur auf demselben Gerät und für dasselbe Konto oder denselben Bericht. Für einen Online‑Anhang laden Sie die Datei mit einem separaten Workflow hoch und speichern die zurückgegebene Online‑Dateireferenz.
Fehler, Abbruch und Wiederherstellung
Ein abgebrochener Picker gibt operation_cancelled zurück; er sendet das Formular nicht ab. Während native_pending=yes, warten Sie, bis der Dateiauswahl- oder Freigabemenü geschlossen ist, bevor Sie einen weiteren öffnen. Clear session löscht die aktuelle Auswahl, behält jedoch gespeicherte Kopien. Wenn eine Datei fehlt, lassen Sie den Benutzer sie erneut auswählen.
Funktionen und Grenzen
Wählen Sie 1–20 Dateien gleichzeitig aus. Pro‑Datei‑Limit: 1 Byte–256 MiB, bei Bedarf mit niedrigerem Limit. Dateityp‑Filter prüfen Dateien nicht auf Viren. Geräte‑Datei‑IDs und Pfade funktionieren nicht als Cloud‑Download‑Links. Lokale Kopien sind kein verschlüsselter Speicher und können verloren gehen, wenn App‑Daten entfernt werden.
Einstellungen, Aktionen und Ergebnisse
Verwenden Sie diese Namen in Bubble. Geplante Funktionen sind separat gekennzeichnet.
Verfügbare Beta‑Einstellungen
Elementeinstellungen
source_uri · textdisplay_name · textmime_type · textdocument_context · textselected_file_id · textaccepted_mime_types_json · textmultiple · yes_nocopy_to_cache · yes_nomax_files · numbermax_file_bytes · numberis_active · yes_nodisabled · yes_noshow_controls · yes_nolanguage · textui_text_json · texttitle · textZustände
status · textis_busy · yes_nonative_pending · yes_nooperation · textselection_count · numberselected_index · numberfile_id · textlocal_uri · textdisplay_name · textmime_type · textmime_source · textsize_bytes · numberis_saved_locally · yes_nofile_ids · text (Liste)file_uris · text (Liste)file_names · text (Liste)file_mime_types · text (Liste)file_sizes · number (Liste)files_json · textsaved_count · numbersaved_file_ids · text (Liste)saved_file_uris · text (Liste)saved_file_names · text (Liste)saved_file_mime_types · text (Liste)saved_file_sizes · number (Liste)saved_files_json · textinvalid_saved_count · numbershare_status · texterror_code · textEreignisse
selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_errorAktionen und deren Eingaben
Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear sessionElementeinstellungen · 16
source_uritext · Standard: ""- Beispielwert
file:///app-cache/report.pdf - Beispiel Bubble Ausdruck
Photo Editor's output_uri - Lesbare Dateiposition auf diesem Gerät, zurückgegeben von Ihrem Picker oder einem anderen Plugin.
display_nametext · Standard: ""- Beispielwert
report-photo.jpg - Beispiel Bubble Ausdruck
Selected Attachment's display_name - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
mime_typetext · Standard: ""- Beispielwert
image/jpeg - Beispiel Bubble Ausdruck
Photo Editor's output_mime - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
document_contexttext · Standard: "default"- Beispielwert
<current-user-id> - Beispiel Bubble Ausdruck
Current User's unique id - Stabiler Wert für dieses Konto oder diesen Datensatz. Verwenden Sie denselben Wert beim Wiederherstellen seiner gespeicherten Dateien oder Entwürfe.
selected_file_idtext · Standard: ""- Beispielwert
<returned saved file ID> - Beispiel Bubble Ausdruck
Selected LocalAttachment's local_file_id - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
accepted_mime_types_jsontext · Standard: "[\"*/*\"]"- Beispielwert
["image/*","application/pdf"] - Beispiel Bubble Ausdruck
Report Settings' accepted_mime_types_json - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
multipleyes_no · Standard: false- Beispielwert
yes - Beispiel Bubble Ausdruck
Report Settings' allow_multiple_attachments - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
copy_to_cacheyes_no · Standard: true- Beispielwert
yes - Beispiel Bubble Ausdruck
Report Settings' copy_to_cache - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
max_filesnumber · Standard: 20- Beispielwert
5 - Beispiel Bubble Ausdruck
Report Settings' attachment_limit - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
max_file_bytesnumber · Standard: 268435456- Beispielwert
10485760 - Beispiel Bubble Ausdruck
Report Settings' max_attachment_bytes - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
is_activeyes_no · Standard: true- Beispielwert
yes - Beispiel Bubble Ausdruck
GuideHost's view_is_active (your yes/no custom state) - Setzen Sie ja, solange diese Ansicht geöffnet ist. Setzen Sie nein beim Verlassen, damit die Wiedergabe oder die aktuelle Arbeit gestoppt werden kann.
disabledyes_no · Standard: false- Beispielwert
no - Beispiel Bubble Ausdruck
GuideHost's is_busy (your yes/no custom state) - Deaktivieren Sie das Element, solange Ihre App beschäftigt ist oder diese Aktion nicht verfügbar ist.
show_controlsyes_no · Standard: true- Beispielwert
yes - Beispiel Bubble Ausdruck
App Settings' show_editor_controls - Ein- oder Ausblenden der integrierten Steuerelemente.
languagetext · Standard: "auto"- Beispielwert
uk - Beispiel Bubble Ausdruck
Current User's preferred_language - Setzen Sie language=auto, um einer unterstützten Geräte‑ oder Browsersprache zu folgen. Geben Sie einen unterstützten Sprachcode ein, um ihn ausdrücklich auszuwählen.
ui_text_jsontext · Standard: ""- Beispielwert
{} - Beispiel Bubble Ausdruck
App Settings' player_labels_json (supported keys only) - Optionales JSON mit unterstützten Schaltflächenbeschriftungen. Leer lassen, um den integrierten Text zu verwenden.
titletext · Standard: ""- Beispielwert
Lesson 4 — review - Beispiel Bubble Ausdruck
Selected Lesson's name - Sichtbarer App-Text; leer verwendet die integrierte lokalisierte Kopie, wo unterstützt. Keine Anmeldedaten.
Aktionen und deren Eingaben · 10
Pick files
Keine Aktionsparameter
Load local source
source_uritext · Standard: —- Beispielwert
file:///app-cache/report.pdf - Beispiel Bubble Ausdruck
Photo Editor's output_uri - Lesbare Dateiposition auf diesem Gerät, zurückgegeben von Ihrem Picker oder einem anderen Plugin.
display_nametext · Standard: —- Beispielwert
report-photo.jpg - Beispiel Bubble Ausdruck
Selected Attachment's display_name - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
mime_typetext · Standard: —- Beispielwert
image/jpeg - Beispiel Bubble Ausdruck
Photo Editor's output_mime - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
Select picked file
indexnumber · Standard: —- Beispielwert
0 - Beispiel Bubble Ausdruck
Selected row's current_source_index - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
Save selection locally
Keine Aktionsparameter
List saved files
Keine Aktionsparameter
Restore saved file
file_idtext · Standard: —- Beispielwert
<returned saved file ID> - Beispiel Bubble Ausdruck
Selected LocalAttachment's local_file_id - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
Delete saved copy
file_idtext · Standard: —- Beispielwert
<returned saved file ID> - Beispiel Bubble Ausdruck
Selected LocalAttachment's local_file_id - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
confirmyes_no · Standard: —- Beispielwert
yes — explicit confirmation only - Beispiel Bubble Ausdruck
Confirm Checkbox is checked - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
Share selected file
dialog_titletext · Standard: —- Beispielwert
Share attachment - Beispiel Bubble Ausdruck
Selected Report's share_title - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
utitext · Standard: —- Beispielwert
"" - Beispiel Bubble Ausdruck
Empty unless your iOS integration supplies a proven UTI - Verwenden Sie den Wert des aktuellen Geschäftsdatensatzes; prüfen Sie ihn anhand der untenstehenden Grenzen.
Cancel operation
Keine Aktionsparameter
Clear session
Keine Aktionsparameter
Zustände und Ereignisse
Zustände
status · textAktuelles Ergebnis dieser Aktion. Verwenden Sie das passende Abschlussereignis, bevor Sie den Erfolg speichern.
is_busy · yes_noDie Arbeit ist noch im Gange. Bitte warten Sie, bevor Sie eine weitere Aktion starten.
native_pending · yes_noDie Arbeit ist noch im Gange. Bitte warten Sie, bevor Sie eine weitere Aktion starten.
operation · textAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
selection_count · numberAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
selected_index · numberAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
file_id · textKennzeichen für dieses Element oder diese Aktion. Bewahren Sie es zusammen mit dem zugehörigen App‑Datensatz auf. Verwenden Sie dieselbe Anforderungs‑Kennung, wenn Sie ein unsicheres Ergebnis erneut versuchen.
local_uri · textDateistandort auf diesem Gerät. Speichern oder laden Sie die Datei separat hoch, wenn sie online behalten werden muss.
display_name · textAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
mime_type · textAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
mime_source · textAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
size_bytes · numberAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
is_saved_locally · yes_noAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
file_ids · text (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
file_uris · text (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
file_names · text (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
file_mime_types · text (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
file_sizes · number (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
files_json · textAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
saved_count · numberAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
saved_file_ids · text (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
saved_file_uris · text (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
saved_file_names · text (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
saved_file_mime_types · text (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
saved_file_sizes · number (Liste)Eine Liste für die ausgewählten Dateien. Elemente mit demselben Index in den anderen Dateilisten beziehen sich auf dieselbe Datei.
saved_files_json · textAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
invalid_saved_count · numberAktueller Wert für das ausgewählte Element. Lesen Sie ihn nach dem zugehörigen Ereignis.
share_status · textAktuelles Ergebnis dieser Aktion. Verwenden Sie das passende Abschlussereignis, bevor Sie den Erfolg speichern.
error_code · textFehlermeldung für die letzte Aktion. Zeigen Sie eine hilfreiche Nachricht an und bieten Sie den entsprechenden Wiederholungsversuch an.
Ereignisse
selection_changedWenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.
files_savedWenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.
list_loadedWenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.
file_restoredWenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.
file_deletedWenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.
share_sheet_closedWenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.
operation_cancelledWenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.
files_errorWenn dieses Ereignis eintritt, lesen Sie die zugehörigen Zustände aus demselben Element.
Fragen, die Entwickler stellen
Bedeutet „Teilen“ „gesendet“?
Nein. Das Betriebssystem liefert hier keinen zuverlässigen Empfänger‑Erfolgsnachweis. Zeige „share sheet closed“.
Wie funktioniert das Abonnement?
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.
Verwandte Anleitungen
Für Hilfe geben Sie an, welches Plugin und Gerät Sie verwenden, welche Aktion Sie versucht haben und was passiert ist. Verwenden Sie ein Beispiel ohne persönliche Daten. Teilen Sie niemals Ihren Schlüssel oder private Dateien.