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

来源:https://www.cnblogs.com/developer-huawei/archive/2022/04/20/16164754.html
-Advertisement-
Play Games

Xamarin作為微軟提供的移動服務多系統開發平臺,成為很多開發者首選的應用開發平臺。AppGallery Connect(以下簡稱AGC)也在逐步的支持Xamarin的SDK。今天就手把手教大家如何快速接入Xamarin版遠程配置服務。 接入步驟 安裝Xamarin環境 Xamarin的御用開發平 ...


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文件的內容讀取

using System;
using System.IO;
using Android.Util;
using Android.Content;
using Huawei.Agconnect.Config;
namespace XamarinHmsRemoteConfig
{
    class HmsLazyInputStream : LazyInputStream
    {
        public HmsLazyInputStream(Context context) : base(context)
        {
            Get(context);
        }
        public override Stream Get(Context context)
        {
            try
            {
                return context.Assets.Open("agconnect-services.json");
            }
            catch (Exception e)
            {
                Log.Error(e.ToString(), "Can't open agconnect file");
                return null;
            }
        }
    }
}

3.3 再創建一個Content provider類,寫入如下代碼已讓讀取文件可以在啟動應用時進行,要註意,content provider中的包名需要與應用包名一致(包括項目中設置的包名以及在AGC管理臺中設置的包名)。

using System;
using Android.Content;
using Android.Database;
using Huawei.Agconnect.Config;
namespace XamarinHmsRemoteConfig
{
    [ContentProvider(new string[] { "com.huawei.cordova.remoteconfig.XamarinCustomProvider" }, InitOrder = 99)]
    public class XamarinCustomProvider : ContentProvider
    {
        public override int Delete(Android.Net.Uri uri, string selection, string[] selectionArgs)
        {
            throw new NotImplementedException();
        }
        public override string GetType(Android.Net.Uri uri)
        {
            throw new NotImplementedException();
        }
        public override Android.Net.Uri Insert(Android.Net.Uri uri, ContentValues values)
        {
            throw new NotImplementedException();
        }
        public override bool OnCreate()
        {
            AGConnectServicesConfig config = AGConnectServicesConfig.FromContext(Context);
            config.OverlayWith(new HmsLazyInputStream(Context));
            return false;
        }
        public override ICursor Query(Android.Net.Uri uri, string[] projection, string selection, string[] selectionArgs, string sortOrder)
        {
            throw new NotImplementedException();
        }
        public override int Update(Android.Net.Uri uri, ContentValues values, string selection, string[] selectionArgs)
        {
            throw new NotImplementedException();
        }
    }
}

3.4 設置包名

右擊項目找到屬性選項,在Android清單頁簽找到程式包名稱,設置應用的包名。

cke_13827.png

4、添加本地預設配置

遠程配置支持開發者在本地配置一個預設值。這種配置有兩種方式,

第一種是通過xml文件設置相關配置,我們可以在Resource文件夾下的Xml文件夾創建一個xml文件,存放配置項和預設值

cke_13828.png

在代碼中調用ApplyDefault方法讀取相應的xml文件即可

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

第二種方式實在代碼中動態的設置預設配置,示例如下:

IDictionary<string, Java.Lang.Object> ConfigVariables = new Dictionary<string, Java.Lang.Object>();
ConfigVariables.Add("value1", "Default");
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,我也會給大家帶來更多的接入教程。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 實驗環境:CentOS 7+docker 1.使用命令搜索我們需要的鏡像 docker search awvs 2.拉取鏡像,這裡選擇較新的版本 docker pull xiaomimi8/awvs14-log4j-2022 下載完成,查看鏡像列 ...
  • 一、硬體配置及軟體版本 1.伺服器配置 最低要求:CPU2核/記憶體4G/硬碟40G 推薦:CPU4核/記憶體8G/硬碟300G 2.軟體版本 Docker CE 17.06版本+ 本文版本:Docker CE 20.10.14 Docker Compose 1.18版本+ 本文版本:V2.4.1 Ha ...
  • c語言疑難雜症之 Error: failed to execute 'H:\keil\keil C51\C51\BIN\C51.EXE' 就是這樣的錯誤,翻譯一下就是無法執行'C51.EXE' 所以遇到這種情況我們該怎麼辦呢??? 不如讓我們先來康康我的代碼 #include <REGX52.H> ...
  • Linux 配置免密登錄 慄子 生成公鑰和私鑰 ssh-keygen -t rsa Tips: 執行後會在~/.ssh/目錄下創建 id_rsa 和 id_rsa.pub 文件 生成省份認證文件 ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] T ...
  • 工欲善其事,必先利其器,對於每次都要人工統計的發版數據,嗅到了一絲絲優化的空間……難倒我的不是 curl 使用 cookie 訪問 web 伺服器,而是如何解析 json 中數組的數組… ...
  • 本文介紹如何使用 SQL ORDER BY 子句,對檢索出的數據進行排序。根據需要,可以利用它在一個或多個列上對數據進行排序。 一、排序數據 正如 如何使用 SQL 的 SELECT 語句從表中檢索一個或多個數據列 所述,下麵的 SQL 語句返回某個資料庫表的單個列。但請看其輸出,並沒有特定的順序。 ...
  • 在本文中,我們將介紹 GraphScope 圖互動式查詢引擎 GAIA-IR,它支持高效的 Gremlin 語言表達的交互圖查詢,同時高度抽象了圖上的查詢計算,具有高可擴展性。 ...
  • 在我還在手動調整兩個控制項距離時,第一次見識到了marginStart marginEnd兩個用法, 但是,只知道它倆能夠調整控制項距離,但是不知道具體用法,老師也沒細說,就這樣開啟了我對於這兩個用法“探索”之路 ①首先,我對於兩個控制項之間的調整,是需要將其兩個控制項點連接起來,才能夠被使用。 ②其次,對 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...