问题描述
我正在尝试使用 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 (将#修改为@)