什么是AppGallery Connect远程配置服务

AppGallery Connect远程配置服务提供了在线的配置参数管理能力,可以实现应用在线更改行为和外观,而无需用户下载应用更新。
AppGallery Connect远程配置服务提供云端服务,管理台和客户端SDK,应用集成客户端SDK后可以定期获取远程配置管理台配置下发的参数值,实现客户端行为和UI的修改。

您将建立什么

在本次Codelab中,您将建立一个能够使用AppGallery Connect远程配置服务控制文本配置的应用,您的应用程序将包含:

您将会学到什么

开发环境及技能要求

运行终端要求

集成AppGallery Connect远程配置服务,需要完成以下准备工作

具体操作,请按照《AppGallery Connect集成准备》中详细说明来完成。

开通远程配置服务

  1. 在AppGallery Connect页面点击"我的项目",在项目的应用列表中选择您需要开通远程配置的应用,点击"增长 > 远程配置"。如果您为首次使用远程配置服务,请点击"立即开通"开通服务。
  2. 如果产品数据存储位置未设置,需要选择该产品的数据存储位置,具体操作请参见设置数据存储位置

集成SDK

针对Android Studio开发环境,华为提供了maven仓集成方式的SDK包,开发前需集成SDK到您的Android Studio项目中。

  1. 在AppGallery Connect页面点击"我的项目",在项目下的应用列表中选择您需要开通远程配置的应用。
  2. 在项目设置的"常规"页签下,点击"应用"栏下的"agconnect-services.json"下载配置文件。
  3. 将"agconnect-services.json"文件拷贝到应用级根目录下。
  4. 打开Android Studio应用级build.gradle文件,在对应位置配置华为远程配置服务地址。
    //配置如下地址 apply plugin: 'com.huawei.agconnect' dependencies { //配置如下地址 implementation 'com.huawei.agconnect:agconnect-remoteconfig:1.6.5.300' }
  5. 点击界面上的"Sync Now"链接同步已完成的配置。

本次Codelab中您可以在Android Studio工程中创建一个布局页面,参照下图进行UI设计,新增一个简单的文本和一个用于获取远程配置参数的按钮。

布局代码如下:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/greeting" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Greeting CodeLaber" android:textSize="30sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.3" /> <Button android:id="@+id/fetch_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Get Online config" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.6" /> </androidx.constraintlayout.widget.ConstraintLayout>

由于应用需要实现的功能是通过点击按钮替换欢迎语的文字、以及加粗状态,我们可以设计以下2个参数。

当应用启动时需要加载默认配置,在本次Codelab中我们使用设置本地默认值的方式,在本地工程的"res/xml"目录中新建1个xml文件,在文件中设置各配置参数的默认值。 例如文件remote_config.xml

<?xml version="1.0" encoding="utf-8"?> <remoteconfig> <value key="GREETING_KEY">Greeting, CodeLaber</value> <value key="SET_BOLD_KEY">false</value> </remoteconfig>
  1. 在AppGallery Connect页面点击"我的项目",在项目下的应用列表中选择您的应用,在导航栏选择"增长 > 远程配置"。
  2. 选择"配置条件管理"页签,点击"添加配置条件"。
  3. 在"配置条件名称"栏输入语言为"中文"的条件名称,例如"Diff_Lang_CN","添加过滤条件"选择"语言",并在后面选择"中文简体",完成后点击"保存配置条件"。
  4. 使用相同的方法添加语言为英文的条件名称,例如"Diff_Lang_EN","过滤条件"选择"语言",语言选择"英语(en)"。配置完成后,点击"发布"。
  5. 选择"配置项管理"页签,点击"添加配置项"。
  6. 在"配置项名称"栏根据提前设计的参数名配置参数名,例如"GREETING_KEY"。在"默认值"栏填写一个默认值,例如"Greeting, CodeLaber"。
  7. 在"添加条件下的配置项值"中分别选择语言条件"Diff_Lang_CN"和 "Diff_Lang_EN"。配置分别满足"Diff_Lang_CN"和"Diff_Lang_EN"条件时GREETING_KEY参数的值,分别为中文和英文的文本。配置完成后,点击 "保存配置项"。
  8. 继续点击"添加配置项"添加SET_BOLD_KEY参数。默认值为"false",中文条件值设成"true",英文条件值设成"false",表示设备语言为中文时字体加粗,设备语言为英文时字体不加粗。配置完成后,点击 "保存配置项"。
  9. 参数添加完成后点击"发布"。
  1. 引入相关类。
    import androidx.appcompat.app.AppCompatActivity; import android.graphics.Typeface; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.huawei.agconnect.remoteconfig.AGConnectConfig; import com.huawei.agconnect.remoteconfig.ConfigValues; import com.huawei.hmf.tasks.OnFailureListener; import com.huawei.hmf.tasks.OnSuccessListener;
  2. 声明所需要的参数。
    private static final String GREETING_KEY = "GREETING_KEY"; private static final String SET_BOLD_KEY = "SET_BOLD_KEY"; private AGConnectConfig config; private TextView textView;
  3. onCreate方法定义相关界面元素。
    setContentView(R.layout.activity_main); textView = findViewById(R.id.greeting); Button button = findViewById(R.id.fetch_button); config = AGConnectConfig.getInstance();
  4. 初始化远程配置对象实例。
    config = AGConnectConfig.getInstance();
  5. 将本地默认配置设置为当前应用配置。
    config.applyDefault(R.xml.remote_config); textView.setText(config.getValueAsString(GREETING_KEY)); Boolean isBold = config.getValueAsBoolean(SET_BOLD_KEY); if (isBold){ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); }
  6. 当点击按钮时触发获取远程配置参数值到应用配置的fetchAndApply方法。
    button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { fetchAndApply(); } });
  7. fetchAndApply方法定义如下:

    private void fetchAndApply(){ config.fetch(0).addOnSuccessListener(new OnSuccessListener<ConfigValues>() { @Override public void onSuccess(ConfigValues configValues) { // Apply Network Config to Current Config config.apply(configValues); updateUI(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { textView.setText("fetch setting failed: " + e.getMessage()); } }); }
  8. updateUI方法中获取配置中的参数值并加载到页面元素。
    private void updateUI(){ String text = config.getValueAsString(GREETING_KEY); Boolean isBold = config.getValueAsBoolean(SET_BOLD_KEY); textView.setText(text); if (isBold){ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); } }
  1. 运行Android Studio工程生成APK包,并在测试手机中安装APK包。
  2. 查看初始化后的页面。
  3. 点击"获取网络配置"按钮,欢迎语的文字内容发生变化。

祝贺您,您已经成功地构建了您的第一个集成AppGallery Connect远程配置服务的应用程序,并学到了:

本Codelab中所用demo源码下载地址如下:

源码下载

已复制代码