在我的应用程序中,当新的通知到来时,我会try 播放特定的声音.它在Android上运行得很好.但在iOS中,如果应用程序在后台,它就会起作用.如果应用程序被关闭,它将播放默认的通知声音.

Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  // If you're going to use other Firebase services in the background, such as Firestore,
  // make sure you call `initializeApp` before using other Firebase services.
  await Firebase.initializeApp();
  if(message.data['navigate_to']=='idea'){
    FlutterRingtonePlayer.play(fromAsset: "assets/alerts/trade.mp3",
      ios : IosSounds.electronic,
      asAlarm: true,);
  }
}

我正在用Ffltter_RingTone_Player播放音频. 还try 了Just_Audio、Assets_Audio_Player、AudioPlayers. 只有当应用程序在后台时,一切才能正常工作,而不是在被关闭时. (仅在iOS中)

推荐答案

通知声音在iOS和Android上的工作方式略有不同.在Android上,你可以自己播放声音,而在iOS上,这一功能受到操作系统的限制.

如果您想要提供与默认声音不同的声音,则必须在推送通知有效负载中指定,即在服务器端.有关如何在Firebase消息传递中指定此sound属性的示例可在this question中找到.

有关这些限制的更多详细信息,可以在Apple的UNNotificationSound文档中找到.

  • 声音文件必须已存在于设备上
  • 声音文件可以设置为最大.30秒长

Ios相关问答推荐

如何正确测试后台URLSessionDownloadTask?

Flutter WebRTC:GetUserMedia()不适用于Safari和IOS设备

在SwiftUI中使用系统图像和色调创建圆形按钮

由于已存在同名项目,因此无法将Mapbox.xcframework-ios.sign复制到Signature中

如何防止UITest套件与Fastlane一起执行?

如何在Combine发布者之间强制执行最小延迟

如何从单独的视图更改修饰符的值

在Xcode 15中为具有@Binding的视图创建SwiftUI #预览的方法

在自定义 ButtonStyle 中修改形状 colored颜色

更改订单时如何保存商品的位置?

如何仅更改一个视图的导航标题 colored颜色 ?

UIImageView 使用 CGAffineTransform 错误旋转

将视图(例如 Text())不透明度设置为 0 或将背景设置为 Color.clear 会导致它不被绘制

Flutter:无法构建 iOS 应用程序ARCHIVE FAILED,为设备归档时遇到错误

在 iOS 编程中使用 Storyboard 代替 xib 文件有什么好处?

导航控制器自定义过渡动画

在 iOS 8 中显示相机权限对话框

UIView 动画与 CALayers

interfaceOrientation在 iOS 8 中已弃用,如何更改此方法 Objective C

SwiftUI 应用生命周期 iOS14 AppDelegate 代码放哪里?