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 :
- API Android niveau 22 ou ultérieur
- Android Studio
- Gradle
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.
-
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.gradlede niveau projet.repositories { mavenCentral() } -
Ajoutez la dépendance du SDK client Android d'App Configuration au fichier
build.gradlede niveau module.dependencies { implementation "com.ibm.cloud:appconfiguration-android-sdk:0.3.1" }
-
-
Configurez le fichier
AndroidManifest.xmlpour obtenir les droits Internet.<uses-permission android:name="android.permission.INTERNET"/> -
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-sydetc.guidcorrespond à 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.apikeycorrespond à 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.environmentIdcorrespond à l'ID de l'environnement créé dans l'instance de service App Configuration sous la section Environnements.
-
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 unentityIdunique 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 valeurentityIdunique 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.
| 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 Joneswomen:- Mary Smith- Susan Williams |
CHAINE | YAML | java.lang.String |
`"men:
|
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.
-
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.gradlede niveau projet.repositories { mavenCentral() } -
Ajoutez la dépendance du SDK client Android d'App Configuration au fichier
build.gradlede niveau module.dependencies { implementation "com.ibm.cloud:appconfiguration-android-sdk:0.3.1" }
-
-
Configurez le fichier
AndroidManifest.xmlpour obtenir les droits Internet.<uses-permission android:name="android.permission.INTERNET"/> -
Intégrez Kotlin à votre projet Java, à l'aide de la procédure suivante :
-
Ajoutez le plug-in Kotlin Gradle au niveau de module
build.gradledependencies { classpath "com.android.tools.build:gradle:4.1.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } -
Ajoutez le plug-in
kotlin-androidau fichierbuild.gradlede niveau applicationplugins { id 'com.android.application' id 'kotlin-android' }
-
-
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ù :
regioncorrespond au nom de la région dans laquelle l'instance de service est créée. UtilisezAppConfiguration.REGION_US_SOUTHpour Dallas,AppConfiguration.REGION_US_EASTpour Washington DC,AppConfiguration.REGION_EU_GBpour Londres etAppConfiguration.REGION_AU_SYDpour Sydney.guidcorrespond à 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.apikeycorrespond à 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.collectionIdcorrespond à 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.
-
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 unentityIdunique 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 valeurentityIdunique 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()