• 如何在Xamarin中快速集成Android版远程配置


    Xamarin作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台。AppGallery Connect(以下简称AGC)也在逐步的支持Xamarin的SDK。今天就手把手教大家如何快速接入Xamarin版远程配置服务。

    接入步骤

    安装Xamarin环境

    Xamarin的御用开发平台是Visual Studio,所以我们需要首先安装Visual Studio 2019.

    下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/

    下载好后进行安装,我们还需要安装Xamarin配套的插件,Mobile development with .NET,中文叫“使用.NET的移动开发”,安装完成后就可以通过Visual Studio进行Xamarin的Android和iOS开发了。

    cke_13819.png

    在AGC页面开通远程配置并创建相应的配置项

    具体配置步骤可以参考远程配置官方文档:

    https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-remoteconfig-android-cloudconfig-0000001056587179

    创建Xamarin工程

    1、在Visual Studio中创建新项目

    选择移动应用(Xamarin.Forms),将应用的名称等信息设置好后,创建项目

    cke_13820.png

    2、将远程配置的Xamarin包集成到新的项目中

    有两种方式集成Xamarin包

    第一种是云端方式集成,在目录栏右击选择管理NuGet程序包

    cke_13821.png

    在浏览选项中搜索Huawei.Agconnect.RemoteConfiguration,点击安装即可

    cke_13822.png

    第二种方式是本地集成NuGet包,首先需要将所有需要的NuGet包放入本地的一个文件夹中

    cke_13823.png

    我们按照第一种的方式打开NuGet包管理器,点击程序包源边上的设置图标,打开选项目录

    cke_13824.png

    点击绿色的加号添加新的包源,在源的地方输入刚刚存放NuGet本地包的文件夹目录即可。

    cke_13825.png

    3、添加AGC配置文件

    AGC为开发者准备了一个存放所有应用相关信息的配置json文件,我们需要将这个文件集成到项目中以便后续调用接口时使用,我们的SDK会自动读取里面的内容,无需开发者调用时手动传入了,具体步骤如下

    3.1 从AGC管理台中下载agconnect-services.json文件,将文件放入项目的Assets目录下

    cke_13826.png

    3.2 在项目中创建一个新的类,HmsLazyInputStreams.cs,将如下代码写入进行json文件的内容读取

    1. using System;
    2. using System.IO;
    3. using Android.Util;
    4. using Android.Content;
    5. using Huawei.Agconnect.Config;
    6. namespace XamarinHmsRemoteConfig
    7. {
    8. class HmsLazyInputStream : LazyInputStream
    9. {
    10. public HmsLazyInputStream(Context context) : base(context)
    11. {
    12. Get(context);
    13. }
    14. public override Stream Get(Context context)
    15. {
    16. try
    17. {
    18. return context.Assets.Open("agconnect-services.json");
    19. }
    20. catch (Exception e)
    21. {
    22. Log.Error(e.ToString(), "Can't open agconnect file");
    23. return null;
    24. }
    25. }
    26. }
    27. }

    3.3 再创建一个Content provider类,写入如下代码已让读取文件可以在启动应用时进行,要注意,content provider中的包名需要与应用包名一致(包括项目中设置的包名以及在AGC管理台中设置的包名)。

    1. using System;
    2. using Android.Content;
    3. using Android.Database;
    4. using Huawei.Agconnect.Config;
    5. namespace XamarinHmsRemoteConfig
    6. {
    7. [ContentProvider(new string[] { "com.huawei.cordova.remoteconfig.XamarinCustomProvider" }, InitOrder = 99)]
    8. public class XamarinCustomProvider : ContentProvider
    9. {
    10. public override int Delete(Android.Net.Uri uri, string selection, string[] selectionArgs)
    11. {
    12. throw new NotImplementedException();
    13. }
    14. public override string GetType(Android.Net.Uri uri)
    15. {
    16. throw new NotImplementedException();
    17. }
    18. public override Android.Net.Uri Insert(Android.Net.Uri uri, ContentValues values)
    19. {
    20. throw new NotImplementedException();
    21. }
    22. public override bool OnCreate()
    23. {
    24. AGConnectServicesConfig config = AGConnectServicesConfig.FromContext(Context);
    25. config.OverlayWith(new HmsLazyInputStream(Context));
    26. return false;
    27. }
    28. public override ICursor Query(Android.Net.Uri uri, string[] projection, string selection, string[] selectionArgs, string sortOrder)
    29. {
    30. throw new NotImplementedException();
    31. }
    32. public override int Update(Android.Net.Uri uri, ContentValues values, string selection, string[] selectionArgs)
    33. {
    34. throw new NotImplementedException();
    35. }
    36. }
    37. }

    3.4 设置包名

    右击项目找到属性选项,在Android清单页签找到程序包名称,设置应用的包名。

    cke_13827.png

    4、添加本地默认配置

    远程配置支持开发者在本地配置一个默认值。这种配置有两种方式,

    第一种是通过xml文件设置相关配置,我们可以在Resource文件夹下的Xml文件夹创建一个xml文件,存放配置项和默认值

    cke_13828.png

    在代码中调用ApplyDefault方法读取相应的xml文件即可

    AGConnectConfig.Instance.ApplyDefault(Resource.Xml.RemoteConfig);

    第二种方式实在代码中动态的设置默认配置,示例如下:

    1. IDictionary<string, Java.Lang.Object> ConfigVariables = new Dictionary<string, Java.Lang.Object>();
    2. ConfigVariables.Add("value1", "Default");
    3. AGConnectConfig.Instance.ApplyDefault(ConfigVariables);

    5、Fetch

    Fetch功能是远程配置最核心的功能,fetch接口可以从云端将最新的配置值下载到本地来进行实时配置。接口有一个参数,代表着接口从云端获取值的间隔,如果不传值,那么我们就会默认为12小时。

    AGConnectConfig.Instance.Fetch(fetchInterval).AddOnSuccessListener(new TaskListener(this)).AddOnFailureListener(new TaskListener(this));

    6、MergedAll

    其余的接口都与Android版本一致,但是有一个接口与Android版本名称上有些许不同,就是MergedAll方法。这个方法在Android上名称为getMergedAll,作用是返回默认值和云端值合并后的所有值。

    AGConnectConfig.Instance.MergedAll;

    以上就是快速接入Xamarin版远程配置的全部流程,随着越来越多的服务支持Xamarin,我也会给大家带来更多的接入教程。

  • 相关阅读:
    ClickHouse—DML操作
    Mybatis中Mapper.xml详解
    力扣(LeetCode)11. 盛最多水的容器(C++)
    Linux:进程间通信
    ubuntu编译 linphone sdk android源码下载
    开始数据治理时三个常见的陷阱和解决方法
    speedoffice使用方法-word插入的图片怎么剪裁
    91183-98-1,UDP-N-acetylglucosamine,5′-二磷酸尿嘧啶核苷-N-乙酰半乳糖胺二钠盐
    郁金香2021年游戏辅助技术(初级班)(中)
    【深基16.例3】二叉树深度
  • 原文地址:https://blog.csdn.net/weixin_44708240/article/details/125439541