Audio Recorder 界面。
Audio Recorder 界面。
← 所有原生指南

Xodera Plugins · Bubble Native

Xodera Audio Recorder 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.

文档审阅日期:2026年11月6日

实用示例

在发送非机密语音消息之前先聆听

用户需要有机会先听取并替换录音,才能将其变为附件。

`title = the app’s conversation label`;将 `max_duration_seconds` 和 `max_upload_bytes` 设置为您的消息策略。

Start recording → Stop recording → 等待 `recording_ready` → Play preview。提供 Seek preview 和 Set preview speed。仅在明确点击发送时才会在已接受的自应用上传端点上调用 Upload to Bubble。

仅在 `upload_succeeded` 时,创建您的 Message 并将其音频字段设为 `uploaded_file`。该消息并非由录音器本身创建。

当麦克风被拒绝时显示 `permission_status`;上传失败时保留本地录音。重试前检查未知上传的结果,以防发送产生重复的附件/消息。

Bubble 上传会创建公共音频文件。请勿将此上传用于机密录音。

无需立即上传的发音练习

学习者希望在决定提交之前,将自己的口语回应与课程进行比较。

`title = Current Exercise’s prompt`;`max_duration_seconds = the exercise limit`;练习答案仍为应用拥有的记录。

录音 → 停止 → Play preview。让学习者可以定位、减慢预览或取消并重新录制。仅在他们选择保留草稿时才进行 Save locally。

`duration`、`local_uri`、`mime_type` 和 `draft_id` 描述此次尝试。您的应用决定是保持本地还是稍后通过您选择的上传工作流提交。

在 `preview_error` 时,保留草稿并显示 `error_code`。除非应用的提交工作流成功,否则不要将预览或已保存的草稿转为已提交的答案。

Bubble 上传会创建公共音频文件。请勿将此上传用于机密录音。

保留本地语音草稿,并将发送设为明确操作

现场工作人员在完成笔记前可能会被打断,且不应仅为保存而必须上传。

`saved_draft_id = the draft ID stored by your app for this device and account`; `title = the selected non-sensitive task label`.

Start recording → Stop recording → Save locally。将返回的 `draft_id` 存储在您设备/账户范围的状态中。使用 Restore local draft 关联相同 ID,然后在决定是否上传前使用 Play preview。

在 `local_saved` 或 `local_restored` 时,检查 `is_saved_locally`、`local_uri` 和 `duration`。仅在用户明确选择或在另行确认的保留政策后删除已保存的草稿。

如果恢复失败,显示 `error_code` 并保留 ID 以供诊断;不要将空的或不同的录音报告为已恢复。切勿在重新连接时自动(auto)上传。

Bubble 上传会创建公共音频文件。请勿将此上传用于机密录音。

当前可用功能

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,并将 is_active 设为录音视图是否打开。

  2. Start recording 请求麦克风权限。Pause 和 Resume 保持同一段录音。Stop recording 完成录音;在提供审查或上传前等待 recording_ready。

  3. 使用预览控件进行聆听。Save locally 在此设备上保留草稿;在 local_saved 之后,保留 draft_id 用于 Restore local draft。

  4. 说明发送会创建公共文件。将 bubble_upload_url 设置为您自己的 Bubble 应用的正确 Development 或 Live 文件上传地址。仅在用户选择发送时运行 Upload to Bubble;在 upload_succeeded 时,将 uploaded_file 保存到您的记录中。

工作流图 — 不是应用截图

一次性配置

在 BestPlugins → Dashboard → Plugins 中创建或选择您的 Bubble 应用项目。选择 Xodera Audio Recorder Native,复制其密钥,然后打开 Bubble → Plugins → Xodera Audio Recorder Native 并粘贴到 licensing_api_key。保存一次;随后使用以下操作。每个项目中的每个插件都有其自己的密钥。

用户开始录音时请求麦克风权限。选择应用保存草稿的方式。Bubble 上传会存储公共文件,请仅用于适合公开存储的音频。

一次性配置
  1. 在 BestPlugins → Dashboard → Plugins 中创建或选择您的 Bubble 应用项目。
  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.

将结果保存到您的应用中

在 upload_succeeded 之后,设置 VoiceMessage.audio = Recorder's uploaded_file、owner = Current User、duration = Recorder's duration 和 mime_type = Recorder's mime_type。draft_id 在此设备上恢复草稿;它不是在线音频文件。

失败、取消与恢复

如果麦克风访问被拒绝,请说明如何在设备设置中启用。Cancel recording 丢弃未保存的录音;已保存的草稿保留。若上传中断,保留本地录音并检查文件是否已到达后再重新发送。Delete saved draft 仅删除所选的已保存草稿。

功能与限制

默认最大录音时长:300 秒;可配置 1–3600。默认上传限制:10 MiB;最大 30 MiB。上传超时:60 秒,且不自动重试。Bubble 上传为公开。仅支持您自己的 *.bubbleapps.io 文件上传地址;不支持自定义域名。本地草稿不采用加密存储。

设置、操作和结果

在 Bubble 中使用这些名称。计划中的功能会单独标记。

可用的测试版设置

元素设置

title · textmax_duration_seconds · numbermax_upload_bytes · numberis_active · yes_nodisabled · yes_noui_text_json · textsaved_draft_id · textbubble_upload_url · textlanguage · textdocument_context · text

状态

recorder_status · textpermission_status · textis_recording · yes_nois_paused · yes_noduration · numberlocal_uri · textdraft_id · textis_saved_locally · yes_nomime_type · textfile_size · numberwaveform_peaks_json · textpreview_status · textpreview_is_playing · yes_nopreview_current_time · numberupload_status · textupload_progress · numberuploaded_url · textuploaded_file · fileerror_code · text

事件

recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_error

操作及其输入

Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speed
元素设置 · 10
titletext · 默认: ""
示例值Lesson 4 — review
示例 Bubble 表达式Selected Lesson's name
可见的应用文本;留空时使用内置的本地化文案(如支持)。请勿填入凭证。
max_duration_secondsnumber · 默认: 300
示例值300
示例 Bubble 表达式Voice Settings' max_seconds
使用当前业务记录的值;根据以下限制进行验证。
max_upload_bytesnumber · 默认: 10485760
示例值10485760
示例 Bubble 表达式Voice Settings' max_upload_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)
当应用忙碌或此操作不可用时禁用该元素。
ui_text_jsontext · 默认: ""
示例值{}
示例 Bubble 表达式App Settings' player_labels_json (supported keys only)
可选的 JSON,包含支持的按钮标签。留空则使用内置文本。
saved_draft_idtext · 默认: ""
示例值<returned draft_id>
示例 Bubble 表达式Selected VoiceDraft's draft_id
使用当前业务记录的值;根据以下限制进行验证。
bubble_upload_urltext · 默认: ""
示例值https://your-app.bubbleapps.io/version-test/fileupload
示例 Bubble 表达式App Settings' selected_bubble_upload_url
您自己的 Bubble 应用文件上传地址:/version-test/fileupload 用于 Development,/fileupload 用于 Live。此上传会创建公共文件。
languagetext · 默认: "auto"
示例值uk
示例 Bubble 表达式Current User's preferred_language
将 language=auto 设置为跟随支持的设备或浏览器语言。输入支持的语言代码以明确选择。
document_contexttext · 默认: ""
示例值<current-user-id>
示例 Bubble 表达式Current User's unique id
此账户或记录的稳定值。恢复其已保存的文件或草稿时使用相同的值。
操作及其输入 · 15
Start recording

无操作参数

Pause recording

无操作参数

Resume recording

无操作参数

Stop recording

无操作参数

Cancel recording

无操作参数

Save locally

无操作参数

Restore local draft
draft_idtext · 默认: —
示例值<returned draft_id>
示例 Bubble 表达式Selected VoiceDraft's draft_id
使用当前业务记录的值;根据以下限制进行验证。
Delete saved draft
draft_idtext · 默认: —
示例值<returned draft_id>
示例 Bubble 表达式Selected VoiceDraft's draft_id
使用当前业务记录的值;根据以下限制进行验证。
Upload to Bubble

无操作参数

Cancel upload

无操作参数

Play preview

无操作参数

Pause preview

无操作参数

Stop preview

无操作参数

Seek preview
secondsnumber · 默认: —
示例值12
示例 Bubble 表达式Selected Comment's seconds
使用当前业务记录的值;根据以下限制进行验证。
Set preview speed
ratenumber · 默认: —
示例值1.5
示例 Bubble 表达式Preview Speed Dropdown's value
使用当前业务记录的值;根据以下限制进行验证。
状态和事件

状态

recorder_status · text

此操作的当前结果。保存成功前请使用匹配的完成事件。

permission_status · text

此操作的当前结果。保存成功前请使用匹配的完成事件。

is_recording · yes_no

所选项目的当前值。请在相关事件后读取。

is_paused · yes_no

所选项目的当前值。请在相关事件后读取。

duration · number

所选项目的当前值。请在相关事件后读取。

local_uri · text

此设备上的文件位置。如果必须保持在线,请单独保存或上传文件。

draft_id · text

此项目或操作的标识符。请与对应的应用记录一起保存。重试不确定结果时使用相同的请求标识符。

is_saved_locally · yes_no

所选项目的当前值。请在相关事件后读取。

mime_type · text

所选项目的当前值。请在相关事件后读取。

file_size · number

所选项目的当前值。请在相关事件后读取。

waveform_peaks_json · text

所选项目的当前值。请在相关事件后读取。

preview_status · text

此操作的当前结果。保存成功前请使用匹配的完成事件。

preview_is_playing · yes_no

所选项目的当前值。请在相关事件后读取。

preview_current_time · number

所选项目的当前值。请在相关事件后读取。

upload_status · text

此操作的当前结果。保存成功前请使用匹配的完成事件。

upload_progress · number

所选项目的当前值。请在相关事件后读取。

uploaded_url · text

所选项目的当前值。请在相关事件后读取。

uploaded_file · file

文件在 upload_succeeded 之后返回。请将其保存到您的 Bubble 文件字段。

error_code · text

上一次操作的错误信息。显示有帮助的提示并提供相应的重试。

事件

recording_started

当此事件发生时,从同一元素读取相关状态。

recording_paused

当此事件发生时,从同一元素读取相关状态。

recording_resumed

当此事件发生时,从同一元素读取相关状态。

recording_stopped

当此事件发生时,从同一元素读取相关状态。

recording_ready

当此事件发生时,从同一元素读取相关状态。

recording_cancelled

当此事件发生时,从同一元素读取相关状态。

recorder_error

当此事件发生时,从同一元素读取相关状态。

local_saved

当此事件发生时,从同一元素读取相关状态。

local_restored

当此事件发生时,从同一元素读取相关状态。

local_deleted

当此事件发生时,从同一元素读取相关状态。

upload_succeeded

当此事件发生时,从同一元素读取相关状态。

upload_failed

当此事件发生时,从同一元素读取相关状态。

upload_cancelled

当此事件发生时,从同一元素读取相关状态。

preview_ready

当此事件发生时,从同一元素读取相关状态。

preview_error

当此事件发生时,从同一元素读取相关状态。

开发者常问问题

本地保存会上传录音吗?

否。Save locally 保持设备上的草稿。Upload to Bubble 是单独的明确公共操作。

订阅是如何运作的?

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.

相关指南

如需帮助,请告知我们您使用的插件和设备、尝试的操作以及发生的情况。请使用不含个人数据的示例。切勿分享您的密钥或私有文件。