快速集成远程配置服务-HarmonyOS

AppGallery Connect远程配置服务提供云端服务、管理台和客户端SDK,应用集成客户端SDK后可以周期性的获取远程配置管理台配置的参数值,实现客户端应用的行为和UI的修改。

集成内容

通过HarmonyOS SDK插件集成远程配置服务,将建立一个能够使用AppGallery Connect远程配置服务控制文本配置的应用,您的应用程序将包含:文本能够根据远程配置参数改变文字语言、文字加粗状态、根据当前系统的语言自动展示中文欢迎语或英文欢迎语。

集成准备

1、安装DevEco Studio开发工具,并熟悉HarmonyOS应用的开发流程

2、AGC创建工程并开通服务。

a)在AGC创建HarmonyOS应用并开通远程配置服务。

选择“增长 > 远程配置”,点击“立即使用”。

  b)选择“配置条件管理”页签,点击“添加配置条件”, 在“配置条件名称”栏输入条件名称,例如“Diff_Lang_CN”,“添加过滤条件”选择“语言 > 中文简体”,完成后点击“保存配置条件”, 使用相同的方法添加语言为英语的条件名称,例如“Diff_Lang_EN”,“过滤条件”选择“语言”,语言选择“英语(en)”。两种条件都配置完成后,点击“发布”。

     c)选择“配置项管理”页签,点击“添加配置项”, 在“配置项名称”栏根据提前设计的“GREETING_KEY”参数名填写“配置项名称”。在“默认值”栏填写一个默认值,例如“Greeting, CodeLaber”,在“添加条件下的配置项值”中分别选择语言条件“Diff_Lang_CN”和 “Diff_Lang_EN”。配置分别满足“Diff_Lang_CN”和“Diff_Lang_EN”条件时GREETING_KEY参数的值,分别为中文和英文的文本。配置完成后,点击 “保存配置项”;

点击“添加配置项”添加SET_BOLD_KEY参数。默认值为“false”,中文条件值设成“true”,英文条件值设成“false”,表示设备语言为中文时字体加粗,设备语言为英文时字体不加粗。配置完成后,点击 “保存配置项”;

配置项添加完成后点击“发布”。

3、DevEco Studio中创建HarmonyOS工程

   a)打开IDE工具,选择File-New-New project,选择Java语言编译模板后,点击Next进入创建工程配置界面。

注意选择应用(Application),包名和AGC创建的应用包名相同。

   b)将agconnect-services.json文件拷贝到项目的entry模块的目录下。

    c)配置Maven仓地址和AGC插件地址。

打开DevEco Studio项目级build.gradle文件。

在allprojects ->repositories里面配置maven仓地址。

在buildscript->repositories中配置maven仓地址。

在buildscript->dependencies中配置AppGallery Connect插件地址。

​
buildscript {
    repositories {
        maven {
            url 'https://repo.huaweicloud.com/repository/maven/'
        }
        maven {
            url 'https://developer.huawei.com/repo/'
        }
        jcenter()
    }
    dependencies {
        classpath 'com.huawei.ohos:hap:2.4.4.2'
        classpath 'com.huawei.ohos:decctest:1.2.4.0'
        classpath 'com.huawei.agconnect:agcp-harmony:1.2.0.200'
    }
}

allprojects {
    repositories {
        maven {
            url 'https://repo.huaweicloud.com/repository/maven/'
        }
        maven {
            url 'https://developer.huawei.com/repo/'
        }
        jcenter()
    }
}

d)添加编译依赖和集成SDK。

在“dependencies”中添加添加agconnect-core的编译依赖和remoteconfig SDK。

​
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
    testImplementation 'junit:junit:4.13'
    ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100'
    implementation "com.huawei.agconnect:agconnect-remoteconfig-harmony:1.2.0.300"
}

e)entry (hap)模块添加配置信息

entry模块的config.json文件的module/abilities中,加入如下配置,注意包名的替换(com.huawei.agconnect.remoteconfig为包名)。

​
{
  "permissions": [
    "com.huawei.agconnect.core.DataAbilityShellProvider.PROVIDER"
  ],
  "name": "com.huawei.agconnect.core.provider.AGConnectInitializeAbility",
  "type": "data",
  "uri": "dataability://com.huawei.agconnect.remoteconfig.AGConnectInitializeAbility"
}

f)同步工程配置

4、配置签名信息

Harmony应用安装到真机进行测试,需要配置签名信息,有手动签名和自动签名两种方式,具体可以参见:配置签名信息。建议优先使用自动签名方式,如自动签名失败,可以选择手动签名方式。

这里使用自动签名方式:

a)连接真机设备,确保DevEco Studio与真机设备已连接,真机连接成功后如下图所示

b)进入File > Project Structure > Project > Signing Configs界面,点击“Sign In”按钮进行登录,选择Debug,勾选Automatically generate signing,点击try again即可自动进行签名。自动生成签名所需的密钥(.p12)、数字证书(.cer)和Profile文件(.p7b)会存放到用户user目录下的.ohos\config目录下。

设置完签名信息后,点击OK进行保存,然后可以在工程下的build.gradle中查看签名的配置信息。

登录AGC,进入“用户与访问”-“证书管理”,点击新增证书,上传前面生成的.csr文件,类型选择调试证书。完成签名配置后即可点击安装应用到调试设备。

功能实现

布局设计

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

布局代码如下:

​
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:alignment="center"
    ohos:orientation="vertical">

    <Text
        ohos:id="$+id:greeting"
        ohos:text="Greeting CodeLaber"
        ohos:layout_alignment="horizontal_center"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:top_margin="100"
        ohos:left_margin="60"
        ohos:right_margin="60"
        ohos:multiple_lines="true"
        ohos:text_color="#ff888888"
        ohos:text_size="100"
        />

    <Button
        ohos:id="$+id:fetch_button"
        ohos:text="Get Online config"
        ohos:background_element="$graphic:background_ability_main"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:top_margin="20"
        ohos:left_margin="60"
        ohos:right_margin="60"
        ohos:multiple_lines="true"
        ohos:text_size="100"
        />
</DirectionalLayout>

设计远程配置参数

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

     GREETING_KEY:欢迎语的文本。

     SET_BOLD_KEY:是否加粗,“true”为加粗,“false”为不加粗。

2、应用启动时需要加载默认配置,建议您可以使用设置本地默认值的方式,在本地工程的“resources/base”目录中新建1个xml文件,在文件中设置各配置参数的默认值。 例如文件remote_config.xml。

开发远程配置功能

1、引入相关类。

​
import com.huawei.agconnect.remoteconfig.AGConnectConfig;
import com.huawei.agconnect.remoteconfig.ConfigValues;
import com.huawei.agconnect.remoteconfig.ResourceTable;
import com.huawei.hmf.tasks.OnFailureListener;
import com.huawei.hmf.tasks.OnSuccessListener;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.Text;
import ohos.agp.text.Font;

2、声明所需要的参数,包括配置项参数、远程配置服务实例等。

​
private static final String GREETING_KEY = "GREETING_KEY";
private static final String SET_BOLD_KEY = "SET_BOLD_KEY";
private AGConnectConfig config;
private Text text;

3、在onStart方法定义相关界面元素。

​
super.setUIContent(ResourceTable.Layout_ability_main);
text = (Text) findComponentById(ResourceTable.Id_greeting);
Button button = (Button) findComponentById(ResourceTable.Id_fetch_button);

4、初始化远程配置对象实例。

​
config = AGConnectConfig.getInstance();

5、将本地默认配置设置为当前应用配置。

​
config.applyDefault(ResourceTable.Profile_remote_config);
text.setText(config.getValueAsString(GREETING_KEY));
Boolean isBold = config.getValueAsBoolean(SET_BOLD_KEY);
if (isBold){
    text.setFont(Font.DEFAULT_BOLD);
}

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

​
button.setClickedListener(new Component.ClickedListener() {
      @Override
      public void onClick(Component component) {
            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) {
            text.setText("fetch setting failed: " + e.getMessage());
        }
    });
}

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

​
private void updateUI(){
    String greeting = config.getValueAsString(GREETING_KEY);
    Boolean isBold = config.getValueAsBoolean(SET_BOLD_KEY);
    text.setText(greeting);
    if (isBold){
        text.setFont(Font.DEFAULT_BOLD);
    }
}

功能测试

完成上述配置以后,即可点击运行进行测试。点击“Get Online config”按钮,欢迎语的文字内容发生变化。

欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4478396/blog/5552955