Unabe使用FirebaseCloudMessaging发送通知

时间:2017-10-22 18:41:56

标签: java firebase firebase-cloud-messaging

问题 如何使用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);
    }
}

1 个答案:

答案 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。