Interfaccia Offline Files.
Interfaccia Offline Files.
← Tutte le guide native

Xodera Plugins · Bubble Native

Xodera Offline Files Native

Mantieni gli allegati del report e i file scelti sul dispositivo, ripristinali in seguito e consenti all'utente di condividere una copia selezionata.

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.

Documentazione revisionata 6 novembre 2026

Esempi pratici

Prepara diversi allegati locali prima di inviare un report

Un modulo deve mostrare quali file sono stati selezionati e consentire all'utente di conservare una copia gestita prima di qualsiasi invio al cloud.

`accepted_mime_types_json = your allowed MIME list`; `multiple = yes`; impostare `max_files`, `max_file_bytes` e un account/report `document_context`.

Pick files → ispeziona i nomi/size selezionati → Save selection locally. Il tuo modulo conserva gli ID file risultanti fino a quando il flusso di lavoro Submit separato carica i file approvati.

Usa `selection_count`, `file_names`, `file_sizes` e `saved_file_ids` per generare l'elenco di revisione. Una copia gestita salvata conserva l'originale del chiamante.

Un selettore annullato non è un report inviato. Su `files_error`, conserva gli ID locali già accettati e mostra `error_code`; non creare mai un allegato cloud da un URI locale da solo.

I file rimangono su questo dispositivo fino a quando non vengono condivisi o caricati separatamente.

Conserva l'output di un editor fotografico o di un registratore per un uso successivo

Un file locale generato può trovarsi in una posizione temporanea; l'app necessita di una copia gestita esplicita.

`source_uri = the local output of a separately accepted editor/recorder`; collega il suo vero `display_name` e `mime_type`; usa lo `document_context` dello stesso proprietario.

Load local source → ispeziona i metadati → Save selection locally. Memorizza l'ID file restituito solo nel dispositivo/contesto corrispondente, quindi Restore saved file con quell'esatto ID quando necessario.

Consuma `file_id`, `local_uri`, `size_bytes` e `is_saved_locally`; usa `file_restored` per distinguere un ripristino completato da una semplice richiesta.

Rifiuta un URL remoto HTTP come fonte locale. Se una fonte scompare o il ripristino fallisce, mostra `error_code` e conserva il record originale dell'app per il recupero.

I file rimangono su questo dispositivo fino a quando non vengono condivisi o caricati separatamente.

Consenti a un utente di condividere una ricevuta locale generata dall'app o un'esportazione

L'app dovrebbe passare un file locale selezionato al foglio di condivisione del dispositivo invece di creare un URL pubblico.

`selected_file_id = the exact managed copy chosen from your app’s saved-file list`; il suo nome e MIME descrivono il vero file locale.

List saved files → Restore saved file → Share selected file dopo che l'utente tocca Condividi. Conserva la copia salvata fino a quando non sceglie esplicitamente Delete saved copy.

Usa `share_status` e `share_sheet_closed` per aggiornare l'interfaccia dopo la chiusura del foglio. Mantieni l'ID file per un'altra condivisione deliberata.

Un foglio di condivisione chiuso non è prova che un'email/messaggio sia stato consegnato. Gestisci la cancellazione e `files_error` senza segnalare il successo al destinatario.

I file rimangono su questo dispositivo fino a quando non vengono condivisi o caricati separatamente.

Cosa funziona ora

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.

Crea il flusso di lavoro

Usa le azioni beta disponibili qui sotto e testa il risultato sui tuoi dispositivi target.

Questi esempi utilizzano record di app come Lesson, Message e Order. Sostituiscili con i tuoi tipi di dati e nomi di elemento. Gli indirizzi multimediali di esempio devono essere sostituiti con i tuoi file.

  1. Imposta document_context = Current User's unique id, o un valore stabile per l'account e il report. Scegli accepted_mime_types_json, max_files e max_file_bytes.

  2. Esegui Pick files, oppure usa Load local source per un file leggibile prodotto da Photo Editor o Recorder. Dopo selection_changed, leggi gli elenchi di file corrispondenti; Select picked file sceglie un indice.

  3. Esegui Save selection locally. Dopo files_saved, conserva saved_file_ids nel registro locale degli allegati della tua app. List saved files mostra le copie salvate; Restore saved file apre l'ID salvato selezionato.

  4. Share selected file apre il menu di condivisione di sistema. share_sheet_closed indica solo che il menu è stato chiuso. Delete saved copy richiede l'ID selezionato e confirm=yes.

Diagramma del flusso di lavoro — non è uno screenshot dell'app

Configura una sola volta

Crea o scegli il tuo progetto app Bubble in BestPlugins → Dashboard → Plugins. Scegli Xodera Offline Files Native, copia la sua chiave, quindi apri Bubble → Plugins → Xodera Offline Files Native e incollala in licensing_api_key. Salva una volta; poi usa le azioni qui sotto. Ogni plugin in ogni progetto ha la propria chiave.

Utilizza un'app nativa con accesso ai file scelti. Imposta uno document_context stabile per l'account o il report affinché i file salvati rimangano correttamente raggruppati.

Configura una sola volta
  1. Crea o scegli il tuo progetto app Bubble su BestPlugins → Dashboard → Plugins.
  2. Scegli questo plugin e copia la sua chiave di progetto.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Aggiungi l'elemento, scegli i dati della tua app e costruisci il flusso di lavoro qui sotto.
  5. 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.
Installazione e abbonamento

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.

Salva il risultato nella tua app

Esempio LocalAttachment: proprietario, document_context, ID file salvato, display_name, mime_type e size_bytes. Questo ID funziona solo sullo stesso dispositivo e per lo stesso account o report. Per un allegato online, carica il file con un flusso di lavoro separato e salva il riferimento al file online restituito.

Errore, annullamento e ripristino

Un selettore annullato restituisce operation_cancelled; non invia il modulo. Mentre native_pending=yes, attendi che il selettore file o il menu di condivisione si chiuda prima di aprirne un altro. Clear session cancella la selezione corrente ma conserva le copie salvate. Se un file manca, consenti all'utente di sceglierlo nuovamente.

Capacità e limiti

Seleziona file 1–20 contemporaneamente. Limite per file: 1 byte–256 MiB, con un limite inferiore se lo desideri. I filtri per tipo di file non controllano la presenza di virus. Gli ID e i percorsi dei file del dispositivo non funzionano come link di download cloud. Le copie locali non sono archivi crittografati e possono andare perse se i dati dell'app vengono rimossi.

Impostazioni, azioni e risultati

Usa questi nomi in Bubble. Le funzionalità pianificate sono contrassegnate separatamente.

Impostazioni beta disponibili

Impostazioni elemento

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 · text

Stati

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 (elenco)file_uris · text (elenco)file_names · text (elenco)file_mime_types · text (elenco)file_sizes · number (elenco)files_json · textsaved_count · numbersaved_file_ids · text (elenco)saved_file_uris · text (elenco)saved_file_names · text (elenco)saved_file_mime_types · text (elenco)saved_file_sizes · number (elenco)saved_files_json · textinvalid_saved_count · numbershare_status · texterror_code · text

Eventi

selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_error

Azioni e i loro input

Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear session
Impostazioni elemento · 16
source_uritext · Predefinito: ""
Valore di esempiofile:///app-cache/report.pdf
Esempio di espressione BubblePhoto Editor's output_uri
Posizione file leggibile su questo dispositivo, restituita dal tuo selettore o da un altro plugin.
display_nametext · Predefinito: ""
Valore di esempioreport-photo.jpg
Esempio di espressione BubbleSelected Attachment's display_name
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
mime_typetext · Predefinito: ""
Valore di esempioimage/jpeg
Esempio di espressione BubblePhoto Editor's output_mime
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
document_contexttext · Predefinito: "default"
Valore di esempio<current-user-id>
Esempio di espressione BubbleCurrent User's unique id
Valore stabile per questo account o record. Usa lo stesso valore quando ripristini i file o le bozze salvati.
selected_file_idtext · Predefinito: ""
Valore di esempio<returned saved file ID>
Esempio di espressione BubbleSelected LocalAttachment's local_file_id
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
accepted_mime_types_jsontext · Predefinito: "[\"*/*\"]"
Valore di esempio["image/*","application/pdf"]
Esempio di espressione BubbleReport Settings' accepted_mime_types_json
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
multipleyes_no · Predefinito: false
Valore di esempioyes
Esempio di espressione BubbleReport Settings' allow_multiple_attachments
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
copy_to_cacheyes_no · Predefinito: true
Valore di esempioyes
Esempio di espressione BubbleReport Settings' copy_to_cache
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
max_filesnumber · Predefinito: 20
Valore di esempio5
Esempio di espressione BubbleReport Settings' attachment_limit
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
max_file_bytesnumber · Predefinito: 268435456
Valore di esempio10485760
Esempio di espressione BubbleReport Settings' max_attachment_bytes
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
is_activeyes_no · Predefinito: true
Valore di esempioyes
Esempio di espressione BubbleGuideHost's view_is_active (your yes/no custom state)
Imposta sì mentre questa vista è aperta. Imposta no quando esci, così la riproduzione o il lavoro corrente può fermarsi.
disabledyes_no · Predefinito: false
Valore di esempiono
Esempio di espressione BubbleGuideHost's is_busy (your yes/no custom state)
Disabilita l'elemento mentre la tua app è occupata o questa azione non è disponibile.
show_controlsyes_no · Predefinito: true
Valore di esempioyes
Esempio di espressione BubbleApp Settings' show_editor_controls
Mostra o nascondi i controlli integrati.
languagetext · Predefinito: "auto"
Valore di esempiouk
Esempio di espressione BubbleCurrent User's preferred_language
Imposta language=auto per seguire la lingua di un dispositivo o browser supportato. Inserisci un codice lingua supportato per sceglierla esplicitamente.
ui_text_jsontext · Predefinito: ""
Valore di esempio{}
Esempio di espressione BubbleApp Settings' player_labels_json (supported keys only)
JSON opzionale con etichette dei pulsanti supportate. Lascia vuoto per usare il testo integrato.
titletext · Predefinito: ""
Valore di esempioLesson 4 — review
Esempio di espressione BubbleSelected Lesson's name
Testo visibile dell'app; vuoto utilizza la copia localizzata integrata dove supportata. Nessuna credenziale.
Azioni e i loro input · 10
Pick files

Nessun parametro di azione

Load local source
source_uritext · Predefinito: —
Valore di esempiofile:///app-cache/report.pdf
Esempio di espressione BubblePhoto Editor's output_uri
Posizione file leggibile su questo dispositivo, restituita dal tuo selettore o da un altro plugin.
display_nametext · Predefinito: —
Valore di esempioreport-photo.jpg
Esempio di espressione BubbleSelected Attachment's display_name
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
mime_typetext · Predefinito: —
Valore di esempioimage/jpeg
Esempio di espressione BubblePhoto Editor's output_mime
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Select picked file
indexnumber · Predefinito: —
Valore di esempio0
Esempio di espressione BubbleSelected row's current_source_index
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Save selection locally

Nessun parametro di azione

List saved files

Nessun parametro di azione

Restore saved file
file_idtext · Predefinito: —
Valore di esempio<returned saved file ID>
Esempio di espressione BubbleSelected LocalAttachment's local_file_id
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Delete saved copy
file_idtext · Predefinito: —
Valore di esempio<returned saved file ID>
Esempio di espressione BubbleSelected LocalAttachment's local_file_id
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
confirmyes_no · Predefinito: —
Valore di esempioyes — explicit confirmation only
Esempio di espressione BubbleConfirm Checkbox is checked
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Share selected file
dialog_titletext · Predefinito: —
Valore di esempioShare attachment
Esempio di espressione BubbleSelected Report's share_title
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
utitext · Predefinito: —
Valore di esempio""
Esempio di espressione BubbleEmpty unless your iOS integration supplies a proven UTI
Usa il valore del record aziendale corrente; convalidalo rispetto ai limiti riportati di seguito.
Cancel operation

Nessun parametro di azione

Clear session

Nessun parametro di azione

Stati ed eventi

Stati

status · text

Risultato corrente di questa azione. Usa l'evento di completamento corrispondente prima di salvare il successo.

is_busy · yes_no

Il lavoro è ancora in corso. Attendi prima di avviare un'altra azione.

native_pending · yes_no

Il lavoro è ancora in corso. Attendi prima di avviare un'altra azione.

operation · text

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

selection_count · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

selected_index · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

file_id · text

Identificatore per questo elemento o azione. Conservalo con il record dell'app corrispondente. Usa lo stesso identificatore di richiesta quando riprovi un risultato incerto.

local_uri · text

Posizione del file su questo dispositivo. Salva o carica il file separatamente se deve essere mantenuto online.

display_name · text

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

mime_type · text

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

mime_source · text

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

size_bytes · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

is_saved_locally · yes_no

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

file_ids · text (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

file_uris · text (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

file_names · text (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

file_mime_types · text (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

file_sizes · number (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

files_json · text

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

saved_count · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

saved_file_ids · text (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

saved_file_uris · text (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

saved_file_names · text (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

saved_file_mime_types · text (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

saved_file_sizes · number (elenco)

Un elenco per i file selezionati. Gli elementi allo stesso indice negli altri elenchi di file si riferiscono allo stesso file.

saved_files_json · text

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

invalid_saved_count · number

Valore corrente per l'elemento selezionato. Leggilo dopo l'evento correlato.

share_status · text

Risultato corrente di questa azione. Usa l'evento di completamento corrispondente prima di salvare il successo.

error_code · text

Informazioni di errore per l'ultima azione. Mostra un messaggio utile e offri il tentativo di nuovo pertinente.

Eventi

selection_changed

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

files_saved

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

list_loaded

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

file_restored

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

file_deleted

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

share_sheet_closed

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

operation_cancelled

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

files_error

Quando si verifica questo evento, leggi gli stati correlati dallo stesso elemento.

Domande che gli sviluppatori pongono

Condivisione significa “inviato”?

No. Il sistema operativo non fornisce una conferma affidabile di successo del destinatario qui. Mostra “share sheet closed”.

Come funziona l'abbonamento?

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.

Guide correlate

Per assistenza, indicaci quale plugin e dispositivo utilizzi, l'azione che hai provato e cosa è accaduto. Usa un esempio senza dati personali. Non condividere mai la tua chiave o file privati.