金義博 發表於 2022-2-28 17:27:00

快速集成华为 AGConnect 远程配置服务 - Android

<p style="font-weight: 400">华为 AppGallery Connect 提供了一个远程配置的服务。通过远程配置,应用即可无需升级,也可以在云端灵活修改应用的行为和外观,从而快速响应用户的需求。今天就来教大家如何接入 AppGallery Connect 的远程配置服务。</p>
<h3>1、在 AGC 上开通远程配置并创建配置项:</h3>
<p style="font-weight: 400">在<strong>我的项目</strong><strong>&nbsp;</strong>下选择你的开发项目,在<strong>增长</strong>下面,找到<strong>远程配置</strong>服务,点击开通:</p>
<p style="font-weight: 400">没有 Android 项目的话,可以先自己创建一个。</p>
<p style="font-weight: 400"><img src="https://img2022.cnblogs.com/blog/1969374/202202/1969374-20220228164445712-1506308029.png"></p>
<p style="font-weight: 400">开通后我们就可以进行配置项的设置了。</p>
<p style="font-weight: 400">新建配置项时我们可以看到两个页签,配置项管理和配置条件管理。在配置项管理中,我们可以创建需要通过远程配置做修改的应用设置项。</p>
<p>1. 首先单击“添加配置项”,添加新的配置项内容。配置项可以配置多个条件值,即不同条件下,设置不同值,而这个配置条件值我们后面会在配置条件管理中进行讲解。</p>
<p><img src="https://img2022.cnblogs.com/blog/1969374/202202/1969374-20220228164532359-167202893.png"></p>
<p>2. 单击“保存配置项”保存当前配置。</p>
<p>3. 单击“发布”使当前配置和条件生效,若单击“取消”将舍弃对配置和条件的更改。</p>
<p>4. 在“配置项管理”页签下,可以查看所有配置项列表。</p>
<p>5. 点击配置项右上角的“操作”:您可以查看、修改、删除配置项,还可以通过复制方式快速添加配置项</p>
<p style="font-weight: 400">在配置条件管理中,我们就可以对配置下发对象做条件管理,让配置只下发到特定的用户群。一共有9个不同的配置条件,具体每个条件的说明可以参考官方文档。</p>
<h3>2、在 Android 项目里集成 SDK</h3>
<p><strong>a)&nbsp;集成 SDK</strong></p>
<p style="font-weight: 400">1、在项目级的 gradle 文件中添加华为 Maven,即配置下面标红的内容</p>
<pre class="language-java"><code>buildscript&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;repositories&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;google()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jcenter()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maven&nbsp;{url&nbsp;'https://developer.huawei.com/repo/'}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;dependencies&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classpath&nbsp;'com.android.tools.build:gradle:4.0.1'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classpath&nbsp;'com.huawei.agconnect:agcp:1.5.2.300'
&nbsp;&nbsp;&nbsp;&nbsp;}
}
&nbsp;
allprojects&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;repositories&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;google()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jcenter()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maven&nbsp;{url&nbsp;'https://developer.huawei.com/repo/'}
&nbsp;&nbsp;&nbsp;&nbsp;}
}
&nbsp;
task&nbsp;clean(type:&nbsp;Delete)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;rootProject.buildDir
}</code></pre>
<p>2、打开应用级的&nbsp;<strong>build.gradle&nbsp;</strong>文件,配置好云存储的 SDK 和华为认证服务的 SDK,配置下面标红的内容即可。&nbsp;&nbsp;注意别落了上面的 agcp 插件</p>
<pre class="language-java"><code>apply&nbsp;plugin:&nbsp;'com.android.application'
apply&nbsp;plugin:&nbsp;'com.huawei.agconnect'
android&nbsp;{…..}
&nbsp;
dependencies&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;implementation&nbsp;fileTree(include:&nbsp;['*.jar'],&nbsp;dir:&nbsp;'libs')
&nbsp;&nbsp;&nbsp;&nbsp;implementation&nbsp;'androidx.appcompat:appcompat:1.1.0'
&nbsp;&nbsp;&nbsp;&nbsp;implementation&nbsp;'androidx.constraintlayout:constraintlayout:1.1.3'
&nbsp;&nbsp;&nbsp;&nbsp;testImplementation&nbsp;'junit:junit:4.12'
&nbsp;&nbsp;&nbsp;&nbsp;androidTestImplementation&nbsp;'androidx.test.ext:junit:1.1.1'
&nbsp;&nbsp;&nbsp;&nbsp;androidTestImplementation&nbsp;'androidx.test.espresso:espresso-core:3.2.0'
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;implementation&nbsp;'com.huawei.agconnect:agconnect-remoteconfig:1.5.2.300'
}</code></pre>
<p><strong>b)&nbsp;下载 json 文件,并且配置默认存储实例</strong></p>
<p>1、在 AGC 界面上,选择&nbsp;我的项目&nbsp;-&gt;&nbsp;项目设置–&gt;&nbsp;常规&nbsp;下面,下载 agconnect-services.json 文件到你的 Android 项目的 app 路径下。</p>
<p><img src="https://img2022.cnblogs.com/blog/1969374/202202/1969374-20220228164141719-1302200878.png"></p>
<h3>3、功能开发:</h3>
<p>远程配置的功能其实很简单,最主要的就是通过 SDK 设置本地默认值与获取云端最新的配置项内容。</p>
<p><strong>1、设置本地默认设置</strong></p>
<p>首先在工程的 res/xml 中增加一个远程配置默认值的 xml 文件,其中键值对为&lt;value key="testkey"&gt;testvalue&lt;/value&gt;,例如文件 remote_config.xml。</p>
<p>文件创建完后在代码中调用 applyDefault 接口将文件传入来设置本地默认配置。</p>
<pre class="language-java"><code>config.applyDefault(R.xml.remote_config);</code></pre>
<p>或者直接在代码中创建一个 map 类型的数据,将 map 传入 applyDefault 也可以成功设置本地默认配置。</p>
<p><strong>2、获取数据后立刻生效</strong></p>
<p>应用通过 SDK 获取云端配置项后可以选择立刻生效还是下次启动后生效,首先是立刻生效</p>
<pre class="language-java"><code>config.fetch().addOnSuccessListener(new&nbsp;OnSuccessListener&lt;ConfigValues&gt;()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;@Override
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onSuccess(ConfigValues&nbsp;configValues)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config.apply(configValues);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使用配置值
&nbsp;&nbsp;&nbsp;&nbsp;}
}).addOnFailureListener(new&nbsp;OnFailureListener()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;@Override
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onFailure(Exception&nbsp;e)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;}
});</code></pre>
<p>首先调用 fetch 接口获取云端的配置项,在获取成功的回调中我们可以直接调用 apply 接口将配置项立刻设置到应用中。</p>
<p><strong>3、获取数据后下次启动生效</strong></p>
<p>除了立刻生效外,我们可以选择下次启动再生效</p>
<pre class="language-java"><code>ConfigValues&nbsp;last&nbsp;=&nbsp;config.loadLastFetched();
config.apply(last);
config.fetch().addOnSuccessListener(new&nbsp;OnSuccessListener&lt;ConfigValues&gt;()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;@Override
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onSuccess(ConfigValues&nbsp;configValues)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}
}).addOnFailureListener(new&nbsp;OnFailureListener()&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;@Override
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;onFailure(Exception&nbsp;e)&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;}
});</code></pre>
<p>我们只需要调用 loadLastFetched 接口接口获取到上次通过 fetch 接口下载下来的配置项数据,然后通过 apply 接口设置这些数据到应用中。</p>
<p><strong>4、获取参数值</strong></p>
<p>在我们获取了配置项后,如果我们需要将配置项一个个的取出来进行操作就需要调用 sdk 提供的一系列接口来获取这个值,不同的接口可以获取到不同类型的参数</p>
<p>Boolean</p>
<pre class="language-java"><code>Boolean&nbsp;value&nbsp;=&nbsp;config.getValueAsBoolean("key");</code></pre>
<p>Double</p>
<pre class="language-java"><code>Double&nbsp;value&nbsp;=&nbsp;config.getValueAsDouble("key");</code></pre>
<p>Long</p>
<pre class="language-java"><code>Long&nbsp;value&nbsp;=&nbsp;config.getValueAsLong("key");</code></pre>
<p>String</p>
<pre class="language-java"><code>String&nbsp;value&nbsp;=&nbsp;config.getValueAsString("key");</code></pre>
<p>Byte</p>
<pre class="language-java"><code>byte[]&nbsp;value&nbsp;=&nbsp;config.getValueAsByteArray("key");</code></pre>
<p><strong>5、获取全部</strong></p>
<p>我们还可以一次性获取全部的参数值</p>
<pre class="language-java"><code>Map&lt;String,Object&gt;&nbsp;map&nbsp;=&nbsp;config.getMergedAll();</code></pre>
<p>通过 getMergedAll 方法,我们就可以一次性获取全部的本地默认值和云端参数值了。</p>
<p><strong>6、重置参数值</strong></p>
<p>最后,SDK 还给我们提供了重置参数的功能</p>
<pre class="language-java"><code>config.clearAll();</code></pre>
<p>通过 clearAll 方法,所有设置的默认值以及云端的参数值都将被重置。</p>
<p>云存储服务开发指南:</p>
<p>https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-remoteconfig-introduction-0000001055149778</p>
<p id="1646037708752"></p><br><br>
来源:https://www.cnblogs.com/developer-huawei/p/15946352.html
頁: [1]
查看完整版本: 快速集成华为 AGConnect 远程配置服务 - Android