{
  "to": "XXXX",
  "notification": {
    "title": "ASAP Alert",
    "body": "Please open your app"
  },
  "data": {
    "screen": "/Nexpage1",
    "sound": "alarm",
    "click_action": "FLUTTER_NOTIFICATION_CLICK"
  }
}

上面是推送通知的有效负载.我把闹钟插进go 了.mp3文件里面的原始文件夹,但它仍然没有给我报警声,我已经try 报警.还有,json有什么问题吗?因为我的dart文件上的代码?

here's the mp3 file inside the raw file

推荐答案

this似乎应该在Android上自动管理(如果你没有使用notification builder),但是你也必须指定.mp3扩展名,并将其放在notification字段中,而不是data字段中.

"sound": "alarm.mp3"

iOS在引擎盖下的行为非常不同,但您也可以通过在通知负载中设置sound:字段来使用自定义声音.无论如何,.mp3不是有效的APN通知文件格式,您还需要指定文件扩展名.

"sound": "filename.caf"

关注Apple documentation,以便为您的应用程序伪造您的自定义声音文件.

mp3 is not a valid format

Preparing Custom Alert Sounds

本地和远程通知可以指定要发送的自定义alert 声音

  • Linear PCM

  • MA4 (IMA/ADPCM)

  • 一百

  • aLaw

将自定义声音文件放入app bundle

您可以使用afconvert工具转换声音.例如,要执行以下操作 将16位线性PCM系统声音Submarine.aiff转换为IMA4 要在CAF file中使用音频,请在终端应用程序中使用以下命令:

afconvert /System/Library/Sounds/Submarine.aiff ~/Desktop/sub.caf -d ima4 -f caff -v

要让exampol将mp3文件转换为caf文件,您可以键入终端:

afconvert -f caff -d LEI16 alarm.mp3 alarm.caf

阅读这doc篇文章,深入了解所有通用和特定通知有效载荷字段.

UPDATE个个

我已经测试了Android部分,我可以确认把你的.mp3文件放到res/raw/文件夹中,声音会按照文档和预期播放.

这是我的通知有效载荷:

{
 "to" : "my_device_token",
 "collapse_key" : "type_a",
 "priority" : "high",
 "notification" : {
     "body" : "Test Notification body for custom sound {{datestamp}}",
     "title": "Custom sound alert.mp3",
     "sound": "alert.mp3"
 }
}

enter image description here

在以这种方式将.mp3文件转换为.caf文件后,我还测试了iOS版本:

afconvert -f caff -d LEI16 alert.mp3 alert.caf

相同的json个有效载荷和不同的文件名可以工作:

{
 "to" : "my_device_token",
 "collapse_key" : "type_a",
 "priority" : "high",
 "notification" : {
     "body" : "Test Notification body for custom sound {{datestamp}}",
     "title": "Custom sound alert.mp3",
     "sound": "alert.caf"
 }
}

记住要将该文件添加到您的main bundle中.

enter image description here

如果应用程序被终止或在后台运行,这会起作用.

如果你想在应用程序处于前台时显示提醒和播放声音,你必须在onMessage事件上进行管理,就像有人已经告诉你here一样,或者你可以在这里使用platform-channel来构建自己的通知,在Android上是Notification.Builder,在iOS上是UNNotificationCenter(例如).

UPDATE个个

这个问题已经解决了.见官方 comments :

大家好?

作为我们路由图(#2582)的一部分,我们刚刚发运了一份完整的 旨在解决此问题和许多其他问题的Firebase_Messaging插件 问题.

如果可以,请try 一下开发版本(请参阅migration guide 用于升级和更改),如果您有任何反馈,请加入 在讨论here中.

考虑到返工的范围,我将继续并完成这项工作

谢谢大家,?

Dart相关问答推荐

聆听Firestore计数()

有什么区别!并且 ! 在 Dart 中?

Flutter 是否提供即时应用程序?

Flutter - MultiProvider 如何与相同类型的提供者一起工作?

I/flutter (22027):MissingPluginException(在通道 plugins.flutter.io/cloud_firestore 上找不到方法 DocumentReference#setData 的实现)

禁用 ListView 滚动

zsh:找不到命令:pub

如何防止意外发布私有 pub 包

需要一个SkDeletable类型的值,但得到一个Null类型的值

Dart JavaScript 与 jQuery 的互操作回调

如何使用文本小部件设置多行文本?

Dart VM 的性能与 Node.js 相比如何?

Flatter BLoC-如何将参数传递给事件?

如何使用flatter删除Firestore文档中的字段

是否有必要为Flatter安装Android Studio,或者可以用什么替代Android Studio?

全局减慢 Flutter 中的动画

如何在 showModalBottomSheet 中设置状态

Dart 库中part和part of背后的原因是什么?

如何在 Dart SDK 0.4+ 中使用 setInterval/setTimeout

如何在 Dart 中读取控制台输入/标准输入?