Дополнительные изменения платформ iOS 9

В этой статье рассматриваются дополнительные, незначительные изменения или улучшения существующих платформ для iOS 9.

Логотип iOS 9

Помимо основных изменений в iOS, Apple внесла изменения и усовершенствования нескольких существующих платформ в iOS 9.

Дополнения платформы AVFoundation Framework

В платформе AVFoundation класс AVSpeechSynthesisVoice теперь позволяет указать голос по идентификатору в дополнение к языку.

Например, следующий код получает список всех доступных голосов:

var voices = AVSpeechSynthesisVoice.GetSpeechVoices ();

Затем можно использовать один из голосов из списка, задав его в качестве Voice свойства экземпляра класса AVSpeachUtterance .

Класс AVQueuePlayer теперь поддерживает смесь потоковой передачи в Интернет и файлового носителя в очереди. Предыдущие версии могут содержать только носитель очереди одного типа.

Дополнительные сведения см. в справочнике apple AVSpeechSynthesisVoice.

Дополнения платформы AVKit

Для работы с новой функцией Picture-in-Picture (PIP) платформа AVKit включает новые AVPictureInPictureController классы и классы AVPlayerViewController :

  • AVPictureInPictureController — этот класс позволяет приложению iOS 9 реагировать на воспроизведение видео в плавающем окне PIP на iPad.
  • AVPlayerViewController — управляет контроллером AVPlayer , используемым для представления видео в плавающем и изменяющемся окне PIP на iPad.

Дополнительные сведения см. в документации по iPad и справочнике по AVPictureInPictureController и AVPlayerViewController.

Знакомство с веб-службами CloudKit

Платформа CloudKit упрощает разработку приложений, обращаюющихся к iCloud. Это включает получение данных приложения и прав активов, а также возможность безопасного хранения сведений о приложении. Этот набор предоставляет пользователям уровень анонимности, позволяя получать доступ к приложениям с идентификаторами iCloud без предоставления общего доступа к персональным данным.

Новая платформа веб-служб CloudKit предоставляет библиотеку JavaScript (CloudKit JS), которая может быть включена на веб-сайте для предоставления доступа к тем же данным и содержимому на основе CloudKit, что и ваше приложение Xamarin.iOS.

Внимание

Прежде чем получить доступ, представить или обновить содержимое из базы данных CloudKit с помощью CloudKit JS, необходимо ранее определить схему этой базы данных.

Дополнительные сведения см. в следующих документах:

Внимание

Компания Apple предоставляет инструменты, которые помогают разработчикам надлежащим образом соблюдать Общий регламент по защите данных Европейского союза (GDPR).

Дополнения Foundation Framework

Apple включила следующие изменения в платформу Foundation в iOS 9:

Изменения в NSBundle

Следующие изменения были внесены в класс NSBundle для iOS 9:

  • GetPreservationPriorityForTag (NSString tag) — получает текущий приоритет сохранения для ресурсов с заданным тегом. Допустимые значения находятся в диапазоне 0.0 1.0до , ресурсы с наименьшим приоритетом будут удалены сначала.
  • SetPreservationPriorityForTag (double priority, NSSet tags) — задает текущий приоритет сохранения для ресурсов с заданными тегами. Допустимые значения находятся в диапазоне 0.0 1.0до , ресурсы с наименьшим приоритетом будут удалены сначала.

Дополнительные сведения см. в справочнике apple NSBundle.

Изменения в NSProcessInfo

Каждый процесс, выполняемый на устройстве iOS, имеет один агент сведений о процессе (PIA). Используйте класс NSProcessInfo, чтобы предоставить сведения о текущем PIA и управлении питанием и тепловым управлением для данного процесса.

Например, для управления автоматическим завершением процесса можно использовать следующий код:

// Disable automatic termination
var activity = NSProcessInfo.ProcessInfo.BeginActivity(NSActivityOptions.AutomaticTerminationDisabled, "Define reason for change here...");

// Perform the required task
...

// Return to normal operation
NSProcessInfo.ProcessInfo.EndActivity(activity);

Дополнительные сведения см. в справочнике по NSProcessInfo Apple.

Реагирование на режим низкой мощности

LowPowerModeEnabled Используйте свойство класса NSProcessInfo, чтобы определить, включен ли режим низкой мощности на устройстве iOS, на котором запущено приложение. Например:

// Is the device in low power mode?
if (NSProcessInfo.ProcessInfo.LowPowerModeEnabled) {
    // Reduce activity to conserve energy...
} else {
    // Return to normal activity...
}

Изменения в HealthKit Framework

Apple включила следующие изменения в платформу HealthKit в iOS 9:

  • Поддержка массового удаления и отслеживания удаления записей в базе данных HealthKit. Дополнительные сведения см. в справочнике по классам HKDeletedObject, HKAnchoredObjectQuery и HKHealthStore.
  • Новые категории и характеристики отслеживания были добавлены в HKQuantityTypeIdentifier класс (например UVExposure) и в HKCategoryTypeIdentifier класс (например OvulationTestResult, ).

Дополнительные сведения о работе с HealthKit см. в документации по HealthKit в Xamarin.iOS.

Изменения платформы локальной проверки подлинности

Apple включила следующие изменения в платформу локальной проверки подлинности в iOS 9:

  • EvaluateAccessControl Используя методы EvaluatePolicy класса LAContext, теперь можно повторно использовать совпадения Touch ID из предыдущих успешных попыток разблокировки.
  • Возможность получить список зарегистрированных пальцев.
  • Поддержка отслеживания при добавлении или удалении пальца из проверки подлинности.
  • Возможность использовать контекст проверки подлинности в вызовах цепочки ключей и поддержку оценки списков управления доступом к цепочке ключей.
  • Возможность отмены запроса пользователя из кода.

Дополнительные сведения см. в разделе Touch ID и Face ID с помощью Xamarin.iOS.

Изменения LAContext

В класс LAContext для iOS 9 были внесены следующие изменения:

  • TouchIdAuthenticationMaximumAllowableReuseDuration — возвращает максимальное время, когда можно повторно использовать проверку подлинности сенсорного идентификатора.
  • EvaluatedPolicyDomainState — возвращает или задает состояние вычисляемой политики.
  • MaxBiometryFailures — устарело в iOS 9.
  • TouchIdAuthenticationAllowableReuseDuration Возвращает или задает время повторного использования проверки подлинности сенсорного идентификатора.
  • EvaluateAccessControl — асинхронно оценивает политику проверки подлинности.
  • Недопустимое значение . Недопустимое проверка подлинности с заданным идентификатором сенсорного ввода.
  • IsCredentialSet — возвращает true , если учетные данные заданы в данный момент.
  • SetCredentialType Задает заданный тип учетных данных.

Дополнительные сведения см. в справочнике apple LAContext.

Изменения MapKit Framework

Apple включила следующие изменения в платформу MapKit в iOS 9:

  • MapKit теперь предоставляет поддержку запуска приложения Map непосредственно в транзитных направлениях и для запроса транзитного предполагаемого времени прибытия (ETA) с помощью классов MKLaunchOptions и MKDirections .
  • Результаты поиска, возвращаемые MapKit и классом CLGeocoder , также могут предоставить часовой пояс результата.
  • Теперь вы можете полностью настроить заметки карты, представленные приложением iOS, с помощью DetailCalloutAccessoryView свойства класса MKAnnotationView .

Дополнительные сведения о работе с Карты Карты и заметками в справочнике по CLGeocoder в Xamarin.iOS и ClGeocoder в документации Apple см. в документации по iOS для iOS и iOS для iOS.

Дополнения Платформы PassKit

Apple включила следующие изменения в платформу PassKit в iOS 9:

  • Apple Pay теперь поддерживает как дебетовые, так и кредитные карта вместе с обнаружением карта. Дополнительные сведения см. в разделе "Сети платежей" в справочнике по классам Apple PKPaymentRequest.
  • Непосредственно в приложении Xamarin.iOS теперь можно добавлять платежные сети и карта издателей в Apple Pay. Дополнительные сведения см. в справочнике по классу PKAddPaymentPassViewController в Apple.

Дополнительные сведения о работе с PassKit см. в документации по PassKit в Xamarin.iOS.

Дополнения платформы служб Safari

Apple включила следующие изменения в платформу служб Safari в iOS 9:

  • Теперь можно использовать новый класс SFSafariViewController для отображения веб-содержимого в приложении Xamarin.iOS. Он предоставляет возможность совместного использования данных веб-сайта и файлов cookie с приложением Safari и включает в себя несколько функций Safari (например, читатель и автозаполнения). SFSafariViewController включает кнопку "Готово ", которая вернет пользователей в приложение после завершения просмотра веб-содержимого.

Так как класс SFSafariViewController предназначен для отображения одной страницы веб-содержимого, его следует использовать для замены элементов управления WKWebKit или UIWebView в существующих приложениях Xamarin.iOS.

Отображение веб-сайта

Приведенный ниже код является примером вызова SFSafariViewController из другого контроллера представления:

// Create an instance of the Safari Services View Controller
var controller = new SFSafariViewController(new NSUrl("http://www.xamarin.com"));

// Display website
PresentViewController(controller, true, null);

Изменения платформы UIKit

Apple включила множество улучшений в несколько элементов платформы UIKit для iOS 9. В следующих разделах описаны эти изменения.

Трехмерные события касания

Новые возможности iOS 9 и i Телефон 6s и i Телефон 6s Plus, 3D Touch добавляет чувствительные жесты давления к приложениям iOS. В результате, если приложение работает в iOS 9 (или более поздней версии) и устройство iOS может поддерживать 3D Touch, изменения в давлении будут вызваны TouchesMoved событием.

Из-за этого изменения поведения приложения iOS должны быть готовы TouchesMoved к вызову события чаще, даже если координаты X/Y не изменились.

Дополнительные сведения см. в руководстве по 3D Touch .

Функции "Открыть на месте документа"

Используя либо FinishedLaunching (application, launchOptions) WillFinishLaunching (Application, launchOptions) методы класса UIApplicationDelegate , вы можете открыть документ и изменить его на месте (в отличие от работы с копией).

Чтобы обеспечить поддержку новых функций открытого места, добавьте LSSupportsOpeningDocumentsInPlace ключ в файл Info.plist приложения Xamarin.iOS со значениемYES.

Дополнительные сведения см. в справочнике apple UIApplicationDelegate.

Расширенные события сенсорного ввода

Apple предоставила несколько улучшений для touch Events в iOS 9. К ним относятся возможность использовать прогнозирование сенсорного ввода и получать доступ к промежуточным касаниям между обновлениями дисплея.

Дополнительные сведения см. в руководстве по обработке событий Apple для iOS .

Получение специального содержимого

Новый NSDataAsset класс позволяет приложению Xamarin.iOS получить содержимое, адаптированное к памяти и графическим возможностям устройства iOS, на котором он в настоящее время работает.

Новые привязки макета

Новые NSLayoutAnchor и NSLayoutDimension макетные классы привязки работают с новыми свойствами привязки класса UIView (напримерLeadingAnchor, иWidthAnchor) для упрощения макета в iOS 9.

Дополнительные сведения о работе с классами AutoLayout и Size в приложении Xamarin.iOS и справочнике по NSLayoutAnchor Apple, справочнику по NSLayoutAnchor, справочнику по NSLayoutDimension и uiView см. в этой статье.

Новые доступные для чтения поля содержимого

Новый UILayoutGuide класс можно использовать для предоставления удобочитаемых полей содержимого и определения областей рисования для содержимого внутри представления. Дополнительные сведения см. в справочнике Apple UILayoutGuide.

Ввод текста в изменениях уведомлений

Класс UIUserNotificationAction имеет новое Behavior свойство, которое можно использовать для поддержки ввода текста из уведомлений.

Изменения UIApplicationDelegate

Хотя apple официально не рекомендуется, они предлагают заменить все вызовы FinishedLaunching (UIApplication application) метода UIApplicationDelegate классом или WillFinishLaunching (UIApplication application, NSDictionary launchOptions) методамиFinishedLaunching (UIApplication application, NSDictionary launchOptions).

Дополнительные сведения см. в справочнике apple UIApplicationDelegate.

Изменения UIKit Dynamics

Apple включила следующие изменения в UIKit Dynamics в iOS 9:

  • Dynamics теперь обеспечивает поддержку границ конфликтов, не являющихся прямоугольными.
  • Новый настраиваемый UIFieldBehavior класс используется для поддержки различных типов полей.
  • В класс добавлены UIAttachmentBehavior дополнительные типы вложений.

Дополнительные сведения см. в справочнике по UIAttachment Apple.

Изменения UIPickerView и UIDatePicker

До iOS 9 элементы управления UIPickerView и UIDatePicker не изменялись и автоматически изменяли размер для заполнения ширины контейнера (обычно ширина устройства iOS, на котором запущено приложение).

В iOS 9 это автоматическое изменение размера больше не происходит, и элементы управления будут отображаться в ширину 320 точек на всех устройствах iOS независимо от размера экрана и ориентации.

Чтобы исправить эту ситуацию, используйте классы автоматического макета и размера, чтобы закрепить ширину элемента управления к краям родительского контейнера (представление) и указать необходимую высоту. Дополнительные сведения о работе с классами автоматического макета и размера см. в документации по унифицированным раскадровкам в приложении Xamarin.iOS.

Новый класс UITextInputAssistantItem

Используйте новый UITextInputAssistantItem класс для макета групп кнопок панели на панели ярлыков. Панель сочетаний клавиш — это новая область, доступная на мягкой клавиатуре для предоставления сочетаний клавиш.