2017-10-22 2 views
0

Problem So senden Sie Geburtstagsbenachrichtigungen mit FireBaseCloudMessaging.Unabe zum Senden einer Benachrichtigung mit FirebaseCloudMessaging

Lösung

ich den folgenden Code implementiert haben, indem Probe Beispiel sucht aber Ich habe Schwierigkeiten beim Benachrichtigung an einen Benutzer oder eine Gruppe von Benutzern in Senden.

Kann mir jemand sagen, wie man eine Benachrichtigung an einen Benutzer sendet?

ich nur an einem Schritt stecke

Unten ist der Code

@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); 
    } 
} 

Antwort

1

Ich bin nicht sicher, was genau Sie tun Sie, ich nehme an, Sie versuchen Downstream-Nachrichten senden Verwenden des Admin SDK, mit dem ich keine Erfahrung habe, aber ich habe Erfahrung mit den HTTP- und XMPP-APIs.

Aufgrund meiner Erfahrung, sollten Sie die „Token-ID“ der Benutzer hinzufügen, um die Nachrichten senden wollen, ich meine, sollte Ihr Code so etwas wie:

for (User user : users) { 
     registrationIds.add(token_id_for_user); 
    } 

Das Token-ID ist etwas, das die Client-Anwendungen kennen (die Android- oder IOS-Anwendung), können Sie Informationen hier "https://firebase.google.com/docs/cloud-messaging/android/client" darüber lesen, wie die Anwendung Informationen über ihre aktuelle Token-ID erhält.

Grundsätzlich registriert die mobile Anwendung eine Klasse, die "FirebaseInstanceIdService" erweitert, und die FCM-API benachrichtigt die Anwendung mit dem Token-Wert über die Methode "onTokenRefresh". Sie können diese Werte verwenden, um die Nachrichten zu senden.

In meinem Fall senden die Anwendungen eine "Register" -Nachricht an den Server, damit die Serveranwendung die Token-IDs kennt.

Verwandte Themen