Dodatkowe zmiany struktury systemu iOS 9
W tym artykule omówiono dodatkowe, drobne zmiany lub ulepszenia istniejących struktur dla systemu iOS 9.
Oprócz istotnych zmian w systemie iOS firma Apple wprowadziła modyfikacje i ulepszenia kilku istniejących struktur w systemie iOS 9.
Dodatki struktury AVFoundation
W strukturze AVFoundation klasa AVSpeechSynthesisVoice umożliwia teraz określenie głosu według identyfikatora oprócz języka.
Na przykład poniższy kod pobiera listę wszystkich dostępnych głosów:
var voices = AVSpeechSynthesisVoice.GetSpeechVoices ();
Następnie możesz użyć jednej z głosów z listy, ustawiając ją jako Voice
właściwość wystąpienia klasy AVSpeachUtterance .
Klasa AVQueuePlayer obsługuje teraz kombinację internetowego przesyłania strumieniowego i nośnika opartego na plikach w kolejce. Poprzednie wersje mogą kolejkować tylko nośniki tego samego typu.
Aby uzyskać więcej informacji, zobacz AvSpeechSynthesisVoice Reference firmy Apple.
Dodatki struktury AVKit
Aby pracować z nową funkcją Picture-in-Picture (PIP), struktura AVKit obejmuje nowe AVPictureInPictureController
klasy AVPlayerViewController :
- AVPictureInPictureController — ta klasa umożliwia aplikacji systemu iOS 9 reagowanie na uruchamianie odtwarzania wideo przez użytkownika w pływającym, z możliwością zmiany rozmiaru okna PIP na urządzeniu iPad.
- AVPlayerViewController — zarządza kontrolerem
AVPlayer
używanym do prezentowania wideo w pływającym, z możliwością zmiany rozmiaru okna PIP na urządzeniu iPad.
Aby uzyskać więcej informacji, zobacz dokumentację multitasking dla tabletu iPad oraz dokumentację AVPictureInPictureController firmy Apple i dokumentację AVPlayerViewController.
Wprowadzenie do usług internetowych CloudKit
Struktura CloudKit usprawnia tworzenie aplikacji, które uzyskują dostęp do usługi iCloud. Obejmuje to pobieranie danych aplikacji i praw do zasobów, a także możliwość bezpiecznego przechowywania informacji o aplikacji. Ten zestaw zapewnia użytkownikom warstwę anonimowości, umożliwiając dostęp do aplikacji przy użyciu identyfikatorów iCloud bez udostępniania informacji osobistych.
Nowa struktura usług internetowych CloudKit udostępnia bibliotekę JavaScript (CloudKit JS), którą można włączyć w witrynie internetowej, aby zapewnić dostęp do tych samych danych i zawartości opartych na zestawie CloudKit co aplikacja platformy Xamarin.iOS.
Ważne
Aby można było uzyskać dostęp do bazy danych CloudKit lub zaktualizować zawartość przy użyciu biblioteki CloudKit JS, musisz wcześniej zdefiniować schemat tej bazy danych.
Aby uzyskać więcej informacji, zobacz następujące dokumenty:
- Wprowadzenie do zestawu CloudKit — wprowadzenie do korzystania z zestawu CloudKit w aplikacji platformy Xamarin.iOS.
- CloudKit Quick Start — wprowadzenie firmy Apple do zestawu CloudKit.
- Dokumentacja struktury CloudKit JS — dokumentacja zestawu CloudKit JS firmy Apple.
- Katalog CloudKit: wprowadzenie do biblioteki CloudKit (Cocoa i JavaScript) — przykładowa aplikacja firmy Apple korzystająca z bibliotek CloudKit i CloudKit JS.
Ważne
Firma Apple udostępnia narzędzia pomagające deweloperom w prawidłowym obsłudze ogólnego rozporządzenia o ochronie danych (RODO) Unii Europejskiej.
Dodatki struktury Foundation
Firma Apple uwzględniła następujące zmiany w strukturze Foundation w systemie iOS 9:
Zmiany w NSBundle
W klasie NSBundle dla systemu iOS 9 wprowadzono następujące zmiany:
GetPreservationPriorityForTag (NSString tag)
— Pobiera bieżący priorytet zachowywania zasobów przy użyciu danego tagu. Prawidłowe wartości znajdują się w zakresie0.0
do1.0
, zasoby o najniższym priorytetu zostaną najpierw przeczyszczone.SetPreservationPriorityForTag (double priority, NSSet tags)
— Ustawia bieżący priorytet zachowywania zasobów przy użyciu podanych tagów. Prawidłowe wartości znajdują się w zakresie0.0
do1.0
, zasoby o najniższym priorytetu zostaną najpierw przeczyszczone.
Aby uzyskać więcej informacji, zobacz Dokumentację NSBundle firmy Apple.
Zmiany w NSProcessInfo
Każdy proces uruchomiony na urządzeniu z systemem iOS ma jednego agenta informacji o procesie (PIA). Użyj klasy NSProcessInfo, aby dostarczyć informacje o bieżącej klasie PIA oraz sterowaniu zasilaniem i temperaturą dla danego procesu.
Aby na przykład kontrolować automatyczne zakończenie procesu, można użyć następującego kodu:
// 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);
Aby uzyskać więcej informacji, zobacz Dokumentację NSProcessInfo firmy Apple.
Reagowanie na tryb niskiego zasilania
LowPowerModeEnabled
Użyj właściwości klasy NSProcessInfo, aby określić, czy na urządzeniu z systemem iOS włączono tryb niskiego zasilania, na którym działa aplikacja. Na przykład:
// Is the device in low power mode?
if (NSProcessInfo.ProcessInfo.LowPowerModeEnabled) {
// Reduce activity to conserve energy...
} else {
// Return to normal activity...
}
Zmiany struktury HealthKit
Firma Apple uwzględniła następujące zmiany w strukturze HealthKit w systemie iOS 9:
- Obsługa zbiorczego usuwania i śledzenia wpisów w bazie danych HealthKit. Aby uzyskać więcej informacji, zobacz Dokumentację klas HKDeletedObject, HKAnchoredObjectQuery i HKHealthStore.
- Nowe kategorie i cechy śledzenia zostały dodane do
HKQuantityTypeIdentifier
klasy (na przykładUVExposure
) i doHKCategoryTypeIdentifier
klasy (npOvulationTestResult
. ).
Aby uzyskać więcej informacji na temat pracy z zestawem HealthKit na platformie Xamarin.iOS, zobacz dokumentację Wprowadzenie do zestawu HealthKit .
Zmiany w lokalnej strukturze uwierzytelniania
Firma Apple uwzględniła następujące zmiany w strukturze uwierzytelniania lokalnego w systemie iOS 9:
EvaluateAccessControl
Za pomocą metod iEvaluatePolicy
klasy LAContext można teraz ponownie używać dopasowań funkcji Touch ID z poprzednich pomyślnych prób odblokowania.- Możliwość uzyskania listy aktualnie zarejestrowanych palców.
- Obsługa śledzenia po dodaniu lub usunięciu palca z uwierzytelniania.
- Możliwość używania kontekstu uwierzytelniania w wywołaniach pęku kluczy i obsłudze oceny list kontroli dostępu pęku kluczy.
- Możliwość anulowania monitu użytkownika z poziomu kodu.
Aby uzyskać więcej informacji, zobacz Touch ID i Face ID with Xamarin.iOS (Funkcje Touch ID i Face ID w środowisku Xamarin.iOS).
Zmiany w obiekcie LAContext
W klasie LAContext dla systemu iOS 9 wprowadzono następujące zmiany:
- TouchIdAuthenticationMaximumAllowableReuseDuration — zwraca maksymalny czas ponownego użycia uwierzytelniania touch ID.
- EvaluatedPolicyDomainState — pobiera lub ustawia stan ocenianych zasad.
- MaxBiometryFailures — została wycofana w systemie iOS 9.
- TouchIdAuthenticationAllowableReuseDuration pobiera lub ustawia czas ponownego użycia uwierzytelniania za pomocą identyfikatora dotykowego.
- EvaluateAccessControl — asynchronicznie ocenia zasady uwierzytelniania.
- Invalidate — unieważnia dane uwierzytelnianie za pomocą identyfikatora touch ID.
- IsCredentialSet — zwraca
true
wartość, jeśli poświadczenia są obecnie ustawione. - SetCredentialType Ustawia dany typ poświadczeń.
Aby uzyskać więcej informacji, zobacz dokumentację LAContext firmy Apple.
Zmiany struktury MapKit
Firma Apple uwzględniła następujące zmiany w strukturze MapKit w systemie iOS 9:
- Zestaw MapKit zapewnia teraz obsługę uruchamiania aplikacji Map bezpośrednio w kierunkach tranzytowych i wysyłania zapytań dotyczących tranzytowego szacowanego czasu przyjazdu (ETA) przy użyciu klas MKLaunchOptions i MKDirections .
- Wyniki wyszukiwania zwrócone przez zestaw MapKit i klasę CLGeocoder mogą również zapewnić strefę czasową wyniku.
- Teraz możesz w pełni dostosować adnotacje mapy prezentowane przez aplikację systemu iOS przy użyciu
DetailCalloutAccessoryView
właściwości klasy MKAnnotationView .
Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą Mapy i przewodników dotyczących systemu iOS — eksplorowanie adnotacji i nakładek w dokumentacji zestawu MapKit, aby uzyskać więcej informacji na temat pracy z Mapy i adnotacjami na platformie Xamarin.iOS i dokumentacji CLGeocoder firmy Apple.
Dodatki struktury PassKit
Firma Apple uwzględniła następujące zmiany w strukturze PassKit w systemie iOS 9:
- Usługa Apple Pay obsługuje teraz zarówno karty debetowe sklepu, jak i karty kredytowe wraz z kartami Discover. Aby uzyskać więcej informacji, zobacz sekcję Payment Networks (Sieci płatności) w artykule PKPaymentRequest Class Reference (Dokumentacja klasy PKPaymentRequest firmy Apple).
- Bezpośrednio w aplikacji platformy Xamarin.iOS możesz teraz dodawać sieci płatnicze i wystawcy kart do usługi Apple Pay. Aby uzyskać więcej informacji, zobacz Dokumentację klasy PKAddPaymentPassViewController firmy Apple.
Aby uzyskać więcej informacji na temat pracy z zestawem PassKit na platformie Xamarin.iOS, zobacz dokumentację Wprowadzenie do zestawu PassKit .
Dodatki struktury usług Safari
Firma Apple uwzględniła następujące zmiany w strukturze usług Safari w systemie iOS 9:
- Teraz możesz użyć nowej klasy SFSafariViewController do wyświetlania zawartości internetowej w aplikacji Xamarin.iOS. Zapewnia możliwość udostępniania danych i plików cookie witryny internetowej w aplikacji Safari oraz zawiera kilka funkcji przeglądarki Safari (takich jak Czytelnik i AutoWypełnianie). SfSafariViewController zawiera przycisk Gotowe , który zwróci użytkowników do aplikacji po zakończeniu przeglądania zawartości internetowej.
Ponieważ klasa SFSafariViewController jest dostosowana do wyświetlania jednej strony zawartości internetowej, należy rozważyć użycie jej do zastąpienia dowolnych kontrolek WKWebKit lub UIWebView w istniejących aplikacjach platformy Xamarin.iOS.
Wyświetlanie witryny internetowej
Poniższy kod to przykład wywoływania kontrolera SFSafariViewController z poziomu innego kontrolera widoku:
// 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);
Zmiany struktury UIKit
Firma Apple wprowadziła wiele ulepszeń do kilku elementów struktury UIKit dla systemu iOS 9. W poniższych sekcjach szczegółowo opisano te zmiany.
Zdarzenia 3D Touch
Nowość dla systemów iOS 9 i i Telefon 6s i i Telefon 6s Plus, 3D Touch dodaje gesty wrażliwe na nacisk do aplikacji systemu iOS. W związku z tym, jeśli aplikacja jest uruchomiona w systemie iOS 9 (lub nowszym), a urządzenie z systemem iOS może obsługiwać funkcję 3D Touch, zmiany ciśnienia spowodują TouchesMoved
podniesienie zdarzenia.
Ze względu na tę zmianę zachowania aplikacje systemu iOS powinny być przygotowane na TouchesMoved
wywoływanie zdarzenia częściej, nawet jeśli współrzędne X/Y nie uległy zmianie.
Aby uzyskać więcej informacji, zobacz przewodnik Wprowadzenie do technologii 3D Touch .
Funkcje otwierania w miejscu dokumentu
Za pomocą FinishedLaunching (application, launchOptions)
metod lub WillFinishLaunching (Application, launchOptions)
klasy UIApplicationDelegate można teraz otworzyć dokument i zmodyfikować go w miejscu (w przeciwieństwie do pracy nad kopią).
Aby obsługiwać nowe funkcje otwierania w miejscu, dodaj LSSupportsOpeningDocumentsInPlace
klucz do pliku Info.plist aplikacji platformy Xamarin.iOS z wartością YES
.
Aby uzyskać więcej informacji, zobacz dokumentację UIApplicationDelegate firmy Apple.
Rozszerzone zdarzenia dotykowe
Firma Apple oferuje kilka ulepszeń funkcji Touch Events w systemie iOS 9. Obejmują one możliwość korzystania z przewidywania dotykowego i uzyskiwania dostępu do pośrednich operacji dotykowych między odświeżeniami ekranu.
Aby uzyskać więcej informacji, zobacz Przewodnik obsługi zdarzeń firmy Apple dla systemu iOS .
Pobieranie dostosowanej zawartości
Nowa NSDataAsset
klasa umożliwia aplikacji platformy Xamarin.iOS pobieranie zawartości dostosowanej do możliwości pamięci i grafiki urządzenia z systemem iOS, na którym jest aktualnie uruchomione.
Nowe kotwice układu
Nowe NSLayoutAnchor
i NSLayoutDimension
układowe klasy kotwic działają z nowymi właściwościami kotwicy klasy UIView (np LeadingAnchor
. i WidthAnchor
), aby ułatwić układ w systemie iOS 9.
Aby uzyskać więcej informacji na temat pracy z klasami AutoLayout i Size w aplikacji Xamarin.iOS oraz dokumentacji NSLayoutAnchor firmy Apple, dokumentacji NSLayoutAnchor, dokumentacji NSLayoutDimension i dokumentacji interfejsu użytkownika, zobacz wprowadzenie do ujednoliconych scenorysów.
Nowe czytelne marginesy zawartości
Nowa UILayoutGuide
klasa może służyć do zapewniania czytelnych marginesów zawartości i definiowania regionów rysowania zawartości wewnątrz widoku. Aby uzyskać więcej informacji, zobacz Dokumentację UILayoutGuide firmy Apple.
Wprowadzanie tekstu w modyfikacjach powiadomień
Klasa UIUserNotificationAction ma nową Behavior
właściwość, która może służyć do obsługi wprowadzania tekstu z powiadomień.
Zmiany UIApplicationDelegate
Chociaż firma Apple nie jest formalnie przestarzała, sugeruje zastąpienie wszystkich wywołań FinishedLaunching (UIApplication application)
metody klasy UIApplicationDelegate metodami FinishedLaunching (UIApplication application, NSDictionary launchOptions)
lub WillFinishLaunching (UIApplication application, NSDictionary launchOptions)
.
Aby uzyskać więcej informacji, zobacz dokumentację UIApplicationDelegate firmy Apple.
UIKit Dynamics Changes
Firma Apple uwzględniła następujące zmiany w usłudze UIKit Dynamics w systemie iOS 9:
- Usługa Dynamics zapewnia teraz obsługę granic kolizji nie prostokątnych.
- Nowa, dostosowywalna
UIFieldBehavior
klasa jest używana do obsługi różnych typów pól. - Do klasy dodano
UIAttachmentBehavior
dodatkowe typy załączników.
Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą dołączenia użytkownika firmy Apple.
Zmiany UIPickerView i UIDatePicker
Przed systemem iOS 9 kontrolki UIPickerView i UIDatePicker były nieosiągalne i automatycznie zmieniały rozmiar, aby wypełnić szerokość kontenera (zwykle szerokość urządzenia z systemem iOS, na którym była uruchomiona aplikacja).
W systemie iOS 9 ta automatyczna zmiana rozmiaru nie jest już wykonywana, a kontrolki będą renderowane na szerokości 320 punktów na wszystkich urządzeniach z systemem iOS, niezależnie od rozmiaru i orientacji ekranu.
Aby rozwiązać tę sytuację, użyj klas automatycznego układu i rozmiaru, aby przypiąć szerokość kontrolki do krawędzi kontenera nadrzędnego (widoku) i określić wymaganą wysokość. Zapoznaj się z naszą dokumentacją Wprowadzenie do ujednoliconych scenorysów , aby uzyskać więcej informacji na temat pracy z klasami automatycznego układu i rozmiarów w aplikacji Xamarin.iOS.
Nowa klasa UITextInputAssistantItem
Użyj nowej UITextInputAssistantItem
klasy, aby układać grupy przycisków paska na pasku skrótów. Pasek skrótów to nowy obszar, który jest dostępny na miękkiej klawiaturze w celu zapewnienia skrótów do wpisywania.