首页 文章

Firebase FCM:主题推送通知的不同声音设置

提问于
浏览
0

我正在编写一个iOS应用程序,允许人们为订阅特定主题的特定推送通知设置声音设置(默认声音或无声音) .

不同的人将有不同的声音设置,有没有办法将推送通知设置发送到主题,但具有不同的声音设置取决于用户 .

我有以下实现:

exports.pushNotifications = functions.database.ref('/companies/{companyID}/posts').onWrite((snap, context) => {
    const companyID = context.params.companyID
    const message = {
        "condition": `'allCompanies' in topics || '${companyID}' in topics`,

        "apns": {
            "headers": {
                "apns-priority": "5"
            },
            "payload": {
                "aps": {

                    "alert": {
                        "body": "New gossips"
                    },
                    "sound": "default", //Any ways to vary this?
                    "badge": 1
                }
            }
        }
    };

    return admin.messaging().send(message)
        .then((response) => {
            return console.log('PNForAllCompanies Successful: ', response);
        })
        .catch((error) => {
            return console.log('PNForAllCompanies Error: ', error);
        });
    })

我试图在这个领域寻找资源,但似乎有限 . 有没有人有任何想法这样做?

编辑(为了更清楚地描述用例):

在应用程序的设置页面中,当添加带有标签"My Company"的新帖子时,用户可以设置推送通知的声音设置( defaultnone ),如下所示:
enter image description here

我如何实现这个是为该 company 节点做一个数据库触发器 . 当有一个新帖子添加到该 company 节点时,它会向已经订阅该 companyID 作为主题的每个人发送推送通知 .

但是,对于已经订阅了 companyID 作为主题的每个人,可能希望在推送此通知时发出声音而其他人可能不想要保持沉默 . 有了这个,有没有办法根据用户的偏好改变声音参数?

1 回答

  • 0

    sound 参数的值应该是应用程序中包含的声音文件的名称 . 有关payload参数的更多详细信息,请参阅official documentation

    设备收到通知时播放的声音 . 声音文件可以位于客户端应用程序的主包中,也可以位于应用程序数据容器的Library / Sounds文件夹中 . 有关更多信息,请参阅iOS Developer Library .

    “不同的人会有不同的声音设置,有没有办法将推送通知设置发送到主题,但根据用户的不同声音设置 . ”

    我不确定我是否理解你的用例,但是如果你希望声音根据主题的不同而有所不同,你必须从客户端应用程序端处理 - 确定哪个主题它实际上来自的消息 .

相关问题