0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Remote Configurationとは

パラメータをリモート(サーバー)に持たせることで、リモート側の変更のみで、新しいアプリをリリースせずに、アプリの見た目や動作を変更します。

Remote Configurationの使い方

前準備

(1) Huaweu Developerを登録します。

(2) AppGallery Connectでアプリのプロジェクトを登録します。
image.png
image.png
image.png
image.png
image.png

(3) keytoolで生成したSHA256をAppGallery Connectのアプリプロジェクトに登録します。
image.png

(4) agconnect-services.jsonをダウンロードし、appフォルダに配置します。
image.png
image.png

(5) "Remote Configuration"を開き、"Enable now"をクリックし、Remote Configurationを有効にします。
image.png

HMS SDKを導入

(1) プロジェクトのbuild.gradleを開き、mavenとclasspathを追加します。
image.png

build.gradle
// 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を開き、次のようにを追加します。
image.png

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があります。

remote_config.xml
<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"をクリックします。
image.png

(2) キーを"Parameter"に入れ、値を"Default value"に入れます。
image.png

リモート側のパラメータの編集

対象パラメータの右上のメニューを開き、編集を行います。
image.png

GitHub

https://github.com/Rei2020GitHub/MyPublicProject/tree/master/RemoteConfigDemo

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?