如果您需要从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>