Firebase推送通知自定义声音

13

我目前正在开发一个应用程序,已经将Firebase推送通知服务集成到我的应用程序中。我可以在我的iPhone上接收通知,但我无法设置想要的自定义警报声音。

  • 我将声音添加为 .caf 格式
  • 我将声音添加到 Copy Bundle Resources

使用print (userInfo),我已经收集了来自Firebase的这些数据。

aps: {
alert =     {
    body = MSG;
    title = Title;
};
sound = default;}, {...}, sound: alarm.caf

我知道问题出在哪里,但不知道如何修复它以便应用程序播放我的自定义通知声音。

Firebase notification console IMG


你已经得到了问题的答案。如果是,请在答案区更新它,其他人也可以从中受益。 - ChenSmile
我启用了声音(你在图像中已将其禁用),并将键“sound”设置为我的自定义声音文件名,但是userInfo [“aps”] [“sound”]仍然只是“default”。 - vikzilla
1
我正在从 FCM 接收通知。现在,我想实现这样的功能:当我从 FCM 收到通知时,应用程序应该播放一个声音文件,而不必触摸通知消息。你知道怎么做吗?didRecieveRemoteNotification 只有在用户点击通知时才会执行。但是我想播放一个像闹铃曲一样的声音文件。请指导我如何实现。 - Moxarth
3个回答

6

Firebase 的问题在于无法像自定义参数一样使用 声音参数。如果您像平常一样尝试这样做,您会发现该参数会出现在应用程序中而不是aps字典中,并且系统将无法识别它作为要播放的声音,即使声音文件已经在项目中。

唯一的解决方法是通过一些 API /服务器 向您发送 Firebase 通知。当服务器发送带有声音参数的通知时,它将位于aps字典中,应用程序在接收通知时会播放此声音。


1
不确定为什么你和@Mentos的回复被踩了;你们准确地描述了我也遇到的Firebase控制台消息问题。 - vikzilla
我正在从 FCM 接收通知。现在,我想实现这样的功能:当我从 FCM 收到通知时,应用程序应该播放一个声音文件,而不必触摸通知消息。你知道怎么做吗?didRecieveRemoteNotification 只有在用户点击通知时才会执行。但是我想播放一个像闹钟铃声一样的声音文件。请指导我如何实现。 - Moxarth
@Moxarth,你有解决问题的方案吗? - Midhun Narayan

1
在进行了大量的研究后,我并没有找到任何解决方案。在Firebase Messaging Docs下面的

Table 2a. iOS — keys for notification messages

中指出,Firebase确实允许将Sound键包含在有效载荷中,但正如didRecieveRemoteNotification打印的代码所示,
aps: {
alert =     {
    body = MSG;
    title = Title;
};
sound = default;}, {...}, sound: alarm.caf

Firebase没有在aps中包含声音键,因此应用程序无法调用声音键。
我为我的应用程序使用的解决方法是Easy APNs Provider,这是一个方便易用的开发应用程序,但一个主要问题是它没有自动注册和删除通知的功能。
最后,对于我的发布应用程序的推送通知,我选择了一个专用服务器,我从我的网站上运行它。

1
我正在从 FCM 接收通知。现在,我想实现这样的功能:当我从 FCM 收到通知时,应用程序应该播放一个声音文件,而无需触摸通知消息。你知道怎么做吗?didRecieveRemoteNotification 只有在用户点击通知时才会执行。但是我想播放一个像闹铃曲调的声音文件。请指导我如何实现。 - Moxarth

1
这是我所做的,已经过去五年了,但如果有人仍在寻找答案,以下是我的解决方法:
  1. 确保您已配置 Firebase Messaging 和接收通知。

  2. 将.caf(音频文件)添加到应用程序中。它必须在'Target' -> 'Build Phases'下可见,并处于'Copy Bundle Resources'之下。

enter image description here

  1. Delete the app from the device ( This is important )

  2. I use Postman as my server, so message format would be,

    { 
     "notification": {
     "title": "Hello",
     "sound":"small_message.caf",
     "body": "You have a new Job"
    },
    
    "to": "your device token"
    }
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接