【问题标题】:Change push notification sound更改推送通知声音
【发布时间】:2016-09-28 22:17:02
【问题描述】:

如何为推送通知使用自定义声音?

根据我的研究和阅读,我发现有效负载的文件名应该位于应用程序包或应用程序数据容器的 Library/Sounds 文件夹中。

如何把文件放在那里?

【问题讨论】:

  • FWIW 除 default 以外的任何声音(系统声音或您自己制作的声音)都被视为自定义声音,必须手动添加到 AppBundle。

标签: ios push-notification apple-push-notifications


【解决方案1】:

关注Apple documentation 为您的应用准备自定义声音文件。

对于 iOS 中的远程通知,您可以指定自定义声音 iOS 在为应用程序呈现本地或远程通知时播放。 声音文件可以在客户端应用程序的主包中,也可以在 应用数据容器的 Library/Sounds 文件夹。

自定义警报声音由 iOS 系统声音工具播放,因此 它们必须采用以下音频数据格式之一:

Linear PCM MA4 (IMA/ADPCM) µLaw aLaw 您可以将音频数据打包成 aiff、wav 或 caf 文件。然后,在 Xcode 中,将声音文件添加到您的 项目作为应用程序包的非本地化资源或 数据容器的 Library/Sounds 文件夹。

您可以使用 afconvert 工具来转换声音。例如,要 将 16 位线性 PCM 系统声音 Submarine.aiff 转换为 IMA4 CAF 文件中的音频,在终端应用程序中使用以下命令:

afconvert /System/Library/Sounds/Submarine.aiff ~/Desktop/sub.caf -d ima4 -f caff -v 您可以检查声音以确定其数据格式 在 QuickTime Player 中打开它并选择 Show Movie Inspector 从电影菜单中。

自定义声音在播放时必须少于 30 秒。如果自定义声音 超过该限制,则播放默认系统声音。

创建文件后,最简单的方法是将其放入应用程序包中。

当您发送推送通知时,只需在 JSON 有效负载中添加文件名。示例:

{
    "aps" : {
        "alert" : "You got your emails.",
        "badge" : 9,
        "sound" : "bingbong.aiff"
    }
}

就是这样!您不必在应用程序代码中做任何特别的事情。

编辑:
请将文件放在您的项目包中(即项目的层次结构中)并在拖放时选择Copy items if needed 选项。涂黑的部分有项目名称。

【讨论】:

  • 我该怎么做:
  • 将声音文件作为应用程序包的非本地化资源添加到您的项目或添加到数据容器的 Library/Sounds 文件夹中。
  • 只需将文件拖放到项目中即可。出现提示时,请确保您选择了 Copy items if needed 选项。
  • 我已将声音文件添加到捆绑资源:pasteboard.co/1kc85H2s.png 和服务器上的自定义声音名称。
  • 文件的格式化是否按照上面提到的Apple文档中指定的步骤完成?
【解决方案2】:

您的服务器管理员将在通知负载中向您发送声音名称。 有效载荷将如下所示

{
    aps =     
    {
        alert = "notification message";
        sound = "example.caf";
    };
}

您需要将声音文件添加到应用程序包。格式应该是 .caf 。要将声音文件转换为 .caf,请尝试在终端中运行此命令。

afconvert -f caff -d aacl@22050 -c 1 sound.aiff soundFileName.caf

文件保存在桌面上。现在将您的文件拖放到您的项目中。然后在目标中选择构建阶段。

检查您的声音文件是否存在于“复制捆绑资源”下。如果没有,请单击 + 按钮添加您的声音文件。有效载荷中的声音名称应与您的声音文件名相同。

现在您已准备好播放自定义通知声音。

【讨论】:

  • 你是对的! - “检查您的声音文件是否存在于‘复制捆绑资源’下。如果不存在,请单击 + 按钮添加声音文件”。谢谢
  • 我在 iOS 10.3 上进行了测试,声音可以与 aiff 一起使用,但没有将其转换为 caf。
  • @MansurovRuslan 太好了。这个答案在其他方面对您有用吗?
  • @Susil,非常感谢您的精彩回答,这减少了我的工作时间和计划
  • payload在哪里,如何创建payload?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多