微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自定义声音在后台模式下不适用于 Android

如何解决自定义声音在后台模式下不适用于 Android

我正在尝试使用 Ionic 5、Capacitor v3 和 @capacitor-community/fcm 插件 (https://github.com/capacitor-community/fcm) 获得自定义推送通知声音。它在所有模式(前台后台关闭)下都适用于 iOS,但仅当应用程序处于前台时才适用于 Android。当它处于后台模式(或关闭)时,它只播放认的通知声音。来自服务器的相同负载。声音都位于 res/raw 中(同样,当应用在前台时一切正常。

环顾四周,很明显这是由 Android 26+ 更改引起的,必须使用通知通道才能播放自定义声音。我试图通过遵循许多其他示例来做到这一点。但是,由于它们与此处使用 FCM 插件的 Capacitor 配置略有不同,因此我希望有人能更好地定义这一点。

我假设在检查权限并注册令牌后,我可以使用 FCM subscribeto() 函数

PushNotifications.requestPermissions().then((response) =>
  PushNotifications.register().then(() => {
    console.log("FCM - Registered for push");
    FCM.subscribeto({ topic: "notification05" })
      .then((r) => console.log("FCM - Subscribed to channel: " + JSON.stringify(r)))
      .catch((err) => console.log(err));
    })
);

但是...如何将特定的声音文件附加到主题/频道?还是需要用 PushNotifications.createChannel() 来完成? (如果是这样,如何?)

然后是 MainActivity.java 文件的问题。它是否需要比让@capacitor-community/fcm 正常工作所需的进一步修改? (我假设不是,因为这应该是这个插件的全部意义。)

最后是来自服务器的有效载荷的问题。添加了什么标签(以及在哪里)来触发通道并播放自定义声音?关于这一点似乎存在相互矛盾的指导(而且 Google 文档本身在这个问题上很糟糕而且沉不语)。我当前的有效负载(用于前台)是:

{
"to": "","notification": {
    "title": "Some title","body": "Some body","sound": "notification05.mp3","android_channel_id": "notification05"
  },"content_available": true,"priority": "high"
}

如果有人将自定义声音与此插件结合使用,请提供帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。