
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. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.
Установите document_context = Current User's unique id или стабильное значение для учётной записи и отчёта. Выберите accepted_mime_types_json, max_files и max_file_bytes.
Запустите Pick files или используйте Load local source для читаемого файла, созданного Photo Editor или Recorder. После selection_changed прочитайте соответствующие списки файлов; Select picked file выбирает индекс.
Запустите Save selection locally. После files_saved сохраняйте saved_file_ids в локальном реестре вложений вашего приложения. List saved files отображает сохранённые копии; Restore saved file открывает выбранный сохранённый идентификатор.
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 для учётной записи или отчёта, чтобы его сохранённые файлы оставались правильно сгруппированы.
Настройте один раз
- Создайте или выберите ваш проект 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.
Сохраните результат в вашем приложении
Пример 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.
Связанные руководства
Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.