mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
Added logic to switch between GCM & LOCAL notification provider in Android
This commit is contained in:
parent
814dcf9c8f
commit
479deb8a49
@ -18,17 +18,20 @@
|
||||
|
||||
package org.wso2.carbon.device.mgt.mobile.android.impl;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManager;
|
||||
import org.wso2.carbon.device.mgt.common.ProvisioningConfig;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.Application;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManager;
|
||||
import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry;
|
||||
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
|
||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.impl.util.AndroidPluginConstants;
|
||||
import org.wso2.carbon.device.mgt.mobile.android.internal.AndroidDeviceManagementDataHolder;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -36,9 +39,13 @@ import java.util.List;
|
||||
*/
|
||||
public class AndroidDeviceManagementService implements DeviceManagementService {
|
||||
|
||||
private static final Log log = LogFactory.getLog(AndroidDeviceManagementService.class);
|
||||
private DeviceManager deviceManager;
|
||||
public static final String DEVICE_TYPE_ANDROID = "android";
|
||||
private static final String SUPER_TENANT_DOMAIN = "carbon.super";
|
||||
private static final String NOTIFIER_PROPERTY = "notifierType";
|
||||
private static final String GCM_API_KEY = "gcmAPIKey";
|
||||
private static final String GCM_SENDER_ID = "gcmSenderId";
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
@ -67,7 +74,37 @@ public class AndroidDeviceManagementService implements DeviceManagementService {
|
||||
|
||||
@Override
|
||||
public PushNotificationConfig getPushNotificationConfig() {
|
||||
try {
|
||||
DeviceManagementService deviceManagementService = AndroidDeviceManagementDataHolder.getInstance().
|
||||
getAndroidDeviceManagementService();
|
||||
if (deviceManagementService != null && deviceManagementService.getDeviceManager() != null) {
|
||||
PlatformConfiguration androidConfig = deviceManagementService.getDeviceManager().getConfiguration();
|
||||
if (androidConfig != null) {
|
||||
List<ConfigurationEntry> configuration = androidConfig.getConfiguration();
|
||||
String notifierValue = this.getConfigProperty(configuration, NOTIFIER_PROPERTY);
|
||||
if (notifierValue != null && !notifierValue.isEmpty()) {
|
||||
int notifierType = Integer.parseInt(notifierValue);
|
||||
if (notifierType == 2) {
|
||||
HashMap<String, String> config = new HashMap<>();
|
||||
config.put(GCM_API_KEY, this.getConfigProperty(configuration, GCM_API_KEY));
|
||||
config.put(GCM_SENDER_ID, this.getConfigProperty(configuration, GCM_SENDER_ID));
|
||||
return new PushNotificationConfig(AndroidPluginConstants.NotifierType.GCM, config);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (DeviceManagementException e) {
|
||||
log.error("Unable to get the Android platform configuration from registry.");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getConfigProperty(List<ConfigurationEntry> configs, String propertyName) {
|
||||
for (ConfigurationEntry entry : configs) {
|
||||
if (propertyName.equals(entry.getName())) {
|
||||
return entry.getValue().toString();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ package org.wso2.carbon.device.mgt.mobile.android.impl.util;
|
||||
/**
|
||||
* Defines constants used by android plugin.
|
||||
*/
|
||||
public class AndroidPluginConstants {
|
||||
public final class AndroidPluginConstants {
|
||||
|
||||
//Properties related to AD_DEVICE table
|
||||
public static final String DEVICE_ID = "DEVICE_ID";
|
||||
@ -45,4 +45,12 @@ public class AndroidPluginConstants {
|
||||
public static final String ANDROID_FEATURE_NAME = "NAME";
|
||||
public static final String ANDROID_FEATURE_DESCRIPTION = "DESCRIPTION";
|
||||
|
||||
}
|
||||
public static final class NotifierType {
|
||||
private NotifierType() {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
public static final String GCM = "GCM";
|
||||
public static final String LOCAL = "LOCAL";
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user