(翻譯)Xamarin.Essentials: 移動應用的跨平臺 API

原文地址:https://blog.xamarin.com/xamarin-essentials-cross-platform-apis-mobile-apps/android

 

當使用 Xamarin 開發 IOS 和 Android 應用的時候,開發人員經過 C# 能夠訪問每個原平生臺 API。這些綁定不只使 C# 平臺 API 暴露出來,也添加了強大的 C# 特性,例如 async/await,event,delegate 等。這對開發人員來講是一個巨大的優點,由於他們不須要離開 C# ,不管是寫共享業務邏輯,用戶界面或者訪問原生特性。一個關鍵的特性是當使用 Xamarin 開發跨平臺應用時,開發者從共享代碼中常常尋找一種訪問共享的原生特性,無需編寫他們本身的抽象或者找一個社區建立的開源插件。git

一個單一的 API 訪問諸如地理定位、傳感器、安全存儲和更多功能的夢想如今對於用 Xamarin 與 Xamarin.Essentials 建立的任何應用程序來講成爲了現實。github

 

Xamarin.Essentials APIwindows

在可用的第一個預覽版中,Xamarin.Essentials API 提供了從單一跨平臺 API 庫訪問超過25個原生特性的功能,不管用戶界面是如何建立的均可以從共享代碼中訪問。這意味着你能夠在一個單一的 Xamarin.Android 應用或者目標爲 IOS,Android 和 UWP 的 。Xamarin.Forms 應用中使用 Xamarin.Essentials API。即便它包括了這些特性,仍然充分優化了性能和應用大小最小的影響,由於這個庫充分利用了鏈接器安全的優點。這意味着只有你使用的 API 和特性會包含在你的應用程序中,其他的將在你便宜你的應用程序時被刪除。api

這個初始跨平臺 API 集的預覽版本,能夠經過 NuGet 安裝到你的應用中:瀏覽器

這個初始 API 集是基於 Xamarin 開發人員的反饋,包括他們但願從跨平臺 API 庫中看到的。隨着時間的推移,咱們會繼續添加更多特性。安全

入門app

在新的或者已經存在的應用程序中開始使用 Xamarin.Essentials API 是很容易的,只需幾個簡單的步驟:async

  1. 打開一個存在的項目或者經過 Visual Studio C# 下的空白應用模板建立一個新的項目(Android,iPhone&iPad 或者 跨平臺)。
  2. 添加 Xamarin.Essentials NuGet 包到項目中:
    1. Visual Studio:在解決方案面板中,在解決方案名字上右鍵並選擇管理 NuGet。搜索 Xamarin.Essentials 並安裝包到全部項目中,包括 iOS,Android,UWP 和 .NET Standard 庫。
    2. Visual Studio for Mac:在解決方案面板中,在解決方案名字上右鍵並選擇 添加 -> 添加 NuGet 包.... 搜索 Xamarin.Essentials 並安裝包到全部項目中,包括 iOS,Android,UWP 和 .NET Standard 庫。
  3. 在任意 C# 類中添加 Xamarin.Essentials 的引用來引用 API。
    using Xamarin.Essentials;
  4. Xamarin.Essentials 須要在 Android 項目上添加小的附加平臺特定的設置來訪問特定的特性:
    在 Android 項目 MainLauncher 或者 Activity 啓動 Xamarin.Essentials 必須在 OnCreate 方法中初始化:
    Xamarin.Essentials.Platform.Init(this, bundle);

     在 Android Xamarin.Essentials 操做運行時權限必須接受任何 `OnRequestPermissionsResult`。添加下邊代碼到全部 Activity 類中:
   ide

public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); }

就是這樣!如今你能夠在你的應用中開始使用 Xamarin.Essentials API 了。每一個API都有完整的文檔,代碼段能夠複製到您的應用程序中。

更多細節請確認務必閱讀咱們的完整入門嚮導

建立一個指南針

在 Microsoft Build 2018 個人一個會議中,我展現瞭如何結合 Xamarin.Forms 和 Xamarin.Essentials API 在 10分鐘內構建一個跨平臺指南針。它就像在應用中添加幾張指南針圖片和少許用戶界面同樣簡單:

<Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Image HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Source="compass.png"/> <Image HorizontalOptions="Center" VerticalOptions="Center" Source="arrow.png" x:Name="ImageArrow"/> <Label Grid.Row="1" x:Name="LabelInfo" VerticalOptions="Center" HorizontalOptions="Center" /> </Grid>

我能夠在這個頁面的後置代碼中使用 Xamarin.Essentials 中的 Compass API 來註冊一些事件,當指南針改變而且更新標籤文本和圖像旋轉時只須要幾行代碼。

using Xamarin.Forms; using Xamarin.Essentials; namespace MyCompass { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); // Register for reading changes Compass.ReadingChanged += Compass_ReadingChanged; } void Compass_ReadingChanged(CompassChangedEventArgs e) { LabelInfo.Text = $"Heading: {e.Reading.HeadingMagneticNorth}"; ImageArrow.Rotation = e.Reading.HeadingMagneticNorth; } protected override void OnAppearing() { base.OnAppearing(); Compass.Start(SensorSpeed.Ui); } protected override void OnDisappearing() { base.OnDisappearing(); Compass.Stop(); } } }

就像這樣,一個指南針應用建立完了!你能夠在個人 GitHub 上找到完整的源代碼和圖片

下一步是什麼

Xamarin.Essentials 已經通過了嚴格的測試,可是咱們請求你在這個尖端的預覽週期內提供反饋。請在你的應用中試用這個庫,你在運行中遇到的任何問題請報告到 Xamarin.Essentials 的 GitHub 倉庫

咱們將此庫做爲 Xamarin 平臺的核心基礎部分,並知道它是全部開發人員和應用程序的基礎構建模塊。所以,咱們將會整合 Xamarin.Essentials NuGet 包到 Visual Studio 和 Visual Studio for Mac 內置的每個 iOS,Android 和 Xamarin.Forms 模板中,因此開發人員能夠從項目開始時就訪問這些 API。

在線觀看

你能夠觀看到來自 Microsoft Build 2018 我用 Visual Studio 構建移動應用和 Xamarin 會議關於 Xamarin,Xamarin.Forms 和 Xamarin.Essentials 的全面概述。

 ——這裏是個 youtube 視頻,反正國內看不了,就僞裝有吧

相關文章
相關標籤/搜索