问题 如何使用FireBaseCloudMessaging发送生日通知。
解决方案
我通过查看示例示例实现了以下代码,但是我很难向用户或用户组发送通知。
有人可以指导我如何向用户发送通知吗?
我只是坚持一步
以下是代码
@RequestMapping(value = "/notification", method = RequestMethod.GET)
public void autoNotification() {
int pageSize=2000;
Page<User> users=null;
int page=0;
List<User> birthdays=null;
do {
users = userService.getAllUsers(new PageRequest(page,pageSize));
birthdays=new ArrayList();
LocalDate currentDate = new LocalDate();
for (User user : users) {
LocalDate dob=user.getDob();
System.out.println("Date of Birth is "+dob);
System.out.println("CurrentDate is "+currentDate.toString());
if(currentDate.equals(dob)){
System.out.println("Yes they match");
birthdays.add(user);
}
}
}while (users.hasNext());
System.out.println(birthdays);
System.out.println(birthdays.size());
fcmService.sendBirthDayNotificationToUser(birthdays);
}
}
public void sendBirthDayNotificationToUser(List<User> users) {
System.out.println("Sending Notification ");
List<String> registrationIds = new ArrayList<>();
for (User user : users) {
registrationIds.add();//What should be set here so that I can send to registered users.
}
Message message = new Message.Builder()
.addData("type", "Default")
.addData("title","Happy Birthday")
.addData("content","Happy Birthday to you")
.build();
sendNotification(registrationIds,message);
}
public void sendNotification(List<String> registrationIds,Message message)
{
Sender sender = new Sender(API_KEY);
try {
MulticastResult result = sender.send(message, registrationIds, 2);
} catch (IOException e) {
LOG.error("IOException", e);
}
}
答案 0 :(得分:1)
我不确定你到底在做什么,我假设你正在尝试使用Admin SDK发送下游消息,我没有经验,但我确实有使用HTTP和XMPP API的经验。
根据我的经验,您应该添加&#34;令牌ID&#34;你要发送消息的用户,我的意思是,你的代码应该是这样的:
for (User user : users) {
registrationIds.add(token_id_for_user);
}
令牌ID是客户端应用程序知道的(android或IOS应用程序),您可以在此处阅读信息&#34; https://firebase.google.com/docs/cloud-messaging/android/client&#34;关于应用程序如何接收有关其当前令牌ID的信息。
移动应用程序基本上会注册一个扩展&#34; FirebaseInstanceIdService&#34;并且FCM API将通过方法&#34; onTokenRefresh&#34;通过令牌值通知应用程序。您可以使用此值发送消息。
在我的情况下,应用程序发送&#34;寄存器&#34;消息到服务器,让服务器应用程序知道令牌ID。