WebService sample for Sending Token / Some String data to the server
public class FcmToken {
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
public class FcmToken {
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
public class FcmTokenReply {
private String content;
String registrationStatus;
int registrationStatusNumber;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getRegistrationStatus() {
return registrationStatus;
}
public void setRegistrationStatus(String registrationStatus) {
this.registrationStatus = registrationStatus;
}
public int getRegistrationNumber() {
return registrationStatusNumber;
}
public void setRegistrationStatusNumber(int registrationStatusNumber) {
this.registrationStatusNumber = registrationStatusNumber;
}
}
@RestController
public class FcmRegisterController {
@RequestMapping(method = RequestMethod.POST, value = "/register/token")
@ResponseBody
FcmTokenReply registerStudent(@RequestBody FcmToken fcmregdtoken) {
FcmTokenReply tokenreply = new FcmTokenReply();
//This operation we did so that we can get/fetch this using the get request
FCMGetToken.getInstance().add(fcmregdtoken);
//We are setting the below value just to reply a message back to the caller
tokenreply.setRegistrationStatusNumber(200);
tokenreply.setRegistrationStatus("Successful");
tokenreply.setContent(fcmregdtoken.getContent());
return tokenreply;
}
}
We test this using POST Man by calling the following URL
http://localhost:8080/register/token and passing the following in the body selecting the content type as application xml/JSON
{
"content":"dSSFOk:8OQmsO9W8cTxB3i6ymsjB9I5ngDzmstGsZv0lw6RbGf0tIMcD79nlEQG2hoWgxBqU5r-xK3_zTj7V38UF"
}
we get the response as successful
We will write another URL which will get the token which is registered using the POST URL
public class FCMGetToken {
private static FCMGetToken token = null;
private List<FcmToken> tokenRecords;
private String lastToken;
private FCMGetToken(){
tokenRecords = new ArrayList<FcmToken>();
}
public static FCMGetToken getInstance() {
if(token == null) {
token = new FCMGetToken();
return token;
}
else {
return token;
}
}
public void add(FcmToken token) {
tokenRecords.add(token);
lastToken = token.getContent();
}
public List<FcmToken> getTokenRecords() {
return tokenRecords;
}
public String getLastToken() {
return lastToken;
}
}
@RestController
public class FCMGetTokenController {
@RequestMapping(method = RequestMethod.GET, value = "/register/alltoken")
/* @ResponseBody
public List<FcmToken> getAllStudents() {
return FCMGetToken.getInstance().getTokenRecords();
}*/
@ResponseBody
public String getlastToken() {
return FCMGetToken.getInstance().getLastToken();
}
}
We can test this using the post man by the following URL
http://localhost:8080/register/alltoken
We Write one more webservice like /sendNotification to send the push notification to client app
@RestController
public class SendNotificationController {
public final static String AUTH_KEY_FCM = "key=FCM Console we can get this under cloud msging tab";
public final static String API_URL_FCM = "https://fcm.googleapis.com/fcm/send";
@RequestMapping(method = RequestMethod.POST, value = "/sendNotification")
@ResponseBody
private String sendPOST() throws IOException {
String lastToken = FCMGetToken.getInstance().getLastToken();
System.out.println("Inside post "+lastToken);
URL obj = new URL(API_URL_FCM);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
// con.setRequestProperty("User-Agent", USER_AGENT);
// For POST only - START
con.setDoOutput(true);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", AUTH_KEY_FCM);
String postJsonData = "{\r\n" +
" \"notification\": \r\n" +
" {\r\n" +
" \"title\": \"Hello Client This is From Server\",\r\n" +
" \"text\": \"Your Text\",\r\n" +
" \"sound\": \"default\",\r\n" +
" \"badge\": \"1\",\r\n" +
" \r\n" +
" \"color\": \"#990000\",\r\n" +
" \r\n" +
" \r\n" +
" },\r\n" +
" \"priority\" : \"high\",\r\n" +
" \"registration_ids\" : \r\n" +
" [\r\n" + "\""+
lastToken+ "\""+ "\r\n" +
" ]\r\n" +
"}";
OutputStream os = con.getOutputStream();
os.write(postJsonData.getBytes());
os.flush();
os.close();
// For POST only - END
con.connect();
int responseCode = con.getResponseCode();
System.out.println("POST Response Code :: " + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) { // success
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// print result
System.out.println(response.toString());
} else {
System.out.println("POST request not worked");
}
return "Success";
}
}
We Write one more webservice like /sendNotification to send the push notification to client app
@RestController
public class SendNotificationController {
public final static String AUTH_KEY_FCM = "key=FCM Console we can get this under cloud msging tab";
public final static String API_URL_FCM = "https://fcm.googleapis.com/fcm/send";
@RequestMapping(method = RequestMethod.POST, value = "/sendNotification")
@ResponseBody
private String sendPOST() throws IOException {
String lastToken = FCMGetToken.getInstance().getLastToken();
System.out.println("Inside post "+lastToken);
URL obj = new URL(API_URL_FCM);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
// con.setRequestProperty("User-Agent", USER_AGENT);
// For POST only - START
con.setDoOutput(true);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Authorization", AUTH_KEY_FCM);
String postJsonData = "{\r\n" +
" \"notification\": \r\n" +
" {\r\n" +
" \"title\": \"Hello Client This is From Server\",\r\n" +
" \"text\": \"Your Text\",\r\n" +
" \"sound\": \"default\",\r\n" +
" \"badge\": \"1\",\r\n" +
" \r\n" +
" \"color\": \"#990000\",\r\n" +
" \r\n" +
" \r\n" +
" },\r\n" +
" \"priority\" : \"high\",\r\n" +
" \"registration_ids\" : \r\n" +
" [\r\n" + "\""+
lastToken+ "\""+ "\r\n" +
" ]\r\n" +
"}";
OutputStream os = con.getOutputStream();
os.write(postJsonData.getBytes());
os.flush();
os.close();
// For POST only - END
con.connect();
int responseCode = con.getResponseCode();
System.out.println("POST Response Code :: " + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) { // success
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// print result
System.out.println(response.toString());
} else {
System.out.println("POST request not worked");
}
return "Success";
}
}