SDK de cliente de configuración de apps para Android

El servicio App Configuration proporciona el SDK de cliente Android para integrarse con la aplicación Android escrita en el lenguaje de programación Kotlin o Java.

Requisitos previos

A continuación se muestran los requisitos previos para utilizar el SDK del servicio App Configuration para Android:

Integración del SDK del cliente para la app Android escrita en Kotlin

El servicio App Configuration proporciona el SDK de cliente de Android para integrarse con la aplicación Android. Puede evaluar los valores de su propiedad y distintivo de característica integrando el SDK.

  1. Instale el SDK utilizando una de las opciones siguientes:

    • Descargue e importe el paquete en el proyecto de Android Studio.
    • Obtenga el paquete a través de Gradle añadiendo:
      • Añada la dependencia de SDK de cliente de Android de App Configuration al archivo build.gradle a nivel de proyecto.

        repositories {
            mavenCentral()
        }
        
      • Añada la dependencia de SDK de cliente Android de App Configuration al archivo build.gradle a nivel de módulo.

        dependencies {
           implementation "com.ibm.cloud:appconfiguration-android-sdk:0.3.1"
        }
        
  2. Configure el archivo AndroidManifest.xml para el permiso de Internet.

    <uses-permission android:name="android.permission.INTERNET"/>
    
  3. Inicialice el SDK.

    import com.ibm.cloud.appconfiguration.android.sdk.AppConfiguration
    
    val collectionId = "airlines-webapp"
    val environmentId = "dev"
    
    val appConfigClient = AppConfiguration.getInstance()
    //application is a member of the AppCompatActivity() class, if you have inherited the
    //AppCompatActivity() class then you can call the application variable.
    appConfigClient.init(application,
                         "region",
                         "guid",
                         "apikey")
    appConfigClient.setContext(collectionId, environmentId)
    

    Donde:

    • region- Nombre de la región donde se crea la instancia del servicio App Configuration. Consulte aquí la lista de lugares compatibles. Por ejemplo: us-south, au-syd, etc.
    • guid: GUID del servicio App Configuration. Obténgalo de la sección de credenciales de servicio del panel de control.
    • apikey: Clave de API del servicio App Configuration. Obténgalo de la sección de credenciales de servicio del panel de control.
    • collectionId: Id de la recopilación creada en la instancia de servicio de App Configuration en la sección Recopilaciones.
    • environmentId: Id del entorno creado en la instancia de servicio Configuración de apps en la sección Entornos.
  4. Establecer escucha para los cambios de datos de características o propiedades

    appConfiguration.registerConfigurationUpdateListener(object : ConfigurationUpdateListener {
    
        override fun onConfigurationUpdate() {
            // ADD YOUR CODE
        }
    })
    

Ejemplos para utilizar API relacionadas con características y propiedades para la aplicación Android escrita en Kotlin

  • Obtener una única característica

    val feature: Feature? = appConfiguration.getFeature("featureId")
    
  • Obtener todas las características

    val features: HashMap<String, Feature>? = appConfiguration.getFeatures();
    
  • Evaluación de características

    Puede utilizar el método feature.getCurrentValue() para evaluar el valor del distintivo de característica. Pase un entityId exclusivo como parámetro para realizar la evaluación de distintivos de características. Si el distintivo de característica se configura con segmentos en el servicio App Configuration, puede establecer los valores de atributos como JSONObject.

    JSONObject entityAttributes = new JSONObject();
    try {
        entityAttributes.put("city", "Bangalore");
        entityAttributes.put("country", "India");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    
    val appConfiguration = AppConfiguration.getInstance()
    val feature: Feature? = appConfiguration.getFeature("featureId")
    
    if (feature?.getFeatureDataType() === Feature.FeatureType.NUMERIC) {
        val value = feature.getCurrentValue("entityId", entityAttributes)
    } else if (feature?.getFeatureDataType() === Feature.FeatureType.BOOLEAN) {
        val value = feature.getCurrentValue("entityId", entityAttributes)
    } else if (feature?.getFeatureDataType() === Feature.FeatureType.STRING) {
        val value = feature.getCurrentValue("entityId", entityAttributes)
    }
    
  • Obtener una única propiedad

    val property: Property? = appConfiguration.getProperty("propertyId")
    
  • Obtener todas las propiedades

    val properties: HashMap<String, Property>? = appConfiguration.getProperties();
    
  • Evaluación de propiedades

    Puede utilizar el método property.getCurrentValue() para evaluar el valor de la propiedad. Pase un entityId exclusivo como parámetro para realizar la evaluación de propiedades. Si la propiedad se configura con segmentos en el servicio App Configuration, puede establecer los valores de atributos como JSONObject.

    JSONObject entityAttributes = new JSONObject();
    try {
        entityAttributes.put("city", "Bangalore");
        entityAttributes.put("country", "India");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    
    val appConfiguration = AppConfiguration.getInstance()
    val property: Property? = appConfiguration.getProperty("propertyId")
    val value = property.getCurrentValue("entityId", entityAttributes)
    

Tipos de datos soportados

App Configuration configura el indicador de característica y las propiedades en los siguientes tipos de datos: Booleano, Numérico, Cadena. El tipo de datos String puede tener el formato de una cadena de texto, JSON o YAML. En consecuencia, el SDK procesa cada formato tal como se muestra en la Tabla 1.

Ejemplos de resultados
Valor de característica o propiedad Tipo de datos Formato de datos Tipo de datos devueltos por getCurrentValue() Salida de ejemplo
true BOOLEAN no aplicable java.lang.Boolean true
25 NUMERIC no aplicable java.lang.Integer 25
"un texto de serie" STRING TEXT java.lang.String a string text
{"firefox": {
"name": "Firefox",
"pref_url": "about:config"
}}
STRING JSON org.json.JSONObject {"firefox":{"name":"Firefox","pref_url":"about:config"}}
men:
- John Smith
- Bill Jones
women:
- Mary Smith
- Susan Williams
STRING YAML java.lang.String

`"men:

  • John Smith
  • Bill Jones\women:
  • Mary Smith
  • Susan Williams"`

Distintivo de característica

val feature: Feature? = appConfiguration.getFeature("json-feature")
feature.getFeatureDataType(); // STRING
feature.getFeatureDataFormat(); // JSON

// Example below (traversing the returned JSONObject)
if (feature != null) {
   val result = feature.getCurrentValue(entityId, entityAttributes) as JSONObject
   result.get("key") // returns the value of the key
}

val feature: Feature? = appConfiguration.getFeature("yaml-feature")
feature.getFeatureDataType(); // STRING
feature.getFeatureDataFormat(); // YAML
feature.getCurrentValue(entityId, entityAttributes); // returns the stringified yaml (check Table 1)

Propiedad

val property: Property? = appConfiguration.getProperty("json-property")
property.getPropertyDataType(); // STRING
property.getPropertyDataFormat(); // JSON

// Example below (traversing the returned JSONObject)
if (property != null) {
  val result = property.getCurrentValue(entityId, entityAttributes) as JSONObject
  result.get("key") // returns the value of the key
}

val property: Property? = appConfiguration.getProperty("yaml-property")
property.getPropertyDataType(); // STRING
property.getPropertyDataFormat(); // YAML
property.getCurrentValue(entityId, entityAttributes); // returns the stringified yaml (check above Table 1)
  • Forzar la obtención de las configuraciones del servidor.

    appConfiguration.fetchConfigurations()
    

Integración del SDK del cliente para la app Android escrita en Java

El servicio App Configuration proporciona el SDK de cliente de Android para integrarse con la aplicación Android. Puede evaluar los valores de su propiedad y distintivo de característica integrando el SDK.

  1. Instale el SDK utilizando una de las opciones siguientes:

    • Descargue e importe el paquete en el proyecto de Android Studio.
    • Obtenga el paquete a través de Gradle añadiendo:
      • Añada la dependencia de SDK de cliente de Android de App Configuration al archivo build.gradle a nivel de proyecto.

        repositories {
           mavenCentral()
        }
        
      • Añada la dependencia de SDK de cliente Android de App Configuration al archivo build.gradle a nivel de módulo.

        dependencies {
           implementation "com.ibm.cloud:appconfiguration-android-sdk:0.3.1"
        }
        
  2. Configure el archivo AndroidManifest.xml para el permiso de Internet.

    <uses-permission android:name="android.permission.INTERNET"/>
    
  3. Integre Kotlin en su proyecto Java con estos pasos:

    • Añada el plug-in de Kotlin Gradle al nivel de módulo build.gradle

      dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      }
      
    • Añada el plugin kotlin-android al nivel de app build.gradle

      plugins {
         id 'com.android.application'
         id 'kotlin-android'
      }
      
  4. Inicialice el SDK.

    AppConfiguration appConfiguration = AppConfiguration.getInstance();
    appConfiguration.init(getApplication(), "region", "guid", "apikey");
    
    // To start the configuration fetching operation, set the collectionId in the following way.
    appConfiguration.setContext("collectionId", "environmentId");
    

    Donde:

    • region: nombre de región donde se crea la instancia de servicio. Utilice AppConfiguration.REGION_US_SOUTH para Dallas, AppConfiguration.REGION_US_EAST para Washington DC, AppConfiguration.REGION_EU_GB para Londres y AppConfiguration.REGION_AU_SYD para Sídney.
    • guid: GUID del servicio App Configuration. Obténgalo de la sección de credenciales de servicio del panel de control.
    • apikey: Clave de API del servicio App Configuration. Obténgalo de la sección de credenciales de servicio del panel de control.
    • collectionId: Id de la recopilación creada en la instancia de servicio de App Configuration.
    • environmentId- ID del entorno creado en la instancia de servicio de App Configuration en la sección Entornos.
  5. Escuchar los cambios de características

    appConfiguration.registerConfigurationUpdateListener(new ConfigurationUpdateListener() {
        @Override
        public void onConfigurationUpdate() {
           // ADD YOUR CODE
        }
    });
    

Ejemplos de uso de API relacionadas con propiedades y características para aplicaciones Android escritas en Java

Consulte los ejemplos para utilizar las API relacionadas con características y propiedades.

  • Obtener una única característica

    Feature feature = appConfiguration.getFeature("featureId");
    
  • Obtener todas las características

    HashMap<String,Feature> features =  appConfiguration.getFeatures();
    
  • Evaluación de características

    Puede utilizar el método feature.getCurrentValue() para evaluar el valor del distintivo de característica. Pase un entityId exclusivo como parámetro para realizar la evaluación de distintivos de características. Si el distintivo de característica se configura con segmentos en el servicio App Configuration, puede establecer los valores de atributos como JSONObject.

    JSONObject entityAttributes = new JSONObject();
    
    try {
        entityAttributes.put("city", "Bengaluru");
        entityAttributes.put("country", "India");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    
    AppConfiguration appConfiguration = AppConfiguration.getInstance();
    Feature feature = appConfiguration.getFeature("featureId")
    if(feature != null)
        switch (feature.getFeatureDataType())
            case STRING:
                String value = (String) feature.getCurrentValue(entityId, entityAttributes);
                System.out.println(value);
                break;
            case BOOLEAN:
                Boolean boolVal = (Boolean) feature.getCurrentValue(entityId, entityAttributes);
                System.out.println(boolVal);
                break;
            case NUMERIC:
                Integer intVal = (Integer) feature.getCurrentValue(entityId, entityAttributes);
                System.out.println(intVal);
                break;
        }
    }
    
  • Obtener una única propiedad

    Property property = appConfiguration.getProperty("propertyId");
    
  • Obtener todas las propiedades

    HashMap<String,Property> properties =  appConfiguration.getProperties();
    
  • Evaluación de propiedades

    Puede utilizar el método property.getCurrentValue() para evaluar el valor de la propiedad. Pase un entityId exclusivo como parámetro para realizar la evaluación de propiedades. Si la propiedad se configura con segmentos en el servicio App Configuration, puede establecer los valores de atributos como JSONObject.

    JSONObject entityAttributes = new JSONObject();
    
    try {
        entityAttributes.put("city", "Bengaluru");
        entityAttributes.put("country", "India");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    
    AppConfiguration appConfiguration = AppConfiguration.getInstance();
    Property property = appConfiguration.getProperty("propertyId");
    String value = (String) property.getCurrentValue(entityId, entityAttributes);
    

Tipos de datos soportados

App Configuration configura el indicador de característica y las propiedades en los siguientes tipos de datos: Booleano, Numérico, Cadena. El tipo de datos Serie puede tener el formato de una serie de texto, JSON o YAML. El SDK procesa cada formato en consecuencia, como se muestra en la Tabla 1.

Distintivo de característica

Feature feature = appConfiguration.getFeature("json-feature");
feature.getFeatureDataType(); // STRING
feature.getFeatureDataFormat(); // JSON

// Example below (traversing the returned JSONObject)
if (feature != null) {
  JSONObject result = (JSONObject) feature.getCurrentValue(entityId, entityAttributes);
  result.get("key") // returns the value of the key
}

Feature feature = appConfiguration.getFeature("yaml-feature");
feature.getFeatureDataType(); // STRING
feature.getFeatureDataFormat(); // YAML
feature.getCurrentValue(entityId, entityAttributes); // returns the stringified yaml (check above Table 1)

Propiedad

Property property = appConfiguration.getProperty("json-property");
property.getPropertyDataType(); // STRING
property.getPropertyDataFormat(); // JSON

// Example below (traversing the returned JSONObject)
if (property != null) {
  JSONObject result = (JSONObject) property.getCurrentValue(entityId, entityAttributes);
  result.get("key") // returns the value of the key
}

Property property = appConfiguration.getProperty("yaml-property");
property.getPropertyDataType(); // STRING
property.getPropertyDataFormat(); // YAML
property.getCurrentValue(entityId, entityAttributes); // returns the stringified yaml (check Table 1)
  • Forzar la obtención de las configuraciones del servidor.

    appConfiguration.fetchConfigurations()