FCM MessagingOptions restrictedPackageName 实现

Posted

技术标签:

【中文标题】FCM MessagingOptions restrictedPackageName 实现【英文标题】:FCM MessagingOptions restrictedPackageName implementation 【发布时间】:2021-10-08 11:50:45 【问题描述】:

我们在一个 Firebase 项目容器中有 2 个 android 应用程序,第一个应用程序在 Cloud Function 上实现了 FCM,它运行良好,但第二个应用程序也会收到此通知,因此在消息传递选项中使用 restricted_package_name 就是我们的目的寻找。然而问题是,我们需要更新应用程序还是只更新 Cloud Function 中的功能?因此与过滤推送通知相关的所有内容。将由其 API 处理,我们只需要提供目标应用程序的包名称即可。

根据restrictedPackageName

的文档

注册令牌必须匹配的应用程序包名称才能接收消息。

我们也需要处理令牌吗?我们需要更新应用程序中的代码还是只在使用 NodeJs 的函数中添加选项?

    const options =  priority: 'high' ;

exports.announcement = functions.firestore.document("Announcement/doc_id").onCreate((added) => 

    const title = added.data().title;
    const description = added.data().description;
    const bigImage = added.data().bigImage;
    const link = added.data().link;
    const environment = added.data().environment;

    const payload = 
        data: 
            title: title,
            description: description,
            bigImage: bigImage,
            link: link,
            environment: environment,
        
    ;

    return admin.messaging().sendToTopic("Announcement", payload, options)
        .then(val => 
            console.log("Success!\n" + JSON.stringify(payload), val);
            return true;
        )
        .catch(error => 
            console.error("Failed to send notification.", error);
            return true;
        );

);

【问题讨论】:

能否请您提供您正在使用的云功能,如果可能,请提供您实现的部分代码? @RajeevTirumalasetty 已更新 【参考方案1】:

在 Firebase 方面,不建议将同一个项目用于 2 个不同的应用程序,this blog 中也提到了这一点。如果您想使用restricted_package_name,您需要更新代码,以便对象在通知中发送它。可以找小example here。

【讨论】:

@WytrzymałyWiktor 首先是美好的一天,问题是关于 Android 而不是 NodeJs 应用程序,因此示例与问题无关。其次,我从来没有在给定的博客上读过任何“不推荐”这个词,也没有在我读过的任何 Firebase 文章和 SO 问题中,我忘了提到这些应用程序是相同的,我们只想知道我们是否需要改变也只有 Cloud Functions 或应用程序代码。第三,您修改了完全不可读且可能导致更多混乱的问题。

以上是关于FCM MessagingOptions restrictedPackageName 实现的主要内容,如果未能解决你的问题,请参考以下文章

如何跟踪FCM推送通知发送表单服务器端或Rest客户端? [重复]

带有 Firebase (FCM) 推送通知的 Node js

使用 REST api 发送通知

Firebase 云消息传递 REST API Spring

聚类——FCM的matlab程序

FCM - 为啥在较新的 Firebase Admin SDK 中不再支持 FCM 直接通道?