原文地址: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 视频,反正国内看不了,就伪装有吧