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

时间:2018-07-07 09:18:29

标签: node.js swift firebase firebase-cloud-messaging

我正在编写一个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);
        });
    }) 

我试图在这方面寻找资源,但似乎有限。有谁知道这样做吗?

编辑(为了更清楚地说明用例):

在应用的设置页面中,当添加带有“我的公司”标签的新帖子时,用户可以设置推送通知的声音设置(defaultnone)所以: enter image description here

我的实现方式是对该company节点执行数据库触发。当有一个新帖子添加到该company节点时,它将向所有订阅该companyID的人发送推式通知。

但是,对于将companyID订阅为主题的每个人,在推送此通知时都希望听到声音,而其他人则可能希望保持沉默。这样,有没有一种方法可以根据用户的喜好改变声音参数?

1 个答案:

答案 0 :(得分:0)

sound参数的值应为应用程序中包含的声音文件的名称。有关有效负载参数的更多详细信息,请参见official documentation

  

设备收到通知时播放的声音。

     

声音文件可以位于客户端应用程序的主捆绑包中,也可以位于应用程序数据容器的Library / Sounds文件夹中。有关更多信息,请参见iOS Developer Library

不同的人将具有不同的声音设置,是否可以将推送通知设置发送到主题,但是根据用户的不同声音设置。

我不确定我是否能正确理解您的用例,但是如果您希望声音根据所发出消息的主题而有所不同,则必须从客户端应用程序方面进行处理-确定消息实际来自哪个主题。