原文地址: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
using Xamarin.Essentials;
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 視頻,反正國內看不了,就僞裝有吧