Xamarin для Windows позволяет разрабатывать и тестировать приложения iOS в Visual Studio с использованием подключенного к сети компьютера Mac, который предоставляет службу сборки и развертывания.
В этой статье рассматриваются действия по установке и настройке средств Xamarin.iOS на каждом компьютере, предназначенном для создания приложений iOS с помощью Visual Studio.
Разработка приложений для iOS в Visual Studio дает ряд преимуществ:
- создание кроссплатформенных решений для приложений iOS, Android и Windows;
- использование любимых средств Visual Studio (таких как Resharper и Team Foundation Server) для всех кроссплатформенных проектов, включая исходный код iOS;
- работа в знакомой интегрированной среде (IDE) с использованием привязок Xamarin.iOS ко всем интерфейсам API Apple.
Требования и установка
При разработке приложений для iOS в Visual Studio должен выполняться ряд требований. Как было кратко упомянуто в обзоре, для компиляции файлов IPA требуется компьютер Mac, а приложения невозможно развертывать на устройствах без сертификатов и средств подписывания кода Apple.
Как создать приложение для iOS? С чего начать и как создать приложение для iOS?
Доступно несколько конфигураций, из которых вы можете выбрать наиболее подходящую под ваши потребности. Эти конфигурации перечислены ниже:
- Компьютер Mac используется в качестве главного компьютера разработки, а среда Visual Studio установлена на виртуальной машине Windows. Мы рекомендуем использовать для создания виртуальной машины такое программное обеспечение, как Parallels или VMWare.
- Компьютер Mac используется только в качестве узла сборки. В этом сценарии он подключается к той же сети, в которой находится компьютер Windows с установленными необходимыми средствами.
В любом случае необходимо выполнить указанные ниже действия:
- Установка Visual Studio для Mac
- Установите средства Xamarin в Windows
Подключение к компьютеру Mac
Для подключения Visual Studio к узлу сборки Mac выполните инструкции в руководстве Связывание с компьютером Mac.
Обзор панели инструментов Visual Studio
При установке Xamarin iOS для Visual Studio добавляются элементы на стандартную панель инструментов и на новую панель инструментов iOS. Назначение этих панелей инструментов описывается ниже.
Стандартная панель инструментов
Элементы управления, имеющие отношение к разработке приложений iOS с помощью Xamarin, обведены красным:

- Запуск — запускает отладку или выполнение приложения на выбранной платформе. Должен быть подключен компьютер Mac (см. индикатор состояния на панели инструментов iOS).
- Конфигурации решения — позволяет выбрать нужную конфигурацию (например, отладка или выпуск).
- Платформы решения — позволяет выбрать iPhone или iPhoneSimulator в качестве платформы развертывания.
Панель инструментов iOS
Панель инструментов iOS выглядит антологичным образом во всех версиях Visual Studio. Она показана ниже:
Первая Программа На Swift | Установка MacOS На VirtualBox | Установка XCode

Далее описывается каждый ее элемент:
- Mac Agent или диспетчер подключений — открывает диалоговое окно «Xamarin Mac Agent». Во время подключения этот значок будет оранжевым, а после установления подключения — зеленым.
- Показать симулятор iOS — окно симулятора iOS на компьютере Mac открывается на переднем плане.
- Показать IPA-файл на сервере сборки — на компьютере Mac открывается программа Finder в месте, где находится выходной файл IPA приложения.
Параметры вывода iOS
Окно выходных данных
Это параметры в области Вывод, с помощью которых можно просматривать сообщения и ошибки, связанные со сборкой, развертыванием и подключением.
На снимке экрана ниже показаны доступные окна вывода, которые могут отличаться в зависимости от типа проекта:

- Xamarin — содержит сведения, относящиеся исключительно к Xamarin, например о подключении к компьютеру Mac и состоянии активации.

- Диагностика Xamarin — содержит более подробные сведения о проекте Xamarin, например о взаимодействии с Android.

Другие области вывода Visual Studio, такие как «Отладка» и «Сборка», также доступны в представлении «Вывод» и служат для отображения выходных данных отладки и MSBuild:
- Отладка

- СборкаСоздать файл>» Project откроется диалоговое окно ниже, иллюстрируя некоторые типы проектов, доступные для создания нового проекта iOS:

Выберите Приложение iOS (Xamarin) , чтобы отобразить список следующих шаблонов для создания приложения Xamarin.iOS:

Раскадровку и файлы XIB можно редактировать в Visual Studio с помощью iOS Designer. Чтобы создать раскадровку, выберите один из шаблонов раскадровки. В обозревателе решений будет создан файл Main.storyboard, как показано на снимке экрана ниже.

Чтобы приступить к созданию или редактированию раскадровки, дважды щелкните файл Main.storyboard . Он откроется в iOS Designer:

Чтобы добавить объекты в представление, перетащите их из области Панель элементов в область конструктора. Панель элементов можно добавить, выбрав «Вид > панели элементов», если она еще не добавлена. С помощью области Свойства можно изменять свойства объектов, настраивать их макеты и создавать события, как показано ниже:

Дополнительные сведения об использовании конструктора iOS см. в посвященных конструктору руководствах.
Запуск другого журнала устройств Windows >
- Журнал > устройств iOS >
- Журнал устройств с панелью инструментов > iOS
Когда окно средства откроется, пользователь может выбрать физическое устройство в раскрывающемся списке устройств. После выбора устройства журналы автоматически добавляются в таблицу. При переключении между устройствами ведение журнала устройств останавливается и запускается.
Чтобы устройства отображались в поле со списком, проект iOS должен быть загружен. Кроме того, для обнаружения устройств iOS, подключенных к компьютеру Mac, среда Visual Studio должна быть подключена к серверу Mac.
В этом окне находятся следующие элементы: таблица записей журнала, раскрывающийся список для выбора устройств, функция очистки записей журнала, поле поиска и кнопки воспроизведения, остановки, паузы.
Остановка выполнения для отладки
В любых местах приложения можно установить точки останова, которые предписывают отладчику временно остановить выполнение программы. Чтобы задать точку останова в Visual Studio, щелкните область поля редактора рядом с номером строки кода, где требуется прервать выполнение:

Начните отладку и перейдите к точке останова в приложении в симуляторе или на устройстве. При достижении точки останова строка выделяется и становятся доступны стандартные возможности отладки Visual Studio: вы можете выполнять код пошагово с заходом, обходом или выходом, просматривать локальные переменные или пользоваться окном «Интерпретация».
На этом снимке экрана показан симулятор iOS, выполняющийся вместе со средой Visual Studio с использованием ПО Parallels в macOS

Просмотр локальных переменных

Сводка
В этой статье было описано, как использовать Xamarin.iOS для Visual Studio. В ней были перечислены различные функции, доступные для создания, сборки и тестирования приложения iOS в Visual Studio, и приведены пошаговые инструкции по созданию и отладке простейшего приложения iOS.
Связанные ссылки
- Установка Xamarin.iOS
- Подготовка устройств
- Создание пользовательского интерфейса iOS в коде
- Подключение компьютера Mac к среде Visual Studio с помощью XMA (видео)
Источник: learn.microsoft.com
Как написать программу для ios на windows
Рассмотрим построение проекта на Maui и C# для iOS.
Взаимодействие iOS и Maui
Весь код для непосредственного взаимодействия с платформой iOS расположен в проекте в папке Platforms/iOS/

Здесь нас будут интересовать два файла: AppDelegate.cs и Program.cs .
Работа приложения iOS начинается с кода, расположенного в файле Program.cs :
using ObjCRuntime; using UIKit; namespace HelloApp; public class Program < static void Main(string[] args) < UIApplication.Main(args, null, typeof(AppDelegate)); >>
Метод Main класса Program служит точкой входа в приложения. В нем же в свою очередь вызывается метод UIApplication.Main() , который определяет суть приложения и который обращается к классу AppDelegate из файла AppDelegate.cs :
using Foundation; namespace HelloApp; [Register(«AppDelegate»)] public class AppDelegate : MauiUIApplicationDelegate < protected override MauiApp CreateMauiApp() =>MauiProgram.CreateMauiApp(); >
А класс Appdelegate, в свою очередь, переопределяет метод CreateMauiApp(), в котором вызывается метод CreateMauiApp() и таким образом реализуется связь с кодом приложения MAUI.
Компиляция проекта для iOS из Visual Studio на Windows
Рассмотрим, как создавать приложения под iOS из Visual Studio на Windows. Прежде всего, следует отметить, что технически для компиляции приложения под iOS необходим MacBook. Кроме того, на MacOS должны быть установлены все необходимые инструменты для разработки под Maui, как описывалось в прошлой теме, и также должна быть установлена последняя версия XCode.
Для подключения к MacOS Visual Studio применяет SSH.
Возьмем простейший проект Maui, который создается по умолчанию. Прежде всего нам надо открыть доступ извне на самой машине под управлением Mac OS. Для этого на MacOS перейдем к настройкам общего доступа, среди которых надо включить опцию «Удаленный вход»:

В этом окне надо отметить IP-адрес в рамках подсети, по которому мы будем подключаться к макбуку. В моем случае 192.168.0.102.
Это были все необходимые настройки для Mac OS. Теперь перейдем к Visual Studio. Перейдем к пункту меню Tools -> iOS -> Pair to Mac

Открывшееся окно отобразит список доступных хостов MacOS для подключения:

Выберем в этом окне нужное подключение и нажмем на кнопку Connect. После этого откроется диалоговое окно, в котором надо будет ввести аутентификационные данные для подключения к Mac OS (то есть логин и пароль пользователя на машине Mac OS):

Если вы вдруг не уверены в правильности вводимого логина, то его можно узнать на Mac OS, введя в терминал команду whoami .
При первом подключении Visual Studio может загружать и установливать некоторые необходимые пакеты для связи с MacOS.
После успешного логина и подключения все окна можно закрыть. А Visual Studio с помощью значка зеленого монитора на панели инструментов укажет, что подключение успешно установлено

И затем мы сможем использовать удаленную машину Mac OS для компиляции приложения, а в Visual Studio мы сможем выбрать нужный симулятор iOS и запустить проект:

После этого запустится на симуляторе наш проект:

Стоит отметить, что несмотря на то, что мы можем запустить приложения на симуляторе непосредственно в Windows, но все равно нам необходим Mac OS для компиляции проекта.
Настройка компиляции под iOS
Если мы перейдем к свойствам проекта в visual Studio, то в секции Application/iOS Targets мы можем настроить минимальную и целевую версии iOS, под которые выполняется построение проекта.

Здесь нам доступны следующие опции:
- Target the iOS platform : при установке этого флажка .NET MAUI при построении проекта будет также создавать версию приложения для iOS.
- Target .NET Runtime : применяемая версия .NET
- Target iOS Framework : применяемая версия iOS
- Minimum Target iOS Framework : минимальная версия iOS, под которую создается приложение
Кроме того, внизу свойств проекта с помощью пункта iOS можно настроить различные параметры публикации проекта.
Компиляция проекта для iOS на Mac OS
При компиляции проекта MAUI под iOS на Mac OS все естественно несколько проще. Если мы используем Visual Studio for Mac, то также мы можем выбрать из панели запуска нужный симулятор iOS, либо даже подключиться к реальному устройству с iOS через WiFi:

При выборе симулятора iOS будет запущено приложение на выбранном симуляторе XCode.
Источник: metanit.com
Создание приложения для iOS в QtCreator
Приложение, для которого я занялся вопросом установки на iOS, работает с картой и геолокацией пользователя, поэтому для данной статьи возьмём приложение из стандартных примеров — Places Map (QML) ( ссылка ).
Копируем пример (мы будем вносить в него небольшие дополнения) и открываем в QtCreator.

Вибираем подходящий кит (симулятором из QtCreator я не пользовался):

Конфигурационный файл
И первое, что мы должны сделать — собрать проект.
Затем мы переходим в папку сборки (в моём случае это /Users/ap/Downloads/build-places_map-Qt_5_12_6_for_iOS-Debug) берём оттуда файл Info.plist, который переносим в папку ios, которую создаём в корне нашего проекта.
Добавляем файл Info.plist в наш проект.

Получаем вот такую структуру проекта:

Осталось добавить наш файл в сборку. Для этого в *.pro файл — places_map.pro добавляем следующий код:
Делаем данное добавление только для платформы ios.
Теперь при сборке проекта всегда будет использоваться наш Info.plist.
Версия, компания, исполняемый файл
Вносим дополнения в *.pro файл. Добавляем информацию о версии, нашей компании и наименовании исполняемого файла (не путать названием, которое будет отображатся для пользователя на телефоне).
VERSION = 0.1.1 QMAKE_TARGET_BUNDLE_PREFIX = «ru.mycompany» QMAKE_BUNDLE = «places_map» TARGET = «places_map»
QMAKE_BUNDLE и TARGET указывают на одно и то же. Я не понял принципиальных различий между ними. И вообще они не являются обязательными (если для вас только не принципиально, чтобы название исполняемого файла отличалось от названия проекта).
Версия обязательна. Без версии проект не скомпилируется.
Данные параметры не являются платформозависимыми.
Минимальная версия iOS
В *.pro файле можно также указать минимальную версию iOS, на которой будет работать ваше приложение.
К моему большому сожалению, я не нашёл таблички, где было бы указано, с какими версиями работают компоненты Qt. Логично было бы предположить, что Qt при сборке сама сможет вычислить минимальную версию и подставить её, но, к сожалению, мне приходилось действовать наугад. Возможно, я просто не нашёл нужную информацию и буду рад, если мне подскажут где её искать.
Для этого добавляем в секцию ios *.pro файла следующую строку:
QMAKE_IOS_DEPLOYMENT_TARGET =9.0
В приведённом примере — минимальная версия 9.0.
Если строку не указать, будет подставлена самая последняя на текущий момент версия (на сегодня это 11).
Наименование приложения
В ряде случаев мне не удалось найти способа внесения параметров только в .pro файл, пришлось прописывать напрямую в Info.plist. На мой взгляд это не совсем правильно, поэтому я буду благодарен, если мне подскажут, как эти данные можно было внести в .pro и не трогать Info.plist.
Для изменения названия приложения (названия, которое будет видеть пользователь iOS), необходимо изменить значение (string) ключа (key) CFBundleDisplayName в файле Info.plist. Например, так:
CFBundleDisplayName Places Map
Использование геолокаций
Для использования геолокаций, микрофона, камеры и т.п. сервисов необходимо в файле Info.plist указать об этом запрос на разрешение. Делается это путём добавления специальных ключей.
В случае, если нам нужно запросить разрешение на использование геолокации во время использования приложения, мы используем ключ NSLocationWhenInUseUsageDescription. В значении ключа мы должны указать описание, которое будет видно пользователю, в котором нужно указать причину, по которой нам требуется данный сервис. Без этого описания вашу программу могут заблокировать на AppStore.
NSLocationWhenInUseUsageDescription This app uses a user’s locations to find nearest pizza.
Подробнее информацию об используемых ключах можно найти в документации к iOS.
Иконки приложения
Важный этап — создание иконок приложения. Без них ваше приложение не будет добавлено в AppStore.
Подробно о создании иконок для разных версий описано в инструкции на сайте qt.io — https://doc.qt.io/qt-5/ios-platform-notes.html.
Я сделал всё проще. Нам потребуется файл размером 1024х1024 с нашей иконкой.
Заходим на сайт https://www.iconsgenerator.com/Home/AppIcons (есть и другие, но этот сгенерировал все нужные размеры, чем не смогли похвастаться другие сервисы), закидываем наш файл и скачиваем сгенерированные иконки.
Получим папку Assets.xcassets (название не важно, расширение важно), в которой будут наши иконки и json файлы с привязанными размерами по типам устройств.
Добавляем эту папку в наш проект в папку ios.
Затем нам осталось добавить в раздел ios файла *.pro информацию о наших иконках:
QMAKE_ASSET_CATALOGS += ios/Assets.xcassets
Загрузочный экран
Этот шаг не является обязательным, т.к. простой загрузочный экран с указанием наименования вашего исполняемого файла будет создан при сборке. Но согласитесь, с красивой загрузочной картинкой приложение выглядит лучше. Поэтому создадим свою.
Создадим файл с логотипом. Назовём его, например, CustomScreenLogo.png . Разместим его в папке ios и добавим в проект.
Теперь нужно собрать проект, перейти в папку сборки и найти файл с расширением xcodeproj . В нашем случае это places_map.xcodeproj . Щелкаем по нему правой кнопкой и переходим в его содержимое. Копируем файл LaunchScreen.xib в папку ios нашего приложения и переименовываем его в CustomScreen.xib .
В названии важно, чтобы расширение было xib, а в названии не фигурировало LaunchScreen.
Стоит отметить, что по информации на различных сайтах Apple сейчас постепенно старается всех переводить на Storyboard. Но я всё же старался использовать вариант с xib файлом, как это предложено в документации к Qt.
Добавляем в файл *.pro в раздел ios следующие строки:
app_launch_screen.files = $$PWD/ios/CustomScreen.xib $$files($$PWD/ios/CustomScreenLogo.png) QMAKE_BUNDLE_DATA += app_launch_screen
А в файле Info.plist в ключе UILaunchStoryboardName указываем CustomScreen (название нашего xib файла без расширения).
И заново собираем проект. И запускаем файл xcodeproj в Xcode.
В папке BundleData у нас должны теперь быть наши добавленные файлы:

Открываем файл CustomScreen.xib.

Удаляем лейблы Label и places_map. Щёлкаем на плюсик в верхней правой части и добавляем в раздел View элемент Image VIew. И в правой части в разделе Image выбираем наш логотип CustomScreenLogo.png.

Открываем вкладку Size Inspector и указываем Autoresizing, чтобы наш логотип изменял размер на разных устройствах.

Стоит ещё поменять цвет фона View.
Затем всё сохраняем, закрываем Xcode и ещё раз собираем проект в QtCreator.
Проверка работоспособности
Теперь можно запустить проект на вашем iOS устройстве и проверить его работоспособность.
Рассказывать о том, как выложить проект в AppStore не буду — он полностью готов к выгрузке как обычный проект Xcode, а в сети довольно много инструкций, как это сделать. Только для выгрузки используйте Release сборку.
Использованные материалы
Вопросы, которые у меня остались
- Как проверить, что пользователь разрешил использование геолокации и иных сервисов? Как запросить разрешение в процессе работы приложения по мере необходимости?
- При сборке выскакивает одна ошибка —

Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
Рекомендуемые статьи по этой тематике
По статье задано0 вопрос(ов)
Подписка на обсуждение 3
Подписка на раздел 334
Вам это нравится? Поделитесь в социальных сетях!
Источник: evileg.com