统一Android的自定义FCM通知声音

时间:2019-12-18 10:30:50

标签: firebase unity3d firebase-cloud-messaging

在我的统一项目中,我想在收到Firebase云消息时播放自定义声音,而不是系统默认声音。
因此,在我按照其他答案回答后,我的信息看起来像是

{
    "to": "some_key",
    "notification": {
        "title": "Title",
        "android_channel_id": "2",
        "body": "Body",
        "sound": "custom_sound.wav"
    }
}

,然后将custom_sound.wav放在Asset/Plugins/Android/res/raw中。解压缩.apk时,我可以找到声音文件在正确的位置。

但是它会继续播放系统默认声音。即使在删除声场之后。我还有什么需要检查的吗?

1 个答案:

答案 0 :(得分:0)

第一:调试时的快速提示。如果选择“导出项目”,则可以使用Android Studio打开生成的Gradle项目: Build Settings window open with "Export Project" selected 有时候,您必须更新gradle包装器,但是它可以帮助您调试诸如“是我的声音文件是否在res / raw中”之类的事情,而无需解压缩APK并四处张望。

我认为您现在遇到的问题是,声音现在与NotificationChannels(从Android O开始)相关联,而不是与单个通知相关联,this StackOverflow post表示类似的问题。由于无法通过Unity SDK公开。

幸运的是,您可以使用Unity.Notifications.Android添加频道。

应该像创建一个新的一样简单 public AndroidNotificationChannel(string id, string title, string description, Importance importance) 将您的id设置为"2"(以匹配上面的示例通知。由于这是一个字符串,我建议给它起一个更好的名字:D)。

然后,您可以使用创建的通道作为参数调用RegisterNotificationChannel

例如,为了使您的通知正常运行,我相信您可以这样写:

var notificationChannel = new NotificationChannel("2", "Channel 2 (working title)", "This is the 2nd channel", Importance.Default);
AndroidNotificationCenter.RegisterNotificationChannel(notificationChannel);

让我知道这是否有帮助!

-帕特里克