跳转到主要内容
自定义声音让您的应用提供更独特、品牌化的体验。您可以为发送的每个通知添加自定义声音,或只为某些类型的通知添加声音。例如,社交应用可能只为私信播放独特声音,以区别于系统通知。
仅适用于移动应用。网页推送不支持自定义声音。

设置

创建声音文件

按照以下平台要求创建声音文件。如果设备找不到指定文件或文件格式不受支持,将回退到默认系统通知声音。
保持声音文件名小写,因为某些平台忽略声音文件的大写字母。使用 awesomesound.wavawesome_sound.wav 而不是 AwesomeSound.wav
平台扩展名注释
iOS.wav .aiff .caf声音必须编码为 Linear PCM、MA4 (IMA/ADPCM)、µLaw 或 aLaw。必须少于 30 秒。
Android.wav .mp3 .ogg建议长度少于 30 秒。保持文件大小较小,大文件可能在某些设备上无法播放。
Huawei.wav .mp3 .wma建议长度少于 30 秒。保持文件大小较小,大文件可能在某些设备上无法播放。
Amazon.wav .mp3 .ogg建议长度少于 30 秒。保持文件大小较小,大文件可能在某些设备上无法播放。

将声音文件添加到您的应用

声音文件必须作为资源包含在应用程序中。不支持外部 URL。
根据您的 SDK,将声音文件添加到 Xcode 项目中的适当位置。
SDKFolder
iOS Native将文件添加到 Xcode 项目根目录。添加文件时请确保选择 Add to targets,以便它们自动添加到包资源中。
Cordova, Ionic将文件添加到 Xcode 项目中的 Resources 目录,位于 <project-root>/platforms/ios/project-name.xcodeproj
Unity在 Unity 项目中的任何位置添加声音文件,构建项目,然后将这些声音文件移动到 Xcode 项目根目录。

发送通知

引用声音资源时请包含文件扩展名(例如 explode_sound.wav)。在发送推送消息时在仪表板中设置声音,或使用创建通知 API 的 ios_sound 属性。如需无声音,请在 声音 字段中传入 nil
OneSignal dashboard push composer showing the iOS Sound field
如果您最近向应用添加了声音资源,请考虑等待几天后再发送使用该声音的通知。大多数用户更新到包含新声音文件的最新版本可能需要数天或数周时间。如果用户使用的是不包含声音资源的旧版本应用,并收到引用该声音的通知,他们将只听到默认的系统通知声音。

常见问题

我可以设置默认声音吗?

使用引用声音和/或 Android 通知渠道的模板。使用该模板发送的每条通知都会自动使用已配置的声音。

我可以向不同用户发送不同的通知声音吗?

ios_soundandroid_channel_id 参数是请求级别的——它们适用于该 API 调用的所有接收者。您无法在单个请求中为不同用户指定不同的声音。 要向不同用户发送不同声音,请使用扇出模式:为每个声音变体单独发出 API 调用,通过标签或分段定向用户。例如,将每个用户的首选声音存储在 preferred_sound标签中,然后每个声音值发送一个请求。
{
  "app_id": "YOUR_APP_ID",
  "contents": {"en": "You have a new message!"},
  "ios_sound": "chime.wav",
  "android_channel_id": "CHIME_CHANNEL_ID",
  "include_filters": [
    {"field": "tag", "key": "preferred_sound", "relation": "=", "value": "chime"}
  ]
}
每个请求只定向 preferred_sound 标签匹配的用户,因此每组用户听到各自的声音。根据需要添加任意数量的变体——每种声音一个 API 调用。

为什么我的通知没有播放自定义声音文件?

常见原因如下:
  • 声音文件扩展名不正确
  • 声音文件未以支持的格式编码
  • 声音文件在项目中的位置错误
  • 声音文件超过 30 秒
iOS — 请参阅 Apple 的文档获取编码和测试指南。 Android — 通过提取 APK 并确认声音文件存在于 res/raw/ 中来验证其是否已包含在 APK 中。 如果启用了资源压缩,请在 res/raw/ 中创建 keep.xml 来保护声音文件不被删除:
<resources xmlns:tools="http://schemas.android.com/tools"
  tools:keep="@raw/sound_file"/>

为什么我的通知播放的是默认声音文件?

请确保您遵循了设置说明,并且声音文件位于 SDK 的正确位置。仔细检查文件名大小写——某些平台忽略大写字母。

为什么播放的是错误的声音?

在 Android 上,当收到一定数量的通知未打开时,通知会被分组在一起。分组通知播放默认声音。您可以使用分组键为所有通知设置声音。

相关页面

通知类别

设置 Android 通知渠道以控制声音、振动和重要性。

模板

创建带有预定义声音的可重用通知模板。

创建通知 API

ios_sound、android_channel_id 和 adm_sound 参数的 API 参考。

通知图标

为您的移动应用自定义通知图标。