使用 GCM 的 iOS 自定义推送通知声音

Posted

技术标签:

【中文标题】使用 GCM 的 iOS 自定义推送通知声音【英文标题】:iOS custom push notification sounds using GCM 【发布时间】:2015-11-16 08:32:49 【问题描述】:

我正在尝试在我的 ios 应用收到推送通知时播放自定义声音。我在我的服务器上使用 GCM 推送到 android 和 Apple 设备。

默认情况下,我在推送通知负载中发送以下内容: “声音”:“默认”。这没有问题,100%。

一旦我将其更改为:“sound”:“sound.wav”,我就不再在调试器的有效负载中收到“sound”标签,并且当设备接收到有效负载时自然没有声音播放。

显然我已将 sound.wav 添加到我的包中并在包资源中检查了它。

谁能解释一下这个问题?

【问题讨论】:

【参考方案1】:

很少有事情会导致这种情况。

    声音文件“sound.wav”应为第二长且大小有限(以 KB 为单位)。 确保你的有效载荷是这样的:

  "title": "Some title",
  "data": [
    
      "version": "1.0"
    
  ],
  "aps": 
    "badge": 1,
    "sound": "soundfilenameinbundle.wav",
    "alert": "Some Alert to Show"
  

请确保“声音”标签进入“aps”。

    如您所说,您已经添加了声音文件,您是否也可以检查它是否已添加到所需的目标中。

    有时大型有效负载也会导致此问题。尝试通过删除一些用于测试和检查的数据来减小有效负载大小

    正如您所说,您在有效负载中看不到“声音”标签。我怀疑有效载荷本身的问题。可以试试改文件名吗?

还可以在 iOS 7/8/9 上尝试检查问题是否与操作系统无关。

我希望这会有所帮助。

【讨论】:

【参考方案2】:

谢谢苏海尔,

问题出在 Google Cloud Messaging 上。它们只支持声音标签的“默认”值。因此,每当我将其更改为 GCM 服务器根本不发送声音标签时。

希望他们尽快修复它...

这里的详细信息: https://developers.google.com/cloud-messaging/http-server-ref

【讨论】:

现在好像支持了developers.google.com/cloud-messaging/…

以上是关于使用 GCM 的 iOS 自定义推送通知声音的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android + GCM 中获得带有声音 + 自定义应用程序图标的推送通知

IOS推送通知自定义声音不起作用

iOS推送通知自定义声音

带有自定义声音的推送通知未在 iOS 中显示

带有 GCM 的 iOS 推送通知

自定义声音不播放推送通知