什么是AppGallery Connect远程配置服务?

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

您将建立什么?

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

您将会学到什么

您需要什么?

开发环境及技能要求:

运行终端要求:

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

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

开通远程配置服务

  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文件。
  5. 在对应位置配置agconnect-core和华为远程配置服务地址。
    //配置如下地址 apply plugin: 'com.huawei.agconnect' dependencies { //配置如下地址 implementation 'com.huawei.agconnect:agconnect-core:1.0.0.300' implementation 'com.huawei.agconnect:agconnect-remoteconfig:1.0.1.301' }
  6. 点击界面上的"Sync Now"链接同步已完成的配置。

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

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

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

<?xml version="1.0" encoding="utf-8"?> <resources> <value key="GREETING_KEY">Greeting, CodeLaber</value> <value key="SET_BOLD_KEY">false</value> <value key="IMAGE_URL_KEY"></value> </resources>

其中图片使用本地图片。

  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"。
  8. 配置分别满足"Diff_Lang_CN"和"Diff_Lang_EN"条件时GREETING_KEY参数的值,分别为中文和英文的文本。
  9. 继续点击"添加参数"添加SET_BOLD_KEY参数。中文条件值设成"true",英文条件值设成"false",表示设备语言为中文时字体加粗,设备语言为英文时字体不加粗。
  10. 继续点击"添加参数"添加IMAGE_URL_KEY参数。不设条件值,默认值设为一个可访问的网络图片的URL。
  11. 参数添加完成后点击"发布"。

步骤1 引入相关类。

package com.huawei.remotecontrol.huawei; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Typeface; import android.os.Bundle; import android.os.StrictMode; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; 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; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL;

步骤2 在onCreate方法定义相关界面元素。

setContentView(R.layout.activity_main); textView = findViewById(R.id.greeting); imageView = findViewById(R.id.imageView); Button button = findViewById(R.id.fetch_button);

步骤3 初始化远程配置对象实例。

config = AGConnectConfig.getInstance();

步骤4 将本地默认配置设置为当前应用配置。

config.applyDefault(R.xml.default_config); textView.setText(config.getString(GREETING_KEY)); imageView.setImageDrawable(getDrawable(R.drawable.huawei_logo_1)); if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); }

步骤5 当点击按钮时触发获取远程配置参数值到应用配置的fetchAndApply方法。

button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { fetchAndApply(); } });

fetchAndApply方法定义如下:

private void fetchAndApply() { config.fetch(0).addOnSuccessListener(new OnSuccessListener<ConfigValues>() { @Override public void onSuccess(ConfigValues configValues) { // 将网络配置应用到当前配置 config.apply(configValues); updateUI(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { textView.setText("fetch setting failed: " + e.getMessage()); } }); }

步骤6 在updateUI方法中获取配置中的参数值并加载到页面元素。

private void updateUI() { String text = config.getString(GREETING_KEY); Boolean isBold = config.getBoolean(SET_BOLD_KEY); textView.setText(text); String imageUrl = config.getString(IMAGE_URL_KEY); Log.i(TAG, "image url: " + imageUrl); Bitmap bitmap = getBitmap(imageUrl); imageView.setImageBitmap(bitmap); if (isBold){ textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); } }

从图片url获取网络图片的getBitmap方法定义如下

public Bitmap getBitmap(String imageURL) { try { URL url = new URL(imageURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); if (conn.getResponseCode() == 200) { InputStream inputStream = conn.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } catch (IOException e) { // TODO Auto-generated catch block Log.e(TAG, "bitmap error, " + e.getMessage()); } return null; }
  1. 运行Android Studio工程生成APK包,并在测试手机中安装APK包。
  2. 查看初始化后的页面。
  3. 点击"获取网络配置"按钮,欢迎语的文字和欢迎图片发生变化。

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

源码下载

已复制代码