我目前正在努力在应用程序中启用推送通知。我的问题是,我想向所有用户(属于某个组的成员)发送通知,并且我不太了解此用例的最佳做法。
这是因为既有“主题”又有“设备组”,但是从我的发现中,主题更像是订阅应用程序的新闻部分,设备组主要用于具有多个主题的用户与他/她连接的设备。
我想要的是向用户列表发送一条消息,但是我并不想在数据库中为每个组创建一个主题,并且我不想为每个用户都拨打FCM小组成员。我该怎么办?
答案 0 :(得分:1)
依赖性
<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";
答案 1 :(得分:-1)
我在FCM docs找到了一个很好的解决方案,在这里我不必使用“ to”标头参数,而只需要使用“ registration_ids”参数即可将多个标记解析为一个数组。