跳转到主要内容
自定义声音是为您的应用提供更独特、品牌化体验的方式。您可以为发送的每个通知添加自定义声音,或者只为某些类型的通知添加声音。例如,像”Jewel Breaker”这样的游戏可能希望在收到通知时总是播放类似珠宝的声音。同时,社交网络可能希望只有在用户收到来自其他用户的消息时才播放声音,以区别于更通用的系统通知。
仅适用于移动应用。网页推送不支持自定义声音。

设置

创建声音文件

确保根据以下规则创建声音文件。如果设备找不到相关文件,或者文件不是支持的格式,它将回退到默认系统通知声音。
保持声音文件名小写,因为某些平台忽略声音文件的大写字母。使用 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。
  • iOS
  • Android、Huawei 和 Amazon
根据您的 SDK,将声音文件添加到 Xcode 项目中的适当位置。
SDKFolder
iOS Native将文件添加到 Xcode 项目根目录。添加文件时请确保选择 Add to targets,以便它们自动添加到包资源中。
Cordova, Ionic将文件添加到 Xcode 项目中的 Resources 目录,位于 <project-root>/platforms/ios/project-name.xcodeproj
Unity在 Unity 项目中的任何位置添加声音文件,构建项目,然后将这些声音文件移动到 Xcode 项目根目录。

发送通知

  • iOS
  • Android、Huawei 和 Amazon
  • REST API
引用声音资源时添加文件扩展名。例如,explode_sound.wav。在发送推送消息时在仪表板中设置,或使用创建通知 API 的 ios_sound 属性。如需无声音,请在 声音 字段中传入 nil
如果您最近刚向应用添加了声音资源,您可能希望等待几天后再发送使用该声音的通知。这是因为大多数用户更新到包含您新声音资源的最新版本可能需要很多天甚至几周的时间。如果用户使用的是不包含声音资源的旧版本应用,并收到引用该声音的通知,他们将只听到默认的系统通知声音。

常见问题

我可以设置默认声音吗?

使用引用声音和/或 Android 通知渠道的模板

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

声音可能不播放的几个原因:
  • 声音文件扩展名不正确
  • 声音文件未以支持的格式编码
  • 声音文件位于错误的位置
  • 声音文件过长
目前 OneSignal 不记录资源错误问题,我们正在努力将此功能添加到您的日志中。 iOS - 有关如何编码文件和测试文件的提示,请参阅 Apple 的文档 Android - 通过提取 APK 并确保声音文件位于 res/raw/ 中来确保它已构建到您的 APK 中。 如果启用了资源压缩,您可以通过在 res/raw/ 中创建 keep.xml 文件来保护声音文件不被删除,代码如下:
xml
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@raw/sound_file"/>

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

请确保您仔细遵循了设置说明,并且声音文件位于 SDK 的正确位置。

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

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