使用Firebase云消息(FCM)的本地通知
#网络开发人员 #java #firebase #notifications

如果您需要从Java服务器端应用程序将局部推送通知发送到具有Firebase Cloud Messaging(FCM)的移动设备,无论您的服务器端是Grails,Spring Boot还是其他任何基于Java的框架,则使用Firebase(Admin)SDK然后不再搜索,因为在官方文档中不太清楚。大多数示例都集中在其余或JS实现上。

在我的用例中,我想提醒用户订阅特定事件的特定主题。该应用程序的用户在全球范围内分布,因此根据用户的设备来定位消息很重要。从服务器端,我只想生成通知,并让Firebase的服务器处理对主题订阅的每个设备的通知,然后在Android和iOS设备上均设备自我显示一个位置和字幕的设备。

幸运的是,Firebase可以通过指定本地化的“键”,而不是指定标题和主体来做到这一点。然而,由于缺乏文档,因此找到一个例子是一场斗争。

我们要做的是为每个平台建立选项对象,即一个用于Android,一个用于Apple设备,然后在嵌套构建器中深处,我们最终可以设置局部键。然后可以从移动应用程序本身中的资源中解释这些,并在应用程序在前景时以及在后台时都会显示给用户。

因此,不用进一步的ADO,让我们看一下代码:

注意:我正在省略应用程序代码的其余部分,假设您已经知道如何设置firebase等,只需要查看如何生成通知。

void sendLocalisedNotification(String topic, String titleKey, String bodyKey) {
        // Set localisation key for Android
        AndroidConfig androidConfig = AndroidConfig.builder()
            .setNotification(
                AndroidNotification.builder()
                    .setTitleLocalizationKey(titleKey)
                    .setBodyLocalizationKey(bodyKey)
                    .build()
            ).build()

        // Set localisation key for Apple devices
        ApnsConfig apnsConfig = ApnsConfig.builder()
            .setAps(Aps.builder()
                .setAlert(ApsAlert.builder()
                    .setTitleLocalizationKey(titleKey)
                    .setSubtitleLocalizationKey(bodyKey)
                    .build()
                ).build()
            ).build()

        Message message = Message.builder()
            .setTopic(topic)
            .setAndroidConfig(androidConfig)
            .setApnsConfig(apnsConfig)
            .build();

        // And then send the message to the devices subscribed to the provided topic.
        try {
            String response = FirebaseMessaging.getInstance().send(message);

            // Response is a message ID string.
            log.debug("Firebase message $topic sent: " + response);
        } catch (Exception ex) {
            log.warn("Firebase message $topic failed: " + ex.message);
        }
    }

所以这就是要点,可以用我们要发布的主题来调用此方法,标题密钥和主体密钥。

我希望这有助于节省某人使用FCM SDK在Java环境下完成本地化消息的时间。

dave / Tucanoo Solutions < / p>