开始
Copy a setup prompt with the install steps and the full markdown guide for this plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-native-audio`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/native-audio/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
安装
安装npm install @capgo/capacitor-native-audionpx cap sync导入
导入import { NativeAudio } from '@capgo/capacitor-native-audio';API 介绍
API 介绍configure
配置配置音频播放器
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.configure({} as ConfigureOptions);preload
预加载加载音频文件
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.preload({} as PreloadOptions);playOnce
一次播放一次播放音频文件,自动清理
用于简单、单次播放的音频播放方法,例如通知声音、UI反馈或其他不需要手动管理状态的短音频片段。
功能特点:
- 无需手动预加载、播放、停止或卸载自动清理:
- 在播放完成后自动卸载资源可选文件删除
- __CAPGO_KEEP_0__: 可以删除本地文件后播放(适用于临时文件)
- Returns assetId: 可以在需要时仍然控制播放(暂停,停止等)
Use Cases:
- 通知声音
- UI 声音效果(按钮点击,警告)
- 只播放一次的短音频
- 需要清理的临时音频文件
与普通play() 的比较:
play(): 需要手动预加载,播放和卸载步骤playOnce(): 使用单个调用自动处理所有内容
import { NativeAudio } from '@capgo/capacitor-native-audio';
// Simple one-shot playbackawait NativeAudio.playOnce({ assetPath: 'audio/notification.mp3' });
// Play and delete the file after completionawait NativeAudio.playOnce({ assetPath: 'file:///path/to/temp/audio.mp3', isUrl: true, deleteAfterPlay: true});
// Get the assetId to control playbackconst { assetId } = await NativeAudio.playOnce({ assetPath: 'audio/long-track.mp3', autoPlay: true});// Later, you can stop it manually if neededawait NativeAudio.stop({ assetId });isPreloaded
Section titled “isPreloaded”检查音频文件是否预加载
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.isPreloaded({} as PreloadOptions);播放音频文件
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.play({} as AssetPlayOptions);暂停音频文件
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.pause({} as AssetPauseOptions);resume
Section titled “resume”恢复音频文件
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.resume({} as AssetResumeOptions);loop
循环停止音频文件
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.loop({} as Assets);stop
停止停止音频文件
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.stop({} as AssetStopOptions);unload
卸载卸载音频文件
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.unload({} as Assets);setVolume
设置音频文件的音量复制到剪贴板
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.setVolume({} as AssetVolume);setRate
Section titled “setRate”设置音频文件的速率
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.setRate({} as AssetRate);setCurrentTime
Section titled “setCurrentTime”设置音频文件的当前时间
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.setCurrentTime({} as AssetSetTime);getCurrentTime
Section titled “getCurrentTime”获取音频文件的当前时间
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.getCurrentTime({} as Assets);getDuration
Section titled “getDuration”获取音频文件的时长(秒)
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.getDuration({} as Assets);isPlaying
Section titled “isPlaying”检查是否正在播放音频文件
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.isPlaying({} as Assets);clearCache
Section titled “clearCache”清除远程音频文件的音频缓存
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.clearCache();setDebugMode
Section titled “setDebugMode”设置调试模式日志
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.setDebugMode({} as { enabled: boolean });deinitPlugin
Section titled “deinitPlugin”注销插件并恢复原始音频会话设置 此方法停止所有正在播放的音频并恢复插件所做的音频会话更改 在需要确保与其他音频插件兼容时使用
import { NativeAudio } from '@capgo/capacitor-native-audio';
await NativeAudio.deinitPlugin();类型参考
类型参考部分ConfigureOptions
配置选项部分export interface ConfigureOptions { /** * focus the audio with Audio Focus */ focus?: boolean; /** * Play the audio in the background */ background?: boolean; /** * Ignore silent mode, works only on iOS setting this will nuke other audio apps */ ignoreSilent?: boolean; /** * Show audio playback in the notification center (iOS and Android) * When enabled, displays audio metadata (title, artist, album, artwork) in the system notification * and Control Center (iOS) or lock screen. * * **Important iOS Behavior:** * Enabling this option changes the audio session category to `.playback` with `.default` mode, * which means your app's audio will **interrupt** other apps' audio (like background music from * Spotify, Apple Music, etc.) instead of mixing with it. This is required for the Now Playing * info to appear in Control Center and on the lock screen. * * **Trade-offs:** * - `showNotification: true` → Shows Now Playing controls, but interrupts other audio * - `showNotification: false` → Audio mixes with other apps, but no Now Playing controls * * Use this when your app is the primary audio source (music players, podcast apps, etc.). * Disable this for secondary audio like sound effects or notification sounds where mixing * with background music is preferred. * * @see https://github.com/Cap-go/capacitor-native-audio/issues/202 */ showNotification?: boolean; /** * Enable background audio playback (Android only) * * When enabled, audio will continue playing when the app is backgrounded or the screen is locked. * The plugin will skip the automatic pause/resume logic that normally occurs when the app * enters the background or returns to the foreground. * * **Important Android Requirements:** * To use background playback on Android, your app must: * 1. Declare the required permissions in `AndroidManifest.xml`: * - `<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />` * - `<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />` * - `<uses-permission android:name="android.permission.WAKE_LOCK" />` * 2. Start a Foreground Service with a media-style notification before backgrounding * (the plugin does not automatically create or manage the foreground service) * 3. Use `showNotification: true` to display playback controls in the notification * * **Usage Example:** * ```typescript * await NativeAudio.configure({ * backgroundPlayback: true, * showNotification: true * }); * // Start your foreground service here * // Then preload and play audio as normal * ``` * * @default false * @platform Android * @since 8.2.0 */ backgroundPlayback?: boolean;}PreloadOptions
预加载选项部分export interface PreloadOptions { /** * Path to the audio file, relative path of the file, absolute url (file://) or remote url (https://) * Supported formats: * - MP3, WAV (all platforms) * - M3U8/HLS streams (iOS and Android) */ assetPath: string; /** * Asset Id, unique identifier of the file */ assetId: string; /** * Volume of the audio, between 0.1 and 1.0 */ volume?: number; /** * Audio channel number, default is 1 */ audioChannelNum?: number; /** * Is the audio file a URL, pass true if assetPath is a `file://` url * or a streaming URL (m3u8) */ isUrl?: boolean; /** * Metadata to display in the notification center when audio is playing. * Only used when `showNotification: true` is set in `configure()`. * * See {@link ConfigureOptions.showNotification} for important details about * how this affects audio mixing behavior on iOS. * * @see NotificationMetadata */ notificationMetadata?: NotificationMetadata; /** * Custom HTTP headers to include when fetching remote audio files. * Only used when isUrl is true and assetPath is a remote URL (http/https). * Example: { 'x-api-key': 'abc123', 'Authorization': 'Bearer token' } * * @since 7.10.0 */ headers?: Record<string, string>;}PlayOnceOptions
一次性播放选项部分export interface PlayOnceOptions { /** * Path to the audio file, relative path of the file, absolute url (file://) or remote url (https://) * Supported formats: * - MP3, WAV (all platforms) * - M3U8/HLS streams (iOS and Android) */ assetPath: string; /** * Volume of the audio, between 0.1 and 1.0 * @default 1.0 */ volume?: number; /** * Is the audio file a URL, pass true if assetPath is a `file://` url * or a streaming URL (m3u8) * @default false */ isUrl?: boolean; /** * Automatically start playback after loading * @default true */ autoPlay?: boolean; /** * Delete the audio file from disk after playback completes * Only works for local files (file:// URLs), ignored for remote URLs * @default false * @since 7.11.0 */ deleteAfterPlay?: boolean; /** * Metadata to display in the notification center when audio is playing. * Only used when `showNotification: true` is set in `configure()`. * * See {@link ConfigureOptions.showNotification} for important details about * how this affects audio mixing behavior on iOS. * * @see NotificationMetadata * @since 7.10.0 */ notificationMetadata?: NotificationMetadata; /** * Custom HTTP headers to include when fetching remote audio files. * Only used when isUrl is true and assetPath is a remote URL (http/https). * Example: { 'x-api-key': 'abc123', 'Authorization': 'Bearer token' } * * @since 7.10.0 */ headers?: Record<string, string>;}PlayOnceResult
一次性播放结果部分export interface PlayOnceResult { /** * The internally generated asset ID for this playback * Can be used to control playback (pause, stop, etc.) before completion */ assetId: string;}AssetPlayOptions
资源播放选项部分export interface AssetPlayOptions { /** * Asset Id, unique identifier of the file */ assetId: string; /** * Time to start playing the audio, in seconds */ time?: number; /** * Delay to start playing the audio, in seconds */ delay?: number;
/** * Volume of the audio, between 0.1 and 1.0 */ volume?: number;
/** * Whether to fade in the audio */ fadeIn?: boolean;
/** * Whether to fade out the audio */ fadeOut?: boolean;
/** * Fade in duration in seconds. * Only used if fadeIn is true. * Default is 1s. */ fadeInDuration?: number;
/** * Fade out duration in seconds. * Only used if fadeOut is true. * Default is 1s. */ fadeOutDuration?: number;
/** * Time in seconds from the start of the audio to start fading out. * Only used if fadeOut is true. * Default is fadeOutDuration before end of audio. */ fadeOutStartTime?: number;}AssetPauseOptions
资产暂停选项export interface AssetPauseOptions { /** * Asset Id, unique identifier of the file */ assetId: string;
/** * Whether to fade out the audio before pausing */ fadeOut?: boolean;
/** * Fade out duration in seconds. * Default is 1s. */ fadeOutDuration?: number;}AssetResumeOptions
资产恢复选项export interface AssetResumeOptions { /** * Asset Id, unique identifier of the file */ assetId: string;
/** * Whether to fade in the audio during resume */ fadeIn?: boolean;
/** * Fade in duration in seconds. * Default is 1s. */ fadeInDuration?: number;}Assets
资产export interface Assets { /** * Asset Id, unique identifier of the file */ assetId: string;}AssetStopOptions
资产停止选项export interface AssetStopOptions { /** * Asset Id, unique identifier of the file */ assetId: string;
/** * Whether to fade out the audio before stopping */ fadeOut?: boolean;
/** * Fade out duration in seconds. * Default is 1s. */ fadeOutDuration?: number;}AssetVolume
资产卷export interface AssetVolume { /** * Asset Id, unique identifier of the file */ assetId: string; /** * Volume of the audio, between 0.1 and 1.0 */ volume: number; /** * Time over which to fade to the target volume, in seconds. Default is 0s (immediate). */ duration?: number;}AssetRate
资产速率export interface AssetRate { /** * Asset Id, unique identifier of the file */ assetId: string; /** * Rate of the audio, between 0.1 and 1.0 */ rate: number;}AssetSetTime
Section titled “AssetSetTime”export interface AssetSetTime { /** * Asset Id, unique identifier of the file */ assetId: string; /** * Time to set the audio, in seconds */ time: number;}真实数据来源
Section titled “真实数据来源”本页面由插件生成 src/definitions.ts. 当公共 API 上游更改时,请重新运行同步。
从 Getting Started 开始
Section titled “从 Getting Started 开始”如果您正在使用 Getting Started 来规划原生媒体和界面行为,请将其连接到 使用 @capgo/capacitor-native-audio 为使用 @capgo/capacitor-native-audio 的原生能力 使用 @capgo/capacitor-live-activities 为使用 @capgo/capacitor-live-activities 的原生能力 @capgo/capacitor-live-activities 为 @capgo/capacitor-live-activities 的实现细节 使用 @capgo/capacitor-video-player 为使用 @capgo/capacitor-video-player 的原生能力 @capgo/capacitor-video-player 为 @capgo/capacitor-video-player 的实现细节