我目前正在应用程序中启用推送通知。我的问题是,我想向属于某个组的所有用户发送通知,而我不太知道这个用例的最佳实践。
这是因为既有"主题"也有"设备组",但据我所知,主题更像是订阅应用程序的新闻部分,设备组主要用于连接了多个设备的用户。
我想要的是向用户列表发送消息,但我不一定要为数据库中的每个组创建一个主题,也不想为组中的每个成员都调用FCM。我该怎么做?
依赖
<dependency>
<groupId>com.google.gcm</groupId>
<artifactId>gcm-server</artifactId>
<version>1.0.0</version>
</dependency>
在pom.xml 中添加依赖项
HttpPost post = new HttpPost("https://fcm.googleapis.com/fcm/send");
post.setHeader("Content-type", "application/json");
post.setHeader("Authorization", "key="+<Your firebase application key>);
JSONObject message = new JSONObject();
List<FirebaseIOSToken> tokens; new Arraylist(); // get device tokens from database
if(tokens!=null) {
for (FirebaseIOSToken token : tokens) {
try {
message.put("to",token.getDevicetoken());
} catch (JSONException e) {
e.printStackTrace();
}
message.put("priority", "High");
JSONObject notification = new JSONObject();
notification.put("title", "Test Notification");
notification.put("body", "Hello World");
notification.put("data", "Data");
notification.put("id", "notification id");
message.put("notification", notification);
post.setEntity(new StringEntity(message.toString(), "UTF-8"));
HttpResponse response = client.execute(post);
System.out.println(response);
System.out.println(message);
}
}
else
{
System.out.println("Token Not Fonund");
}
return "Sent";
我在FCM文档中找到了一个很好的解决方案,在这个解决方案中,我不需要使用"to"头参数,只需要使用"registration_ids"参数,在这个参数中,我可以将多个令牌解析为一个数组。