(翻译)Xamarin.Essentials: 移动应用的跨平台 API

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

 

当使用 Xamarin 开发 IOS 和 Android 应用的时候,开发人员通过 C# 可以访问每一个原生平台 API。这些绑定不仅使 C# 平台 API 暴露出来,也添加了强大的 C# 特性,例如 async/await,event,delegate 等。这对开发人员来说是一个巨大的优势,因为他们不需要离开 C# ,无论是写共享业务逻辑,用户界面或者访问原生特性。一个关键的特性是当使用 Xamarin 开发跨平台应用时,开发者从共享代码中经常寻找一种访问共享的原生特性,无需编写他们自己的抽象或者找一个社区创建的开源插件。

一个单一的 API 访问诸如地理定位、传感器、安全存储和更多功能的梦想现在对于用 Xamarin 与 Xamarin.Essentials 创建的任何应用程序来说成为了现实。

 

Xamarin.Essentials API

在可用的第一个预览版中,Xamarin.Essentials API 提供了从单一跨平台 API 库访问超过25个原生特性的功能,无论用户界面是如何创建的都可以从共享代码中访问。这意味着你可以在一个单一的 Xamarin.Android 应用或者目标为 IOS,Android 和 UWP 的 。Xamarin.Forms 应用中使用 Xamarin.Essentials API。即使它包括了这些特性,仍然充分优化了性能和应用大小最小的影响,因为这个库充分利用了连接器安全的优势。这意味着只有你使用的 API 和特性会包含在你的应用程序中,其余的将在你便宜你的应用程序时被删除。

这个初始跨平台 API 集的预览版本,可以通过 NuGet 安装到你的应用中:

这个初始 API 集是基于 Xamarin 开发人员的反馈,包括他们希望从跨平台 API 库中看到的。随着时间的推移,我们会继续添加更多特性。

入门

在新的或者已经存在的应用程序中开始使用 Xamarin.Essentials API 是很容易的,只需几个简单的步骤:

  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 类中:
   

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 视频,反正国内看不了,就假装有吧

posted @ 2018-07-11 16:56  Lucky0422  阅读(1127)  评论(1)    收藏  举报