我以前习惯将自定义声音用于保存在res/raw
中的通知。不允许其他应用程序使用此声音。
使用Android 8通知通道,我可以通过将用户从系统通知首选项重定向到应用程序首选项来解决,我可以在其中显示其他Android提供的声音中的自定义声音。并且当用户更改通知声音时,将创建新的通知通道。
现在,我进入了一个新的高度,我需要在后台运行应用程序时为Firebase云消息传递提供这种声音。
更新:我需要依靠高优先级消息和通知托盘处理程序,因此(可能)数据消息对我来说不是解决方案。
长话短说::我可以仅仅通过系统应用设置为我的应用提供自定义声音(包括Firebase推送通知)吗?
答案 0 :(得分:0)
首先,您需要发送有效载荷通知,以便Android自身不会自动显示它们。阅读this great post以获得更多信息。
设置自定义通知接收后,只需向其应用声音即可。
为此,您需要像这样从res/raw/
获取文件:
notification.sound = Uri.parse("android.resource://com.my.package/" + R.raw.notification_sound);
其中com.my.package需要用您的包名称替换。如果这不适合您,请尝试设置通知默认值:
notification.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE;