Merge pull request #602 from sameeragunarathne/master

refactor code for firebase cloud messaging
revert-dabc3590
Harshan Liyanage 8 years ago committed by GitHub
commit 2753deb365

@ -106,7 +106,7 @@ public class AndroidAPIUtils {
// PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext(); // PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
// GCMService gcmService = (GCMService) ctx.getOSGiService(GCMService.class, null); // GCMService gcmService = (GCMService) ctx.getOSGiService(GCMService.class, null);
// if (gcmService == null) { // if (gcmService == null) {
// String msg = "GCM service has not initialized."; // String msg = "FCM service has not initialized.";
// log.error(msg); // log.error(msg);
// throw new IllegalStateException(msg); // throw new IllegalStateException(msg);
// } // }
@ -143,7 +143,7 @@ public class AndroidAPIUtils {
DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID, operation, deviceIdentifiers); DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID, operation, deviceIdentifiers);
// if (activity != null) { // if (activity != null) {
// GCMService gcmService = getGCMService(); // GCMService gcmService = getGCMService();
// if (gcmService.isGCMEnabled()) { // if (gcmService.isFCMEnabled()) {
// List<DeviceIdentifier> deviceIDList = deviceIDHolder.getValidDeviceIDList(); // List<DeviceIdentifier> deviceIDList = deviceIDHolder.getValidDeviceIDList();
// List<Device> devices = new ArrayList<Device>(deviceIDList.size()); // List<Device> devices = new ArrayList<Device>(deviceIDList.size());
// for (DeviceIdentifier deviceIdentifier : deviceIDList) { // for (DeviceIdentifier deviceIdentifier : deviceIDList) {

@ -52,15 +52,15 @@
</div> </div>
</div> </div>
<div id="gcm-inputs"> <div id="fcm-inputs">
<div class="wr-input-control"> <div class="wr-input-control">
<label class="wr-input-label" for="android-config-gcm-api-key"> <label class="wr-input-label" for="android-config-fcm-api-key">
API Key* API Key*
<span class="helper" title="GCM API Key"> <span class="helper" title="FCM API Key">
<span class="wr-help-tip glyphicon glyphicon-question-sign"></span> <span class="wr-help-tip glyphicon glyphicon-question-sign"></span>
</span> </span>
</label> </label>
<input id="android-config-gcm-api-key" type="text" class="form-control" > <input id="android-config-fcm-api-key" type="text" class="form-control" >
</div> </div>
</div> </div>
<h4> <h4>

@ -29,7 +29,7 @@ function isPositiveInteger(str) {
var notifierTypeConstants = { var notifierTypeConstants = {
"LOCAL": "1", "LOCAL": "1",
"GCM": "2" "FCM": "2"
}; };
// Constants to define platform types available // Constants to define platform types available
var platformTypeConstants = { var platformTypeConstants = {
@ -47,8 +47,8 @@ var responseCodes = {
var configParams = { var configParams = {
"NOTIFIER_TYPE": "notifierType", "NOTIFIER_TYPE": "notifierType",
"NOTIFIER_FREQUENCY": "notifierFrequency", "NOTIFIER_FREQUENCY": "notifierFrequency",
"GCM_API_KEY": "gcmAPIKey", "FCM_API_KEY": "fcmAPIKey",
"GCM_SENDER_ID": "gcmSenderId", "FCM_SENDER_ID": "fcmSenderId",
"ANDROID_EULA": "androidEula", "ANDROID_EULA": "androidEula",
"IOS_EULA": "iosEula", "IOS_EULA": "iosEula",
"CONFIG_COUNTRY": "configCountry", "CONFIG_COUNTRY": "configCountry",
@ -81,7 +81,7 @@ var configParams = {
}; };
$(document).ready(function () { $(document).ready(function () {
$("#gcm-inputs").hide(); $("#fcm-inputs").hide();
tinymce.init({ tinymce.init({
selector: "textarea", selector: "textarea",
height:500, height:500,
@ -113,17 +113,17 @@ $(document).ready(function () {
var config = data.configuration[i]; var config = data.configuration[i];
if (config.name == configParams["NOTIFIER_TYPE"]) { if (config.name == configParams["NOTIFIER_TYPE"]) {
$("#android-config-notifier").val(config.value); $("#android-config-notifier").val(config.value);
if (config.value != notifierTypeConstants["GCM"]) { if (config.value != notifierTypeConstants["FCM"]) {
$("#gcm-inputs").hide(); $("#fcm-inputs").hide();
$("#local-inputs").show(); $("#local-inputs").show();
} else { } else {
$("#gcm-inputs").show(); $("#fcm-inputs").show();
$("#local-inputs").hide(); $("#local-inputs").hide();
} }
} else if (config.name == configParams["NOTIFIER_FREQUENCY"]) { } else if (config.name == configParams["NOTIFIER_FREQUENCY"]) {
$("input#android-config-notifier-frequency").val(config.value / 1000); $("input#android-config-notifier-frequency").val(config.value / 1000);
} else if (config.name == configParams["GCM_API_KEY"]) { } else if (config.name == configParams["FCM_API_KEY"]) {
$("input#android-config-gcm-api-key").val(config.value); $("input#android-config-fcm-api-key").val(config.value);
} else if (config.name == configParams["ANDROID_EULA"]) { } else if (config.name == configParams["ANDROID_EULA"]) {
$("#android-eula").val(config.value); $("#android-eula").val(config.value);
} }
@ -139,12 +139,12 @@ $(document).ready(function () {
$("#android-config-notifier").change(function () { $("#android-config-notifier").change(function () {
var notifierType = $("#android-config-notifier").find("option:selected").attr("value"); var notifierType = $("#android-config-notifier").find("option:selected").attr("value");
if (notifierType != notifierTypeConstants["GCM"]) { if (notifierType != notifierTypeConstants["FCM"]) {
$("#gcm-inputs").hide(); $("#fcm-inputs").hide();
$("#local-inputs").show(); $("#local-inputs").show();
} else { } else {
$("#local-inputs").hide(); $("#local-inputs").hide();
$("#gcm-inputs").show(); $("#fcm-inputs").show();
} }
}); });
@ -156,8 +156,8 @@ $(document).ready(function () {
$("button#save-android-btn").click(function () { $("button#save-android-btn").click(function () {
var notifierType = $("#android-config-notifier").find("option:selected").attr("value"); var notifierType = $("#android-config-notifier").find("option:selected").attr("value");
var notifierFrequency = $("input#android-config-notifier-frequency").val(); var notifierFrequency = $("input#android-config-notifier-frequency").val();
var gcmAPIKey = $("input#android-config-gcm-api-key").val(); var fcmAPIKey = $("input#android-config-fcm-api-key").val();
var gcmSenderId = "sender_id"; var fcmSenderId = "sender_id";
var androidLicense = tinyMCE.activeEditor.getContent(); var androidLicense = tinyMCE.activeEditor.getContent();
var errorMsgWrapper = "#android-config-error-msg"; var errorMsgWrapper = "#android-config-error-msg";
var errorMsg = "#android-config-error-msg span"; var errorMsg = "#android-config-error-msg span";
@ -167,7 +167,7 @@ $(document).ready(function () {
} else if (notifierType == notifierTypeConstants["LOCAL"] && !isPositiveInteger(notifierFrequency)) { } else if (notifierType == notifierTypeConstants["LOCAL"] && !isPositiveInteger(notifierFrequency)) {
$(errorMsg).text("Provided notifier frequency is invalid. "); $(errorMsg).text("Provided notifier frequency is invalid. ");
$(errorMsgWrapper).removeClass("hidden"); $(errorMsgWrapper).removeClass("hidden");
} else if (notifierType == notifierTypeConstants["GCM"] && !gcmAPIKey) { } else if (notifierType == notifierTypeConstants["FCM"] && !fcmAPIKey) {
$(errorMsg).text("FCM API Key is a required field. It cannot be empty."); $(errorMsg).text("FCM API Key is a required field. It cannot be empty.");
$(errorMsgWrapper).removeClass("hidden"); $(errorMsgWrapper).removeClass("hidden");
} else { } else {
@ -187,15 +187,15 @@ $(document).ready(function () {
"contentType": "text" "contentType": "text"
}; };
var gcmKey = { var fcmKey = {
"name": configParams["GCM_API_KEY"], "name": configParams["FCM_API_KEY"],
"value": gcmAPIKey, "value": fcmAPIKey,
"contentType": "text" "contentType": "text"
}; };
var gcmId = { var fcmId = {
"name": configParams["GCM_SENDER_ID"], "name": configParams["FCM_SENDER_ID"],
"value": gcmSenderId, "value": fcmSenderId,
"contentType": "text" "contentType": "text"
}; };
@ -208,9 +208,9 @@ $(document).ready(function () {
configList.push(type); configList.push(type);
configList.push(frequency); configList.push(frequency);
configList.push(androidEula); configList.push(androidEula);
if (notifierType == notifierTypeConstants["GCM"]) { if (notifierType == notifierTypeConstants["FCM"]) {
configList.push(gcmKey); configList.push(fcmKey);
configList.push(gcmId); configList.push(fcmId);
} }
addConfigFormData.type = platformTypeConstants["ANDROID"]; addConfigFormData.type = platformTypeConstants["ANDROID"];

@ -43,8 +43,8 @@ public class AndroidDeviceManagementService implements DeviceManagementService {
public static final String DEVICE_TYPE_ANDROID = "android"; public static final String DEVICE_TYPE_ANDROID = "android";
private static final String SUPER_TENANT_DOMAIN = "carbon.super"; private static final String SUPER_TENANT_DOMAIN = "carbon.super";
private static final String NOTIFIER_PROPERTY = "notifierType"; private static final String NOTIFIER_PROPERTY = "notifierType";
private static final String GCM_API_KEY = "gcmAPIKey"; private static final String FCM_API_KEY = "fcmAPIKey";
private static final String GCM_SENDER_ID = "gcmSenderId"; private static final String FCM_SENDER_ID = "fcmSenderId";
private PolicyMonitoringManager policyMonitoringManager; private PolicyMonitoringManager policyMonitoringManager;
@Override @Override
@ -92,9 +92,9 @@ public class AndroidDeviceManagementService implements DeviceManagementService {
int notifierType = Integer.parseInt(notifierValue); int notifierType = Integer.parseInt(notifierValue);
if (notifierType == 2) { if (notifierType == 2) {
HashMap<String, String> config = new HashMap<>(); HashMap<String, String> config = new HashMap<>();
config.put(GCM_API_KEY, this.getConfigProperty(configuration, GCM_API_KEY)); config.put(FCM_API_KEY, this.getConfigProperty(configuration, FCM_API_KEY));
config.put(GCM_SENDER_ID, this.getConfigProperty(configuration, GCM_SENDER_ID)); config.put(FCM_SENDER_ID, this.getConfigProperty(configuration, FCM_SENDER_ID));
return new PushNotificationConfig(AndroidPluginConstants.NotifierType.GCM, config); return new PushNotificationConfig(AndroidPluginConstants.NotifierType.FCM, config);
} }
} }
} }

@ -52,7 +52,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT DEVICE_ID, GCM_TOKEN, DEVICE_INFO, DEVICE_MODEL, SERIAL, " + "SELECT DEVICE_ID, FCM_TOKEN, DEVICE_INFO, DEVICE_MODEL, SERIAL, " +
"VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, OS_VERSION, OS_BUILD_DATE" + "VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, OS_VERSION, OS_BUILD_DATE" +
" FROM AD_DEVICE WHERE DEVICE_ID = ?"; " FROM AD_DEVICE WHERE DEVICE_ID = ?";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
@ -73,7 +73,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
mobileDevice.setOsBuildDate(rs.getString(AndroidPluginConstants.OS_BUILD_DATE)); mobileDevice.setOsBuildDate(rs.getString(AndroidPluginConstants.OS_BUILD_DATE));
Map<String, String> propertyMap = new HashMap<String, String>(); Map<String, String> propertyMap = new HashMap<String, String>();
propertyMap.put(AndroidPluginConstants.GCM_TOKEN, rs.getString(AndroidPluginConstants.GCM_TOKEN)); propertyMap.put(AndroidPluginConstants.FCM_TOKEN, rs.getString(AndroidPluginConstants.FCM_TOKEN));
propertyMap.put(AndroidPluginConstants.DEVICE_INFO, rs.getString(AndroidPluginConstants.DEVICE_INFO)); propertyMap.put(AndroidPluginConstants.DEVICE_INFO, rs.getString(AndroidPluginConstants.DEVICE_INFO));
propertyMap.put(AndroidPluginConstants.DEVICE_NAME, rs.getString(AndroidPluginConstants.DEVICE_NAME)); propertyMap.put(AndroidPluginConstants.DEVICE_NAME, rs.getString(AndroidPluginConstants.DEVICE_NAME));
mobileDevice.setDeviceProperties(propertyMap); mobileDevice.setDeviceProperties(propertyMap);
@ -103,7 +103,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String createDBQuery = String createDBQuery =
"INSERT INTO AD_DEVICE(DEVICE_ID, GCM_TOKEN, DEVICE_INFO, SERIAL, " + "INSERT INTO AD_DEVICE(DEVICE_ID, FCM_TOKEN, DEVICE_INFO, SERIAL, " +
"VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, " + "VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, " +
"OS_VERSION, DEVICE_MODEL, OS_BUILD_DATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; "OS_VERSION, DEVICE_MODEL, OS_BUILD_DATE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
@ -111,7 +111,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
stmt.setString(1, mobileDevice.getMobileDeviceId()); stmt.setString(1, mobileDevice.getMobileDeviceId());
Map<String, String> properties = mobileDevice.getDeviceProperties(); Map<String, String> properties = mobileDevice.getDeviceProperties();
stmt.setString(2, properties.get(AndroidPluginConstants.GCM_TOKEN)); stmt.setString(2, properties.get(AndroidPluginConstants.FCM_TOKEN));
stmt.setString(3, properties.get(AndroidPluginConstants.DEVICE_INFO)); stmt.setString(3, properties.get(AndroidPluginConstants.DEVICE_INFO));
stmt.setString(4, mobileDevice.getSerial()); stmt.setString(4, mobileDevice.getSerial());
stmt.setString(5, mobileDevice.getVendor()); stmt.setString(5, mobileDevice.getVendor());
@ -149,13 +149,13 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String updateDBQuery = String updateDBQuery =
"UPDATE AD_DEVICE SET GCM_TOKEN = ?, DEVICE_INFO = ?, SERIAL = ?, VENDOR = ?, " + "UPDATE AD_DEVICE SET FCM_TOKEN = ?, DEVICE_INFO = ?, SERIAL = ?, VENDOR = ?, " +
"MAC_ADDRESS = ?, DEVICE_NAME = ?, LATITUDE = ?, LONGITUDE = ?, IMEI = ?, " + "MAC_ADDRESS = ?, DEVICE_NAME = ?, LATITUDE = ?, LONGITUDE = ?, IMEI = ?, " +
"IMSI = ?, OS_VERSION = ?, DEVICE_MODEL = ?, OS_BUILD_DATE = ? WHERE DEVICE_ID = ?"; "IMSI = ?, OS_VERSION = ?, DEVICE_MODEL = ?, OS_BUILD_DATE = ? WHERE DEVICE_ID = ?";
stmt = conn.prepareStatement(updateDBQuery); stmt = conn.prepareStatement(updateDBQuery);
Map<String, String> properties = mobileDevice.getDeviceProperties(); Map<String, String> properties = mobileDevice.getDeviceProperties();
stmt.setString(1, properties.get(AndroidPluginConstants.GCM_TOKEN)); stmt.setString(1, properties.get(AndroidPluginConstants.FCM_TOKEN));
stmt.setString(2, properties.get(AndroidPluginConstants.DEVICE_INFO)); stmt.setString(2, properties.get(AndroidPluginConstants.DEVICE_INFO));
stmt.setString(3, mobileDevice.getSerial()); stmt.setString(3, mobileDevice.getSerial());
stmt.setString(4, mobileDevice.getVendor()); stmt.setString(4, mobileDevice.getVendor());
@ -227,7 +227,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
try { try {
conn = AndroidDAOFactory.getConnection(); conn = AndroidDAOFactory.getConnection();
String selectDBQuery = String selectDBQuery =
"SELECT DEVICE_ID, GCM_TOKEN, DEVICE_INFO, DEVICE_MODEL, SERIAL, " + "SELECT DEVICE_ID, FCM_TOKEN, DEVICE_INFO, DEVICE_MODEL, SERIAL, " +
"VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, OS_VERSION, OS_BUILD_DATE " + "VENDOR, MAC_ADDRESS, DEVICE_NAME, LATITUDE, LONGITUDE, IMEI, IMSI, OS_VERSION, OS_BUILD_DATE " +
"FROM AD_DEVICE"; "FROM AD_DEVICE";
stmt = conn.prepareStatement(selectDBQuery); stmt = conn.prepareStatement(selectDBQuery);
@ -247,7 +247,7 @@ public class AndroidDeviceDAOImpl implements MobileDeviceDAO{
mobileDevice.setOsBuildDate(rs.getString(AndroidPluginConstants.OS_BUILD_DATE)); mobileDevice.setOsBuildDate(rs.getString(AndroidPluginConstants.OS_BUILD_DATE));
Map<String, String> propertyMap = new HashMap<>(); Map<String, String> propertyMap = new HashMap<>();
propertyMap.put(AndroidPluginConstants.GCM_TOKEN, rs.getString(AndroidPluginConstants.GCM_TOKEN)); propertyMap.put(AndroidPluginConstants.FCM_TOKEN, rs.getString(AndroidPluginConstants.FCM_TOKEN));
propertyMap.put(AndroidPluginConstants.DEVICE_INFO, rs.getString(AndroidPluginConstants.DEVICE_INFO)); propertyMap.put(AndroidPluginConstants.DEVICE_INFO, rs.getString(AndroidPluginConstants.DEVICE_INFO));
propertyMap.put(AndroidPluginConstants.DEVICE_NAME, rs.getString(AndroidPluginConstants.DEVICE_NAME)); propertyMap.put(AndroidPluginConstants.DEVICE_NAME, rs.getString(AndroidPluginConstants.DEVICE_NAME));
mobileDevice.setDeviceProperties(propertyMap); mobileDevice.setDeviceProperties(propertyMap);

@ -16,12 +16,12 @@
* under the License. * under the License.
*/ */
package org.wso2.carbon.device.mgt.mobile.android.impl.gcm; package org.wso2.carbon.device.mgt.mobile.android.impl.fcm;
/** /**
* Represents model object for holding GCM response data. * Represents model object for holding FCM response data.
*/ */
public class GCMResult { public class FCMResult {
private String errorMsg; private String errorMsg;
private String msg; private String msg;

@ -16,7 +16,7 @@
* under the License. * under the License.
*/ */
package org.wso2.carbon.device.mgt.mobile.android.impl.gcm; package org.wso2.carbon.device.mgt.mobile.android.impl.fcm;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
@ -26,17 +26,17 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* GCM notification service implementation for Android platform. * FCM notification service implementation for Android platform.
*/ */
public class GCMService { public class FCMService {
private static final Log log = LogFactory.getLog(GCMService.class); private static final Log log = LogFactory.getLog(FCMService.class);
private static final String NOTIFIER_TYPE = "notifierType"; private static final String NOTIFIER_TYPE = "notifierType";
private static final String GCM_NOTIFIER_CODE = "2"; private static final String FCM_NOTIFIER_CODE = "2";
public boolean isGCMEnabled() { public boolean isFCMEnabled() {
String notifierType = GCMUtil.getConfigurationProperty(NOTIFIER_TYPE); String notifierType = FCMUtil.getConfigurationProperty(NOTIFIER_TYPE);
if (GCM_NOTIFIER_CODE.equals(notifierType)) { if (FCM_NOTIFIER_CODE.equals(notifierType)) {
return true; return true;
} }
return false; return false;
@ -45,20 +45,20 @@ public class GCMService {
public void sendNotification(String messageData, Device device) { public void sendNotification(String messageData, Device device) {
List<Device> devices = new ArrayList<>(1); List<Device> devices = new ArrayList<>(1);
devices.add(device); devices.add(device);
GCMResult result = GCMUtil.sendWakeUpCall(messageData, devices); FCMResult result = FCMUtil.sendWakeUpCall(messageData, devices);
if (result.getStatusCode() != 200) { if (result.getStatusCode() != 200) {
log.error("Exception occurred while sending the GCM notification : " + result.getErrorMsg()); log.error("Exception occurred while sending the FCM notification : " + result.getErrorMsg());
} }
} }
public void sendNotification(String messageData, List<Device> devices) { public void sendNotification(String messageData, List<Device> devices) {
GCMResult result = GCMUtil.sendWakeUpCall(messageData, devices); FCMResult result = FCMUtil.sendWakeUpCall(messageData, devices);
if (result.getStatusCode() != 200) { if (result.getStatusCode() != 200) {
log.error("Exception occurred while sending the GCM notification : " + result.getErrorMsg()); log.error("Exception occurred while sending the FCM notification : " + result.getErrorMsg());
} }
} }
public void resetTenantConfigCache() { public void resetTenantConfigCache() {
GCMUtil.resetTenantConfigCache(); FCMUtil.resetTenantConfigCache();
} }
} }

@ -16,7 +16,7 @@
* under the License. * under the License.
*/ */
package org.wso2.carbon.device.mgt.mobile.android.impl.gcm; package org.wso2.carbon.device.mgt.mobile.android.impl.fcm;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@ -45,32 +45,32 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
/** /**
* Implements utility methods used by GCMService. * Implements utility methods used by FCMService.
*/ */
public class GCMUtil { public class FCMUtil {
private static final Log log = LogFactory.getLog(GCMService.class); private static final Log log = LogFactory.getLog(FCMService.class);
private final static String GCM_ENDPOINT = "https://fcm.googleapis.com/fcm/send"; private final static String FCM_ENDPOINT = "https://fcm.googleapis.com/fcm/send";
private static final String GCM_API_KEY = "gcmAPIKey"; private static final String FCM_API_KEY = "fcmAPIKey";
private static final int TIME_TO_LIVE = 60; private static final int TIME_TO_LIVE = 60;
private static final int HTTP_STATUS_CODE_OK = 200; private static final int HTTP_STATUS_CODE_OK = 200;
private static HashMap<Integer, PlatformConfiguration> tenantConfigurationCache = new HashMap<>(); private static HashMap<Integer, PlatformConfiguration> tenantConfigurationCache = new HashMap<>();
public static GCMResult sendWakeUpCall(String message, List<Device> devices) { public static FCMResult sendWakeUpCall(String message, List<Device> devices) {
GCMResult result = new GCMResult(); FCMResult result = new FCMResult();
byte[] bytes = getGCMRequest(message, getGCMTokens(devices)).getBytes(); byte[] bytes = getFCMRequest(message, getFCMTokens(devices)).getBytes();
HttpURLConnection conn; HttpURLConnection conn;
try { try {
conn = (HttpURLConnection) (new URL(GCM_ENDPOINT)).openConnection(); conn = (HttpURLConnection) (new URL(FCM_ENDPOINT)).openConnection();
conn.setDoOutput(true); conn.setDoOutput(true);
conn.setUseCaches(false); conn.setUseCaches(false);
conn.setFixedLengthStreamingMode(bytes.length); conn.setFixedLengthStreamingMode(bytes.length);
conn.setRequestMethod("POST"); conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "key=" + getConfigurationProperty(GCM_API_KEY)); conn.setRequestProperty("Authorization", "key=" + getConfigurationProperty(FCM_API_KEY));
OutputStream out = conn.getOutputStream(); OutputStream out = conn.getOutputStream();
out.write(bytes); out.write(bytes);
@ -86,7 +86,7 @@ public class GCMUtil {
} catch (ProtocolException e) { } catch (ProtocolException e) {
log.error("Exception occurred while setting the HTTP protocol.", e); log.error("Exception occurred while setting the HTTP protocol.", e);
} catch (IOException ex) { } catch (IOException ex) {
log.error("Exception occurred while sending the GCM request.", ex); log.error("Exception occurred while sending the FCM request.", ex);
} }
return result; return result;
@ -114,16 +114,16 @@ public class GCMUtil {
return null; return null;
} }
private static String getGCMRequest(String message, List<String> registrationIds) { private static String getFCMRequest(String message, List<String> registrationIds) {
JsonObject gcmRequest = new JsonObject(); JsonObject fcmRequest = new JsonObject();
gcmRequest.addProperty("delay_while_idle", false); fcmRequest.addProperty("delay_while_idle", false);
gcmRequest.addProperty("time_to_live", TIME_TO_LIVE); fcmRequest.addProperty("time_to_live", TIME_TO_LIVE);
//Add message to GCM request //Add message to FCM request
JsonObject data = new JsonObject(); JsonObject data = new JsonObject();
if (message != null && !message.isEmpty()) { if (message != null && !message.isEmpty()) {
data.addProperty("data", message); data.addProperty("data", message);
gcmRequest.add("data", data); fcmRequest.add("data", data);
} }
//Set device reg-ids //Set device reg-ids
@ -135,27 +135,27 @@ public class GCMUtil {
regIds.add(new JsonPrimitive(regId)); regIds.add(new JsonPrimitive(regId));
} }
gcmRequest.add("registration_ids", regIds); fcmRequest.add("registration_ids", regIds);
return gcmRequest.toString(); return fcmRequest.toString();
} }
private static List<String> getGCMTokens(List<Device> devices) { private static List<String> getFCMTokens(List<Device> devices) {
List<String> tokens = new ArrayList<>(devices.size()); List<String> tokens = new ArrayList<>(devices.size());
for (Device device : devices) { for (Device device : devices) {
tokens.add(getGCMToken(device.getProperties())); tokens.add(getFCMToken(device.getProperties()));
} }
return tokens; return tokens;
} }
private static String getGCMToken(List<Device.Property> properties) { private static String getFCMToken(List<Device.Property> properties) {
String gcmToken = null; String fcmToken = null;
for (Device.Property property : properties) { for (Device.Property property : properties) {
if (AndroidPluginConstants.GCM_TOKEN.equals(property.getName())) { if (AndroidPluginConstants.FCM_TOKEN.equals(property.getName())) {
gcmToken = property.getValue(); fcmToken = property.getValue();
break; break;
} }
} }
return gcmToken; return fcmToken;
} }
public static String getConfigurationProperty(String property) { public static String getConfigurationProperty(String property) {

@ -25,7 +25,7 @@ public final class AndroidPluginConstants {
//Properties related to AD_DEVICE table //Properties related to AD_DEVICE table
public static final String DEVICE_ID = "DEVICE_ID"; public static final String DEVICE_ID = "DEVICE_ID";
public static final String GCM_TOKEN = "GCM_TOKEN"; public static final String FCM_TOKEN = "FCM_TOKEN";
public static final String DEVICE_INFO = "DEVICE_INFO"; public static final String DEVICE_INFO = "DEVICE_INFO";
public static final String SERIAL = "SERIAL"; public static final String SERIAL = "SERIAL";
public static final String DEVICE_MODEL = "DEVICE_MODEL"; public static final String DEVICE_MODEL = "DEVICE_MODEL";
@ -50,7 +50,7 @@ public final class AndroidPluginConstants {
throw new AssertionError(); throw new AssertionError();
} }
public static final String GCM = "GCM"; public static final String FCM = "FCM";
public static final String LOCAL = "LOCAL"; public static final String LOCAL = "LOCAL";
} }

@ -19,7 +19,7 @@
package org.wso2.carbon.device.mgt.mobile.android.internal; package org.wso2.carbon.device.mgt.mobile.android.internal;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
import org.wso2.carbon.device.mgt.mobile.android.impl.gcm.GCMService; import org.wso2.carbon.device.mgt.mobile.android.impl.fcm.FCMService;
import org.wso2.carbon.registry.core.service.RegistryService; import org.wso2.carbon.registry.core.service.RegistryService;
/** /**
@ -29,7 +29,7 @@ public class AndroidDeviceManagementDataHolder {
private RegistryService registryService; private RegistryService registryService;
private DeviceManagementService androidDeviceManagementService; private DeviceManagementService androidDeviceManagementService;
private GCMService gcmService; private FCMService fcmService;
private static AndroidDeviceManagementDataHolder thisInstance = new AndroidDeviceManagementDataHolder(); private static AndroidDeviceManagementDataHolder thisInstance = new AndroidDeviceManagementDataHolder();
@ -57,11 +57,11 @@ public class AndroidDeviceManagementDataHolder {
this.androidDeviceManagementService = androidDeviceManagementService; this.androidDeviceManagementService = androidDeviceManagementService;
} }
public GCMService getGCMService() { public FCMService getFCMService() {
return gcmService; return fcmService;
} }
public void setGCMService(GCMService gcmService) { public void setFCMService(FCMService fcmService) {
this.gcmService = gcmService; this.fcmService = fcmService;
} }
} }

@ -25,7 +25,7 @@ import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext; import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
import org.wso2.carbon.device.mgt.mobile.android.impl.AndroidDeviceManagementService; import org.wso2.carbon.device.mgt.mobile.android.impl.AndroidDeviceManagementService;
import org.wso2.carbon.device.mgt.mobile.android.impl.gcm.GCMService; import org.wso2.carbon.device.mgt.mobile.android.impl.fcm.FCMService;
import org.wso2.carbon.ndatasource.core.DataSourceService; import org.wso2.carbon.ndatasource.core.DataSourceService;
import org.wso2.carbon.registry.core.service.RegistryService; import org.wso2.carbon.registry.core.service.RegistryService;
@ -50,7 +50,7 @@ public class AndroidDeviceManagementServiceComponent {
private static final Log log = LogFactory.getLog(AndroidDeviceManagementServiceComponent.class); private static final Log log = LogFactory.getLog(AndroidDeviceManagementServiceComponent.class);
private ServiceRegistration androidServiceRegRef; private ServiceRegistration androidServiceRegRef;
private ServiceRegistration gcmServiceRegRef; private ServiceRegistration fcmServiceRegRef;
protected void activate(ComponentContext ctx) { protected void activate(ComponentContext ctx) {
@ -61,14 +61,14 @@ public class AndroidDeviceManagementServiceComponent {
BundleContext bundleContext = ctx.getBundleContext(); BundleContext bundleContext = ctx.getBundleContext();
DeviceManagementService androidDeviceManagementService = new AndroidDeviceManagementService(); DeviceManagementService androidDeviceManagementService = new AndroidDeviceManagementService();
GCMService gcmService = new GCMService(); FCMService fcmService = new FCMService();
// androidServiceRegRef = // androidServiceRegRef =
// bundleContext.registerService(DeviceManagementService.class.getName(), // bundleContext.registerService(DeviceManagementService.class.getName(),
// androidDeviceManagementService, null); // androidDeviceManagementService, null);
gcmServiceRegRef = fcmServiceRegRef =
bundleContext.registerService(GCMService.class.getName(), gcmService, null); bundleContext.registerService(FCMService.class.getName(), fcmService, null);
// Policy management service // Policy management service
@ -78,7 +78,7 @@ public class AndroidDeviceManagementServiceComponent {
AndroidDeviceManagementDataHolder.getInstance().setAndroidDeviceManagementService( AndroidDeviceManagementDataHolder.getInstance().setAndroidDeviceManagementService(
androidDeviceManagementService); androidDeviceManagementService);
AndroidDeviceManagementDataHolder.getInstance().setGCMService(gcmService); AndroidDeviceManagementDataHolder.getInstance().setFCMService(fcmService);
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Android Mobile Device Management Service Component has been successfully activated"); log.debug("Android Mobile Device Management Service Component has been successfully activated");
@ -96,8 +96,8 @@ public class AndroidDeviceManagementServiceComponent {
if (androidServiceRegRef != null) { if (androidServiceRegRef != null) {
androidServiceRegRef.unregister(); androidServiceRegRef.unregister();
} }
if (gcmServiceRegRef != null) { if (fcmServiceRegRef != null) {
gcmServiceRegRef.unregister(); fcmServiceRegRef.unregister();
} }
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug( log.debug(

@ -30,8 +30,8 @@ var responseCodes = {
var configParams = { var configParams = {
"NOTIFIER_TYPE": "notifierType", "NOTIFIER_TYPE": "notifierType",
"NOTIFIER_FREQUENCY": "notifierFrequency", "NOTIFIER_FREQUENCY": "notifierFrequency",
"GCM_API_KEY": "gcmAPIKey", "FCM_API_KEY": "fcmAPIKey",
"GCM_SENDER_ID": "gcmSenderId", "FCM_SENDER_ID": "fcmSenderId",
"ANDROID_EULA": "androidEula", "ANDROID_EULA": "androidEula",
"IOS_EULA": "iosEula", "IOS_EULA": "iosEula",
"CONFIG_COUNTRY": "configCountry", "CONFIG_COUNTRY": "configCountry",

@ -275,11 +275,11 @@
</propertyDef> </propertyDef>
</properties> </properties>
</adviceFile> </adviceFile>
<!--<bundles>--> <bundles>
<!--<bundleDef>--> <bundleDef>
<!--org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.mobile.android:${carbon.devicemgt.plugins.version}--> org.wso2.carbon.devicemgt-plugins:org.wso2.carbon.device.mgt.mobile.android:${carbon.devicemgt.plugins.version}
<!--</bundleDef>--> </bundleDef>
<!--</bundles>--> </bundles>
<importFeatures> <importFeatures>
<importFeatureDef> <importFeatureDef>
org.wso2.carbon.core.server:${carbon.kernel.version} org.wso2.carbon.core.server:${carbon.kernel.version}

@ -4,7 +4,7 @@
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_DEVICE` ( CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
`DEVICE_ID` VARCHAR(45) NOT NULL, `DEVICE_ID` VARCHAR(45) NOT NULL,
`GCM_TOKEN` VARCHAR(1000) NULL DEFAULT NULL, `FCM_TOKEN` VARCHAR(1000) NULL DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL, `DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL, `IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL, `IMSI` VARCHAR(45) NULL DEFAULT NULL,

@ -4,7 +4,7 @@
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[AD_DEVICE]') AND TYPE IN (N'U')) IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[AD_DEVICE]') AND TYPE IN (N'U'))
CREATE TABLE AD_DEVICE ( CREATE TABLE AD_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL, DEVICE_ID VARCHAR(45) NOT NULL,
GCM_TOKEN VARCHAR(1000) NULL DEFAULT NULL, FCM_TOKEN VARCHAR(1000) NULL DEFAULT NULL,
DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL, DEVICE_INFO VARCHAR(8000) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL, IMEI VARCHAR(45) NULL DEFAULT NULL,
IMSI VARCHAR(45) NULL DEFAULT NULL, IMSI VARCHAR(45) NULL DEFAULT NULL,

@ -3,7 +3,7 @@
-- ----------------------------------------------------- -- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `AD_DEVICE` ( CREATE TABLE IF NOT EXISTS `AD_DEVICE` (
`DEVICE_ID` VARCHAR(45) NOT NULL, `DEVICE_ID` VARCHAR(45) NOT NULL,
`GCM_TOKEN` VARCHAR(1000) NULL DEFAULT NULL, `FCM_TOKEN` VARCHAR(1000) NULL DEFAULT NULL,
`DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL, `DEVICE_INFO` VARCHAR(8000) NULL DEFAULT NULL,
`IMEI` VARCHAR(45) NULL DEFAULT NULL, `IMEI` VARCHAR(45) NULL DEFAULT NULL,
`IMSI` VARCHAR(45) NULL DEFAULT NULL, `IMSI` VARCHAR(45) NULL DEFAULT NULL,

@ -4,7 +4,7 @@
CREATE TABLE AD_DEVICE ( CREATE TABLE AD_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL , DEVICE_ID VARCHAR(45) NOT NULL ,
DEVICE_INFO VARCHAR(4000) DEFAULT NULL, DEVICE_INFO VARCHAR(4000) DEFAULT NULL,
GCM_TOKEN VARCHAR(1000) DEFAULT NULL, FCM_TOKEN VARCHAR(1000) DEFAULT NULL,
IMEI VARCHAR(45) DEFAULT NULL, IMEI VARCHAR(45) DEFAULT NULL,
IMSI VARCHAR(45) DEFAULT NULL, IMSI VARCHAR(45) DEFAULT NULL,
OS_VERSION VARCHAR(45) DEFAULT NULL, OS_VERSION VARCHAR(45) DEFAULT NULL,

@ -4,7 +4,7 @@
CREATE TABLE IF NOT EXISTS AD_DEVICE ( CREATE TABLE IF NOT EXISTS AD_DEVICE (
DEVICE_ID VARCHAR(45) NOT NULL , DEVICE_ID VARCHAR(45) NOT NULL ,
DEVICE_INFO TEXT NULL DEFAULT NULL, DEVICE_INFO TEXT NULL DEFAULT NULL,
GCM_TOKEN VARCHAR(1000) NULL DEFAULT NULL, FCM_TOKEN VARCHAR(1000) NULL DEFAULT NULL,
IMEI VARCHAR(45) NULL DEFAULT NULL, IMEI VARCHAR(45) NULL DEFAULT NULL,
IMSI VARCHAR(45) NULL DEFAULT NULL, IMSI VARCHAR(45) NULL DEFAULT NULL,
OS_VERSION VARCHAR(45) NULL DEFAULT NULL, OS_VERSION VARCHAR(45) NULL DEFAULT NULL,

@ -52,6 +52,10 @@
<SharedWithAllTenants>true</SharedWithAllTenants> <SharedWithAllTenants>true</SharedWithAllTenants>
</ProvisioningConfig> </ProvisioningConfig>
<!--Configuration for enable firebase push notifications-->
<!--<PushNotificationProvider type="FCM">-->
<!--</PushNotificationProvider>-->
<DataSource> <DataSource>
<JndiConfig> <JndiConfig>
<Name>jdbc/MobileAndroidDM_DS</Name> <Name>jdbc/MobileAndroidDM_DS</Name>
@ -60,7 +64,7 @@
<Table name="AD_DEVICE"> <Table name="AD_DEVICE">
<PrimaryKey>DEVICE_ID</PrimaryKey> <PrimaryKey>DEVICE_ID</PrimaryKey>
<Attributes> <Attributes>
<Attribute>GCM_TOKEN</Attribute> <Attribute>FCM_TOKEN</Attribute>
<Attribute>DEVICE_INFO</Attribute> <Attribute>DEVICE_INFO</Attribute>
<Attribute>IMEI</Attribute> <Attribute>IMEI</Attribute>
<Attribute>IMSI</Attribute> <Attribute>IMSI</Attribute>

Loading…
Cancel
Save