Pull to refresh
0
Microsoft
Microsoft — мировой лидер в области ПО и ИТ-услуг

Единые инструменты в IT: хорошо или плохо?

Reading time 6 min
Views 5.3K
Original author: James Montemagno
А вы бы хотели всегда работать в одной среде? Так, чтобы не приходилось скакать туда-сюда по средам разработки и при использовании инструментов. До идеала, конечно, еще далеко, но IT-мир стремится к этому. Сегодня рассказываем о единой кросс-платформенной библиотеке API. Присоединяйтесь!



При разработке приложений для iOS и Android с помощью Xamarin разработчики могут обращаться к любым нативным API, используя C#. Эти привязки не только помогают использовать соответствующие API в C#, но и предоставляют мощные функции этого языка, такие как async/await, события, делегаты и т. д.

Это огромное преимущество для разработчиков, потому что им никогда не придется работать вне C#, независимо от того, пишут ли они общую бизнес-логику, пользовательский интерфейс или получают доступ к нативным функциям. Одна из ключевых особенностей, которую часто хотят видеть программисты при разработке кросс-платформенных приложений на Xamarin, — это способность получать доступ к распространенным нативным функциям из общего кода без необходимости писать свои собственные слои абстракций или находить плагин в свободном доступе, созданный сообществом.

Xamarin.Essentials воплощает в реальность мечту о едином API для доступа к таким функциям, как геолокация, показания датчиков, безопасное хранилище и т. д., для любого приложения, созданного на Xamarin!


Интерфейсы API в Xamarin.Essentials


В ознакомительной версии, доступной уже сегодня, API-интерфейсы Xamarin.Essentials предоставляют доступ более чем к 25 нативным функциям из единой кросс-платформенной библиотеки API, к которой можно получить доступ из общего кода независимо от того, как создается пользовательский интерфейс. Это значит, что вы можете использовать API Xamarin.Essentials с помощью единственного приложения Xamarin.Android или приложения Xamarin.Forms, адаптированного для работы с iOS, Android и UWP. Несмотря на большое количество функций, эта библиотека полностью оптимизирована для максимально быстрой работы и минимального влияния на размер приложения, поскольку она защищена от компоновщика. Это говорит о том, что в ваше приложение будут включены только API и функции, которые вы используете, а все остальное будет удалено во время компиляции.

Ознакомительную версию библиотеки, в которой используется базовый набор кросс-платформенных API, можно установить в ваше приложение через NuGet:


Начальный набор API был определен на основе отзывов от разработчиков Xamarin о том, какие функции они хотели бы видеть в кросс-платформенной библиотеке API. Со временем мы будем расширять этот список.

Начало работы


Начать использовать API Xamarin.Essentials легко в любом существующем приложении, выполнив всего несколько простых шагов:

1. Откройте существующий проект или создайте новый, используя шаблон Blank App в Visual Studio C# (для Android, iPhone и iPad или кросс-платформенный).

2. Добавьте пакет Xamarin.Essentials NuGet к проекту:

  1. Visual Studio. В панели Solution Explorer щелкните правой кнопкой мыши на название решения и выберите Manage NuGet Packages. Найдите Xamarin.Essentials и установите пакет во ВСЕ проекты, включая iOS, Android, UWP и .NET Standard Libraries.
  2. Visual Studio для Mac. В панели Solution Explorer щелкните правой кнопкой мыши на название проекта и выберите Добавить > Добавить пакеты NuGet… Найдите Xamarin.Essentials и установите пакет во ВСЕ проекты, включая iOS, Android и .NET Standard Libraries.

3. Добавьте ссылку на Xamarin.Essentials в любом из классов C#, чтобы ссылаться на API.

using Xamarin.Essentials;

4. Xamarin.Essentials требует небольшой дополнительной настройки под проекты Android, чтобы получить доступ к специальным функциям:

Xamarin.Essentials необходимо инициализировать с помощью метода OnCreate в рамках MainLauncher или любого другого Activity в проекте Android:

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);
}

Готово! Теперь вы можете начать использовать API Xamarin.Essentials в своем приложении. К каждому API прилагается полная документация, включая фрагменты кода, которые вы можете скопировать в свое приложение.

Обязательно прочитайте наше Руководство по началу работы для получения дополнительной информации.

Сборка компаса


Во время одного из моих выступлений на Microsoft Build 2018 я показал, как объединить возможности API Xamarin.Forms и Xamarin.Essentials, чтобы собрать кросс-платформенный компас менее чем за 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>

Я смог использовать API компаса из Xamarin.Essentials в коде выше, чтобы регистрировать события, когда компас изменяет положение, обновлять текст метки и поворачивать изображение. Все это делается несколькими строками кода:

	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 в каждый шаблон iOS, Android и Xamarin.Forms в Visual Studio и Visual Studio для Mac, чтобы разработчики имели доступ к этим API с самых первых этапов своих проектов.

Увидеть своими глазами


Вы можете увидеть полный обзор Xamarin, Xamarin.Forms и Xamarin.Essentials в рамках выступления «Создание мобильных приложений с помощью Visual Studio и Xamarin» на Microsoft Build 2018.



Дополнительная информация


Вы можете просмотреть нашу документацию, содержащую полное руководство по началу работы и использованию каждой функции Xamarin.Essentials. Мы также предоставили полный список ссылок на API, который можно просмотреть в Интернете, чтобы узнать обо всех деталях интерфейсов API Xamarin.Essentials.
Tags:
Hubs:
+12
Comments 5
Comments Comments 5

Articles

Information

Website
www.microsoft.com
Registered
Founded
Employees
Unknown
Location
США