【问题标题】:Flutter local notification custom sound doesn't work (path issue)Flutter 本地通知自定义声音不起作用(路径问题)
【发布时间】:2020-05-04 03:18:38
【问题描述】:

我想在 Android 端为我的本地通知设置自定义声音。 我在 Android 项目的 res 文件夹中创建了一个 raw 文件夹。 这是我将 alarm.mp3 文件路径放在通知中的代码的一部分。
var androidPlatformChannelSpecifics =
                    new AndroidNotificationDetails(
                        "$id",
                        not.columnValue + not.deveui,
                        not.columnValue + not.deveui,
                        sound: "@raw/alarm",
                        importance: Importance.Max,
                        priority: Priority.High);

实际上它仍然使用默认系统声音。

如果我输入@raw/alarm.mp3,则会出现以下异常:Unhandled Exception: PlatformException(INVALID_SOUND, The resource %s could not be found. Please make sure it has been added as a raw resource to your Android head project., null)

注意:声音:RawResourceAndroidNotificationSound('alarm'),已解决

【问题讨论】:

    标签: flutter notifications


    【解决方案1】:

    要完成以前的有用帮助,如果您的应用是在您修改声音之前创建的,请不要忘记更改您的频道 ID,我不知道为什么,但是对于现有频道,声音不会被考虑在内(几个小时为此迷路了,希望对其他人有所帮助)

    【讨论】:

      【解决方案2】:

      感谢sunnyque 提供了很棒的解决方案,但这是我将它实现到我的fcm 中的方式,

      首先:你必须设置 "channel_id","playSound: true", “声音:RawResourceAndroidNotificationSound('yourmp3files.mp3')”: adding specific channel on flutter_local_notification

      Future displayNotification(Map<String, dynamic> message) async {
          var androidPlatformChannelSpecifics = new AndroidNotificationDetails(
            'you_can_name_it_whatever',
            'flutterfcm',
            'flutterfcm',
            playSound: true,
            sound: RawResourceAndroidNotificationSound('yourmp3files.mp3'),
            importance: Importance.max,
            priority: Priority.high,
          );
      

      然后,将 mp3 文件添加到 res/raw/yourmp3files.mp3 adding mp3

      之后,您需要在 res/raw/keep.xml 中添加 keep.xml 以将 yourmp3files.mp3 包含到 build keep.xml

      <?xml version="1.0" encoding="utf-8"?>
      <resources xmlns:tools="http://schemas.android.com/tools"
          tools:keep="@raw/yourmp3files"
          />
      

      你完成了,现在你可以在你的应用中测试 fcm 自定义声音了,做

      卸载上次构建

      颤抖干净

      颤振酒吧获取

      颤振构建apk

      flutter 运行 --release

      tada ?,告诉我它是否有效,呵呵

      我希望这对将来的某人有所帮助?

      【讨论】:

      • 删除 RawResourceAndroidNotificationSound 中的“.mp3”解决了我的问题
      • 我遇到了同样的错误,通过添加keep.xml得到了修复,但是通知仍然没有声音(虽然振动正在工作)。可能是什么原因?
      • Flutter 可以播放这个目录下的声音文件吗?
      【解决方案3】:

      你不需要把'@raw/'放到路径中,插件已经从中获取声音(根据插件源:FlutterLocalNotificationsPlugin.java 函数retrieveSoundResourceUri)所以删除它。

      还要检查声音文件是否包含在构建中,例如。通过在具有以下内容的原始文件夹中创建keep.xml

      <?xml version="1.0" encoding="utf-8"?>
      <resources xmlns:tools="http://schemas.android.com/tools"
          tools:keep="@drawable/*,@raw/alarm" />
      

      这可能会有所帮助

      【讨论】:

      • 您关于包含 keep.xml 的提示刚刚解决了我一直面临的所有问题。谢谢!
      • @Synnyque 是否可以使用音频播放器播放此目录中的声音文件?
      猜你喜欢
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多