Интерфейс Offline Files.
Интерфейс Offline Files.
← Все нативные руководства

Xodera Plugins · Bubble Native

Xodera Offline Files 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

Практические примеры

Подготовьте несколько локальных вложений перед отправкой отчёта

Форма должна отображать, какие файлы были выбраны, и позволять пользователю сохранять управляемую копию до любой отправки в облако.

`accepted_mime_types_json = your allowed MIME list`; `multiple = yes`; установите `max_files`, `max_file_bytes` и учётную запись/отчёт `document_context`.

Pick files → проверьте выбранные имена/размеры → Save selection locally. Ваша форма сохраняет полученные идентификаторы файлов, пока отдельный процесс Submit не загрузит одобренные файлы.

Используйте `selection_count`, `file_names`, `file_sizes` и `saved_file_ids` для отображения списка отзывов. Сохранённая управляемая копия сохраняет оригинал вызывающего.

Отменённый выборщик не является отправленным отчётом. На `files_error` сохраняйте уже принятые локальные идентификаторы и показывайте `error_code`; никогда не создавайте облачное вложение только из локального URI.

Файлы остаются на этом устройстве, пока не будут совместно использованы или загружены отдельно.

Сохраните вывод фото‑редактора или рекордера для последующего использования

Сгенерированный локальный файл может находиться во временном месте; приложению нужна явная управляемая копия.

`source_uri = the local output of a separately accepted editor/recorder`; привяжите его реальные `display_name` и `mime_type`; используйте тот же `document_context` владельца.

Load local source → проверка метаданных → Save selection locally. Сохраните возвращённый идентификатор файла только в соответствующем устройстве/контексте, затем используйте Restore saved file по этому точному идентификатору при необходимости.

Используйте `file_id`, `local_uri`, `size_bytes` и `is_saved_locally`; примените `file_restored`, чтобы различать завершённое восстановление и простую его запрос.

Отклоните удалённый URL HTTP как локальный источник. Если источник исчез или восстановление не удалось, покажите `error_code` и сохраните оригинальную запись приложения для восстановления.

Файлы остаются на этом устройстве, пока не будут совместно использованы или загружены отдельно.

Позвольте пользователю поделиться локальной квитанцией или экспортом, созданными приложением

Приложение должно передать выбранный локальный файл в системный лист обмена, а не создавать публичный URL.

`selected_file_id = the exact managed copy chosen from your app’s saved-file list`; его имя и MIME описывают реальный локальный файл.

List saved files → Restore saved file → Share selected file после нажатия пользователем «Поделиться». Сохраняйте копию до тех пор, пока они явно не выберут Delete saved copy.

Используйте `share_status` и `share_sheet_closed` для обновления интерфейса после закрытия листа. Сохраните идентификатор файла для последующего целенаправленного обмена.

Закрытый лист обмена не является доказательством доставки email/сообщения. Обрабатывайте отмену и `files_error` без сообщения об успехе получателю.

Файлы остаются на этом устройстве, пока не будут совместно использованы или загружены отдельно.

Что работает сейчас

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. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.

  1. Установите document_context = Current User's unique id или стабильное значение для учётной записи и отчёта. Выберите accepted_mime_types_json, max_files и max_file_bytes.

  2. Запустите Pick files или используйте Load local source для читаемого файла, созданного Photo Editor или Recorder. После selection_changed прочитайте соответствующие списки файлов; Select picked file выбирает индекс.

  3. Запустите Save selection locally. После files_saved сохраняйте saved_file_ids в локальном реестре вложений вашего приложения. List saved files отображает сохранённые копии; Restore saved file открывает выбранный сохранённый идентификатор.

  4. Share selected file открывает системное меню обмена. share_sheet_closed означает лишь закрытие меню. Delete saved copy требует выбранный идентификатор и confirm=yes.

Диаграмма рабочего процесса — не скриншот приложения

Настройте один раз

Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins. Выберите Xodera Offline Files Native, скопируйте его ключ, затем откройте Bubble → Plugins → Xodera Offline Files Native и вставьте его в licensing_api_key. Сохраните один раз; затем используйте действия ниже. Каждый плагин в каждом проекте имеет свой собственный ключ.

Используйте нативное приложение с доступом к выбранным файлам. Установите стабильный document_context для учётной записи или отчёта, чтобы его сохранённые файлы оставались правильно сгруппированы.

Настройте один раз
  1. Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins.
  2. Выберите этот плагин и скопируйте его ключ проекта.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Добавьте элемент, выберите данные вашего приложения и постройте рабочий процесс ниже.
  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.
Установка и подписка

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.

Сохраните результат в вашем приложении

Пример LocalAttachment: владелец, document_context, идентификатор сохранённого файла, display_name, mime_type и size_bytes. Этот идентификатор работает только на том же устройстве и для той же учётной записи или отчёта. Для онлайн‑вложения загрузите файл отдельным рабочим процессом и сохраните полученную ссылку на онлайн‑файл.

Сбой, отмена и восстановление

Отменённый выборщик возвращает operation_cancelled; он не отправляет форму. Пока native_pending=yes, дождитесь закрытия окна выбора файла или меню обмена перед открытием следующего. Clear session очищает текущий выбор, но сохраняет сохранённые копии. Если файл отсутствует, позвольте пользователю выбрать его снова.

Возможности и ограничения

Выберите файлы 1–20 одновременно. Ограничение на файл: 1 байт–256 MiB, при необходимости можно задать более низкое значение. Фильтры типов файлов не проверяют файлы на вирусы. Идентификаторы и пути файлов устройства не работают как ссылки для загрузки из облака. Локальные копии не являются зашифрованным хранилищем и могут быть потеряны при удалении данных приложения.

Настройки, действия и результаты

Используйте эти имена в Bubble. Планируемые функции отмечены отдельно.

Доступные настройки бета-версии

Настройки элемента

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

Состояния

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

События

selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_error

Действия и их входные данные

Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear session
Настройки элемента · 16
source_uritext · По умолчанию: ""
Пример значенияfile:///app-cache/report.pdf
Пример Bubble выраженияPhoto Editor's output_uri
Читаемое расположение файла на этом устройстве, возвращённое вашим выборщиком или другим плагином.
display_nametext · По умолчанию: ""
Пример значенияreport-photo.jpg
Пример Bubble выраженияSelected Attachment's display_name
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
mime_typetext · По умолчанию: ""
Пример значенияimage/jpeg
Пример Bubble выраженияPhoto Editor's output_mime
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
document_contexttext · По умолчанию: "default"
Пример значения<current-user-id>
Пример Bubble выраженияCurrent User's unique id
Стабильное значение для этой учётной записи или записи. Используйте то же значение при восстановлении её сохранённых файлов или черновиков.
selected_file_idtext · По умолчанию: ""
Пример значения<returned saved file ID>
Пример Bubble выраженияSelected LocalAttachment's local_file_id
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
accepted_mime_types_jsontext · По умолчанию: "[\"*/*\"]"
Пример значения["image/*","application/pdf"]
Пример Bubble выраженияReport Settings' accepted_mime_types_json
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
multipleyes_no · По умолчанию: false
Пример значенияyes
Пример Bubble выраженияReport Settings' allow_multiple_attachments
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
copy_to_cacheyes_no · По умолчанию: true
Пример значенияyes
Пример Bubble выраженияReport Settings' copy_to_cache
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
max_filesnumber · По умолчанию: 20
Пример значения5
Пример Bubble выраженияReport Settings' attachment_limit
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
max_file_bytesnumber · По умолчанию: 268435456
Пример значения10485760
Пример Bubble выраженияReport Settings' max_attachment_bytes
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
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)
Отключить элемент, пока приложение занято или действие недоступно.
show_controlsyes_no · По умолчанию: true
Пример значенияyes
Пример Bubble выраженияApp Settings' show_editor_controls
Показать или скрыть встроенные элементы управления.
languagetext · По умолчанию: "auto"
Пример значенияuk
Пример Bubble выраженияCurrent User's preferred_language
Установите language=auto для следования за поддерживаемым устройством или языком браузера. Введите поддерживаемый код языка, чтобы выбрать его явно.
ui_text_jsontext · По умолчанию: ""
Пример значения{}
Пример Bubble выраженияApp Settings' player_labels_json (supported keys only)
Необязательный JSON с поддерживаемыми надписями кнопок. Оставьте пустым, чтобы использовать встроенный текст.
titletext · По умолчанию: ""
Пример значенияLesson 4 — review
Пример Bubble выраженияSelected Lesson's name
Видимый текст приложения; пустое значение использует встроенный локализованный текст, где поддерживается. Без учётных данных.
Действия и их входные данные · 10
Pick files

Нет параметров действия

Load local source
source_uritext · По умолчанию: —
Пример значенияfile:///app-cache/report.pdf
Пример Bubble выраженияPhoto Editor's output_uri
Читаемое расположение файла на этом устройстве, возвращённое вашим выборщиком или другим плагином.
display_nametext · По умолчанию: —
Пример значенияreport-photo.jpg
Пример Bubble выраженияSelected Attachment's display_name
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
mime_typetext · По умолчанию: —
Пример значенияimage/jpeg
Пример Bubble выраженияPhoto Editor's output_mime
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Select picked file
indexnumber · По умолчанию: —
Пример значения0
Пример Bubble выраженияSelected row's current_source_index
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Save selection locally

Нет параметров действия

List saved files

Нет параметров действия

Restore saved file
file_idtext · По умолчанию: —
Пример значения<returned saved file ID>
Пример Bubble выраженияSelected LocalAttachment's local_file_id
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Delete saved copy
file_idtext · По умолчанию: —
Пример значения<returned saved file ID>
Пример Bubble выраженияSelected LocalAttachment's local_file_id
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
confirmyes_no · По умолчанию: —
Пример значенияyes — explicit confirmation only
Пример Bubble выраженияConfirm Checkbox is checked
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Share selected file
dialog_titletext · По умолчанию: —
Пример значенияShare attachment
Пример Bubble выраженияSelected Report's share_title
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
utitext · По умолчанию: —
Пример значения""
Пример Bubble выраженияEmpty unless your iOS integration supplies a proven UTI
Использовать значение текущей бизнес‑записи; проверить его в соответствии с нижеприведёнными ограничениями.
Cancel operation

Нет параметров действия

Clear session

Нет параметров действия

Состояния и события

Состояния

status · text

Текущий результат этого действия. Используйте соответствующее событие завершения перед сохранением успеха.

is_busy · yes_no

Работа всё ещё продолжается. Подождите, прежде чем начинать другое действие.

native_pending · yes_no

Работа всё ещё продолжается. Подождите, прежде чем начинать другое действие.

operation · text

Текущее значение выбранного элемента. Читайте его после связанного события.

selection_count · number

Текущее значение выбранного элемента. Читайте его после связанного события.

selected_index · number

Текущее значение выбранного элемента. Читайте его после связанного события.

file_id · text

Идентификатор этого элемента или действия. Храните его вместе с соответствующей записью приложения. Используйте тот же идентификатор запроса при повторной попытке при неопределённом результате.

local_uri · text

Расположение файла на этом устройстве. Сохраните или загрузите файл отдельно, если его необходимо хранить онлайн.

display_name · text

Текущее значение выбранного элемента. Читайте его после связанного события.

mime_type · text

Текущее значение выбранного элемента. Читайте его после связанного события.

mime_source · text

Текущее значение выбранного элемента. Читайте его после связанного события.

size_bytes · number

Текущее значение выбранного элемента. Читайте его после связанного события.

is_saved_locally · yes_no

Текущее значение выбранного элемента. Читайте его после связанного события.

file_ids · text (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

file_uris · text (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

file_names · text (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

file_mime_types · text (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

file_sizes · number (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

files_json · text

Текущее значение выбранного элемента. Читайте его после связанного события.

saved_count · number

Текущее значение выбранного элемента. Читайте его после связанного события.

saved_file_ids · text (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

saved_file_uris · text (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

saved_file_names · text (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

saved_file_mime_types · text (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

saved_file_sizes · number (список)

Список выбранных файлов. Элементы с одинаковым индексом в других списках файлов относятся к тому же файлу.

saved_files_json · text

Текущее значение выбранного элемента. Читайте его после связанного события.

invalid_saved_count · number

Текущее значение выбранного элемента. Читайте его после связанного события.

share_status · text

Текущий результат этого действия. Используйте соответствующее событие завершения перед сохранением успеха.

error_code · text

Информация об ошибке последнего действия. Показать полезное сообщение и предложить соответствующий повтор.

События

selection_changed

Когда происходит это событие, считайте связанные состояния из того же элемента.

files_saved

Когда происходит это событие, считайте связанные состояния из того же элемента.

list_loaded

Когда происходит это событие, считайте связанные состояния из того же элемента.

file_restored

Когда происходит это событие, считайте связанные состояния из того же элемента.

file_deleted

Когда происходит это событие, считайте связанные состояния из того же элемента.

share_sheet_closed

Когда происходит это событие, считайте связанные состояния из того же элемента.

operation_cancelled

Когда происходит это событие, считайте связанные состояния из того же элемента.

files_error

Когда происходит это событие, считайте связанные состояния из того же элемента.

Вопросы, которые задают разработчики

Означает ли Share «отправлено»?

Нет. ОС не предоставляет надёжного подтверждения получения получателем. Показывайте «share sheet closed».

Как работает подписка?

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.

Связанные руководства

Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.