Remote Configurationとは
パラメータをリモート(サーバー)に持たせることで、リモート側の変更のみで、新しいアプリをリリースせずに、アプリの見た目や動作を変更します。
Remote Configurationの使い方
前準備
(1) Huaweu Developerを登録します。
(2) AppGallery Connectでアプリのプロジェクトを登録します。
(3) keytoolで生成したSHA256をAppGallery Connectのアプリプロジェクトに登録します。
(4) agconnect-services.jsonをダウンロードし、appフォルダに配置します。
(5) "Remote Configuration"を開き、"Enable now"をクリックし、Remote Configurationを有効にします。
HMS SDKを導入
(1) プロジェクトのbuild.gradleを開き、mavenとclasspathを追加します。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = "1.3.72"
repositories {
google()
jcenter()
// こちらの行を追加
maven {url 'http://developer.huawei.com/repo/'}
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.1"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
// こちらの行を追加
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
}
allprojects {
repositories {
google()
jcenter()
// こちらの行を追加
maven { url 'http://developer.huawei.com/repo/' }
}
}
(2) モジュールのbuild.gradleを開き、次のようにを追加します。
plugins {
id 'com.android.application'
id 'kotlin-android'
// こちらの行を追加
id 'com.huawei.agconnect'
}
android {
// signingConfigsを追加
signingConfigs {
debug {
storePassword 'My password'
keyAlias 'My keyAlias'
keyPassword 'My password'
storeFile file('My keystore file.jks')
v1SigningEnabled true
v2SigningEnabled true
}
release {
storePassword 'My password'
keyAlias 'My keyAlias'
keyPassword 'My password'
storeFile file('My keystore file.jks')
v1SigningEnabled true
v2SigningEnabled true
}
}
buildTypes {
release {
// signingConfigを追加
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
// signingConfigを追加
signingConfig signingConfigs.debug
debuggable true
}
}
buildFeatures {
dataBinding true
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
// Remote Configurationのライブラリを追加
implementation 'com.huawei.agconnect:agconnect-remoteconfig:1.6.1.300'
// Analytics Kitのライブラリを追加
implementation 'com.huawei.hms:hianalytics:6.3.0.303'
}
コーディング
デフォルトのパラメータをXMLファイルに定義します。
パラメータの種類は主にboolean、double、long、stringがあります。
<remoteconfig>
<value key="boolean">true</value>
<value key="double">1234567890.12</value>
<value key="long">123456789012</value>
<value key="string">Text</value>
...
<value key="key5">value5</value>
<value key="key6">value6</value>
<value key="key7">value7</value>
<value key="key8">value8</value>
<value key="key9">value9</value>
</remoteconfig>
// 更新頻度
private val FETCH_INTERVAL = 60 * 5L
// Remote Configurationのオブジェクト
private val config = AGConnectConfig.getInstance()
override fun onCreate(savedInstanceState: Bundle?) {
...
// XMLに入れたデフォルト値をロードします。
config.applyDefault(R.xml.remote_config)
}
// リモートからパラメータをダウンロードし、適用します
private fun fetch() {
config.fetch(FETCH_INTERVAL).addOnSuccessListener {
config.apply(it)
applyConfigValue()
}.addOnFailureListener {
it.printStackTrace()
}
}
// 前回リモートからダウンロードした値を適用します
private fun loadConfig() {
config.apply(config.loadLastFetched())
applyConfigValue()
}
// パラメータを適用します
private fun applyConfigValue() {
viewModel.boolean.value = config.getValueAsBoolean("boolean")
viewModel.double.value = config.getValueAsDouble("double")
viewModel.long.value = config.getValueAsLong("long")
viewModel.string.value = config.getValueAsString("string")
}
注意:更新頻度の制限は端末ごとに1時間に20回までです。
リモート側の新パラメータの追加
(1) "Remote Configuration"に入り、"New parameter"をクリックします。
(2) キーを"Parameter"に入れ、値を"Default value"に入れます。
リモート側のパラメータの編集
GitHub
https://github.com/Rei2020GitHub/MyPublicProject/tree/master/RemoteConfigDemo
参考
- HMS:https://developer.huawei.com/consumer/jp/
- Remote Configurationの紹介:https://developer.huawei.com/consumer/jp/agconnect/remote-configuration
- Remote Configurationのドキュメント:https://developer.huawei.com/consumer/jp/doc/development/AppGallery-connect-Guides/agc-remoteconfig-introduction-0000001055149778
- Huawei Developers:https://forums.developer.huawei.com/forumPortal/en/home
- Facebook Huawei Developersグループ:https://www.facebook.com/Huaweidevs/