SDK du client App Configuration pour Android

Le service App Configuration fournit un kit de développement de logiciels client Android à intégrer à votre application Android qui est écrite dans le langage de programmation Kotlin ou Java.

Prérequis

Vous trouverez ci-dessous les prérequis de l'utilisation du SDK du service App Configuration pour Android :

Intégration du SDK client pour l'application Android écrite en Kotlin

Le service App Configuration fournit un SDK client Android à intégrer à votre application Android. Vous pouvez évaluer les valeurs de votre propriété et de votre indicateur de fonctionnalité en intégrant ce SDK.

  1. Installez le kit de développement de logiciels à l'aide de l'une des options suivantes :

    • Téléchargez et importez le package dans votre projet Android Studio.
    • Récupère le module via Gradle en ajoutant :
      • Ajoutez la dépendance du SDK client Android d'App Configuration au fichier build.gradle de niveau projet.

        repositories {
            mavenCentral()
        }
        
      • Ajoutez la dépendance du SDK client Android d'App Configuration au fichier build.gradle de niveau module.

        dependencies {
           implementation "com.ibm.cloud:appconfiguration-android-sdk:0.3.1"
        }
        
  2. Configurez le fichier AndroidManifest.xml pour obtenir les droits Internet.

    <uses-permission android:name="android.permission.INTERNET"/>
    
  3. Initialisez le kit de développement de logiciels.

    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)
    

    Où :

    • region- Nom de la région où l'instance de service App Configuration est créée. Voir la liste des lieux pris en charge ici. Par exemple : us-south, au-syd etc.
    • guid correspond à l'identificateur global unique du service App Configuration. Obtenez-le à partir de la section des données d'identification du service du tableau de bord.
    • apikey correspond à la clé d'API du service App Configuration. Obtenez-le à partir de la section des données d'identification du service du tableau de bord.
    • collectionId - ID de la collection créée dans l'instance de service App Configuration sous la section Collections.
    • environmentId correspond à l'ID de l'environnement créé dans l'instance de service App Configuration sous la section Environnements.
  4. Définissez un programme d'écoute des modifications de données de fonctionnalité ou de propriété

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

Exemples d'utilisation des API de propriété et de fonction pour l'application Android écrite en langage Kotlin

  • Extraction d'une fonctionnalité

    val feature: Feature? = appConfiguration.getFeature("featureId")
    
  • Extraction de toutes les fonctionnalités

    val features: HashMap<String, Feature>? = appConfiguration.getFeatures();
    
  • Evaluation des fonctionnalités

    Vous pouvez utiliser la méthode feature.getCurrentValue() pour évaluer la valeur de l'indicateur de fonctionnalité. Transmettez un entityId unique en tant que paramètre pour effectuer l'évaluation de l'indicateur de fonction. Si cet indicateur est configuré avec des segments dans le service App Configuration, vous pouvez définir les valeurs des attributs sous forme d'objet 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)
    }
    
  • Extraction d'une propriété

    val property: Property? = appConfiguration.getProperty("propertyId")
    
  • Extraction de toutes les propriétés

    val properties: HashMap<String, Property>? = appConfiguration.getProperties();
    
  • Evaluation des propriétés

    Vous pouvez utiliser la méthode property.getCurrentValue() pour évaluer la valeur de la propriété. Transmettez une valeur entityId unique en tant que paramètre pour effectuer l'évaluation des propriétés. Si la propriété est configurée avec des segments dans le service App Configuration, vous pouvez définir les valeurs des attributs sous forme d'objet 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)
    

Types de données pris en charge

App Configuration configure le drapeau et les propriétés de l'élément dans les types de données suivants : Booléen, Numérique, Chaîne. Le type de données String peut être une chaîne de texte, JSON ou YAML. En conséquence, le SDK traite chaque format comme indiqué dans le tableau 1.

Exemples de résultats
Valeur de la fonction ou de la propriété Type de données Format de données Type de données renvoyées par getCurrentValue() Exemple de sortie
true BOOLEAN non applicable java.lang.Boolean true
25 NUMERIC non applicable java.lang.Integer 25
"a string text" CHAINE TEXT java.lang.String a string text
{"firefox": {
"name": "Firefox",
"pref_url": "about:config"
} }
CHAINE JSON org.json.JSONObject {"firefox":{"name":"Firefox","pref_url":"about:config"}}
men:
- John Smith
- Bill Jones
women:
- Mary Smith
- Susan Williams
CHAINE YAML java.lang.String

`"men:

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

Indicateur de fonction

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)

Propriété

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)
  • Forcez l'extraction des configurations à partir du serveur.

    appConfiguration.fetchConfigurations()
    

Intégration du SDK client pour l'application Android écrite en Java

Le service App Configuration fournit un SDK client Android à intégrer à votre application Android. Vous pouvez évaluer les valeurs de votre propriété et de votre indicateur de fonctionnalité en intégrant ce SDK.

  1. Installez le kit de développement de logiciels à l'aide de l'une des options suivantes :

    • Téléchargez et importez le package dans votre projet Android Studio.
    • Obtenez le package via Gradle en ajoutant :
      • Ajoutez la dépendance du SDK client Android d'App Configuration au fichier build.gradle de niveau projet.

        repositories {
           mavenCentral()
        }
        
      • Ajoutez la dépendance du SDK client Android d'App Configuration au fichier build.gradle de niveau module.

        dependencies {
           implementation "com.ibm.cloud:appconfiguration-android-sdk:0.3.1"
        }
        
  2. Configurez le fichier AndroidManifest.xml pour obtenir les droits Internet.

    <uses-permission android:name="android.permission.INTERNET"/>
    
  3. Intégrez Kotlin à votre projet Java, à l'aide de la procédure suivante :

    • Ajoutez le plug-in Kotlin Gradle au niveau de module build.gradle

      dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      }
      
    • Ajoutez le plug-in kotlin-android au fichier build.gradle de niveau application

      plugins {
         id 'com.android.application'
         id 'kotlin-android'
      }
      
  4. Initialisez le kit de développement de logiciels.

    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");
    

    Où :

    • region correspond au nom de la région dans laquelle l'instance de service est créée. Utilisez AppConfiguration.REGION_US_SOUTHpour Dallas, AppConfiguration.REGION_US_EASTpour Washington DC, AppConfiguration.REGION_EU_GBpour Londres et AppConfiguration.REGION_AU_SYD pour Sydney.
    • guid correspond à l'identificateur global unique du service App Configuration. Obtenez-le à partir de la section des données d'identification du service du tableau de bord.
    • apikey correspond à la clé d'API du service App Configuration. Obtenez-le à partir de la section des données d'identification du service du tableau de bord.
    • collectionId correspond à l'ID de la collection créée dans l'instance de service App Configuration.
    • environmentId- ID de l'environnement créé dans l'instance de service App Configuration sous la section Environnements.
  5. Ecoute des modifications apportées aux fonctionnalités

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

Exemples d'utilisation des API liées aux propriétés et aux fonctionnalités pour les applications Android écrites en Java

Reportez-vous aux exemples pour l'utilisation des API de propriété et de fonction.

  • Extraction d'une fonctionnalité

    Feature feature = appConfiguration.getFeature("featureId");
    
  • Extraction de toutes les fonctionnalités

    HashMap<String,Feature> features =  appConfiguration.getFeatures();
    
  • Evaluation des fonctionnalités

    Vous pouvez utiliser la méthode feature.getCurrentValue() pour évaluer la valeur de l'indicateur de fonctionnalité. Transmettez un entityId unique en tant que paramètre pour effectuer l'évaluation de l'indicateur de fonction. Si cet indicateur est configuré avec des segments dans le service App Configuration, vous pouvez définir les valeurs des attributs sous forme d'objet 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;
        }
    }
    
  • Extraction d'une propriété

    Property property = appConfiguration.getProperty("propertyId");
    
  • Extraction de toutes les propriétés

    HashMap<String,Property> properties =  appConfiguration.getProperties();
    
  • Evaluation des propriétés

    Vous pouvez utiliser la méthode property.getCurrentValue() pour évaluer la valeur de la propriété. Transmettez une valeur entityId unique en tant que paramètre pour effectuer l'évaluation des propriétés. Si la propriété est configurée avec des segments dans le service App Configuration, vous pouvez définir les valeurs des attributs sous forme d'objet 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);
    

Types de données pris en charge

App Configuration configure le drapeau et les propriétés de l'élément dans les types de données suivants : Booléen, Numérique, Chaîne. Le type de données Chaîne peut être le format d'une chaîne TEXT, JSON ou YAML. Le SDK traite chaque format en conséquence, comme le montre le tableau 1.

indicateur de fonctionnalité

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)

Propriété

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)
  • Forcez l'extraction des configurations à partir du serveur.

    appConfiguration.fetchConfigurations()