@Override public void userStartedBroadcasting(User user, Stream stream) { List<User> friends = this.friendshipService.findAllFriendsOfUser(user.getId()); for (User userToNotify : friends) { if (userToNotify == null || userToNotify.getAccount() == null || !StringUtils.hasText(userToNotify.getAccount().getPushNotificationID())) { continue; } if (ObjectUtils.nullSafeEquals(user, userToNotify)) { // do not notify current user continue; } final ParseRequest request = new ParseRequest(); IOSNotification iosNotification = new IOSNotification(NotificationType.BROADCAST_STARTED); iosNotification.setUserId(user.getId()); iosNotification.setUserName(user.getUserName()); iosNotification.setAlert(stream.getText()); iosNotification.setBadge("Increment"); iosNotification.setCategory("pass_watch"); final ParseQuery query = new ParseQuery(userToNotify.getAccount().getPushNotificationID()); request.setWhere(query); request.setData(iosNotification); try { HttpEntity<ParseRequest> requestEntity = new HttpEntity<ParseRequest>(request); ParseResponse response = this.parseRestTemplate.postForObject( PARSE_POST_PUSH_URL, requestEntity, ParseResponse.class); if (response.getError() != null) { System.out.println("PARSE PUSH NOTIFICATIOn ERROR: " + response.getError()); } } catch (Exception e) { log.error("Error while sending notification to Parse for iOS clients", e); } } }