Další změny architektur pro iOS 9

Tento článek se zabývá dalšími drobnými změnami nebo vylepšeními stávajících architektur pro iOS 9.

iOS 9 Logo

Kromě hlavních změn v iOSu apple provedl úpravy a vylepšení několika stávajících architektur v iOSu 9.

Přidání architektury AVFoundation

V architektuře AVFoundation teď třída AVSpeechSynthesisVoice umožňuje kromě jazyka zadat hlas podle identifikátoru.

Například následující kód získá seznam všech dostupných hlasů:

var voices = AVSpeechSynthesisVoice.GetSpeechVoices ();

Jeden z hlasů ze seznamu pak můžete použít tak, že ho nastavíte jako Voice vlastnost instance třídy AVSpeachUtterance .

Třída AVQueuePlayer nyní podporuje kombinaci internetových streamů a souborových médií ve frontě. Předchozí verze mohly zařadit do fronty pouze média stejného typu.

Další informace najdete v referenčních informacích společnosti Apple AVSpeechSynthesisVoice.

Doplňky architektury AVKit

Pro práci s novou funkcí Picture-in-Picture (PIP) zahrnuje architektura AVKit nové AVPictureInPictureController třídy AVPlayerViewController:

  • AVPictureInPictureController – tato třída umožňuje aplikaci pro iOS 9 reagovat na uživatele, který spustí přehrávání videa v plovoucím okně pip s možností změny velikosti na iPadu.
  • AVPlayerViewController – spravuje AVPlayer kontroler použitý k prezentaci videa v plovoucím okně pip s možností změny velikosti na iPadu.

Další informace naleznete v dokumentaci k multitaskingu pro iPad a referenční informace společnosti Apple AVPictureInPictureController Reference a AVPlayerViewController Reference.

Představení webových služeb CloudKit

Architektura CloudKit zjednodušuje vývoj aplikací, které přistupují k iCloudu. To zahrnuje načítání práv k datům aplikací a prostředkům a také možnost bezpečného ukládání informací o aplikaci. Tato sada poskytuje uživatelům vrstvu anonymizace tím, že umožňuje přístup k aplikacím se svými ID iCloudu bez sdílení osobních údajů.

Nová architektura Webových služeb CloudKit poskytuje javascriptovou knihovnu (CloudKit JS), kterou je možné začlenit do vašeho webu a poskytnout tak přístup ke stejným datům a obsahu založeným na CloudKitu jako vaše aplikace Xamarin.iOS.

Důležité

Než budete moct získat přístup k databázi CloudKitu, prezentovat nebo aktualizovat obsah z databáze CloudKit JS, musíte mít dříve definované schéma této databáze.

Další informace najdete v následujících dokumentech:

Důležité

Apple poskytuje nástroje , které vývojářům pomáhají správně zvládnout obecné nařízení Evropské unie o ochraně osobních údajů (GDPR).

Doplňky architektury Foundation Framework

Apple zahrnul následující změny architektury Foundation v iOSu 9:

Změny ve skupině NSBundle

Ve třídě NSBundle pro iOS 9 byly provedeny následující změny:

  • GetPreservationPriorityForTag (NSString tag) - Získá aktuální prioritu zachování pro prostředky s danou značkou. Platné hodnoty jsou v rozsahu 0.01.0, prostředky s nejnižší prioritou budou nejprve vyprázdněné.
  • SetPreservationPriorityForTag (double priority, NSSet tags) - Nastaví aktuální prioritu zachování prostředků s danými značkami. Platné hodnoty jsou v rozsahu 0.01.0, prostředky s nejnižší prioritou budou nejprve vyprázdněné.

Další informace najdete v referenčních informacích k NSBundle společnosti Apple.

Změny v NSProcessInfo

Každý proces spuštěný na zařízení s iOSem má jeden proces, procesový informační agent (PIA). Pomocí NSProcessInfo třídy poskytnout informace o aktuální PIA a řízení výkonu a tepelné řízení pro daný proces.

Pokud chcete například řídit automatické ukončení procesu, můžete použít následující kód:

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

Další informace najdete v referenčních informacích k NSProcessInfo společnosti Apple.

Reakce na režim nízkého napájení

LowPowerModeEnabled Pomocí vlastnosti NSProcessInfo třídy určit, zda je režim nízkého výkonu povolen na zařízení s iOSem, na kterém je aplikace spuštěna. Příklad:

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

Změny architektury HealthKit

Apple zahrnul následující změny architektury HealthKit v iOSu 9:

  • Podpora hromadného odstranění a sledování položek v databázi HealthKit. Další informace najdete v referenčních informacích ke třídě HKDeletedObject, HKAnchoredObjectQuery a HKHealthStore společnosti Apple.
  • Do třídy (například UVExposure) a třídy HKCategoryTypeIdentifier (například) byly přidány HKQuantityTypeIdentifier nové kategorie sledování a charakteristiky (například OvulationTestResult).

Další informace o práci s HealthKitem v Xamarin.iOS najdete v naší dokumentaci Úvod do sady HealthKit .

Změny místní architektury ověřování

Apple zahrnul následující změny architektury místního ověřování v iOSu 9:

  • EvaluateAccessControl Pomocí a EvaluatePolicy metod třídy LAContext teď můžete opakovaně používat shody Touch ID z předchozích úspěšných pokusů o odemknutí.
  • Možnost získat seznam aktuálně registrovaných prstů.
  • Podpora sledování při přidání nebo odebrání prstu z ověřování
  • Možnost používat kontext ověřování ve volání řetězce klíčů a podporu pro vyhodnocování seznamů řízení přístupu řetězce klíčů.
  • Možnost zrušit výzvu uživatele z kódu.

Další informace najdete v tématu Touch ID a Face ID s Xamarin.iOS.

Změny LAContext

V třídě LAContext pro iOS 9 byly provedeny následující změny:

  • TouchIdAuthenticationMaximumAllowableReuseDuration – vrátí maximální dobu, po kterou je možné znovu použít ověřování touch ID.
  • EvaluatedPolicyDomainState – Získá nebo nastaví stav vyhodnocené zásady.
  • MaxBiometryFailures - Byl vyřazen v iOSu 9.
  • TouchIdAuthenticationAllowableReuseDuration Získá nebo nastaví dobu, po kterou se dá znovu použít ověřování touch ID.
  • EvaluateAccessControl – Asynchronně vyhodnocuje zásady ověřování.
  • Zneplatnění – Zneplatní dané ověřování touch ID.
  • IsCredentialSet – vrátí true , pokud jsou přihlašovací údaje aktuálně nastavené.
  • SetCredentialType Nastaví daný typ přihlašovacích údajů.

Další podrobnosti najdete v referenčních informacích společnosti Apple k LAContext.

Změny architektury MapKit

Apple zahrnul následující změny architektury MapKit v iOSu 9:

  • MapKit teď poskytuje podporu pro spuštění aplikace Mapy přímo do navigačních pokynů pro dopravu a dotazování odhadovaného času příjezdu (ETA) pomocí tříd MKLaunchOptions a MKDirections .
  • Výsledky hledání vrácené MapKitem a třídou CLGeocoder mohou také poskytnout časové pásmo výsledku.
  • Nyní můžete plně přizpůsobit mapové poznámky prezentované vaší aplikací pro iOS pomocí DetailCalloutAccessoryView vlastnosti MKAnnotationView třídy.

Další informace o práci s Mapy a poznámkami v Xamarin.iOS a reference k CLGeocoder společnosti Apple najdete v dokumentaci k iOSu Mapy a návodu – prozkoumání poznámek a překryvných objektů v dokumentaci k MapKitu.

Doplňky architektury PassKit

Apple zahrnul následující změny architektury PassKit v iOSu 9:

Další informace o práci s PassKitem v Xamarin.iOS najdete v naší dokumentaci Úvod k PassKitu .

Doplňky architektury služby Safari

Apple zahrnul následující změny architektury služeb Safari v iOSu 9:

  • Nyní můžete použít novou třídu SFSafariViewController k zobrazení webového obsahu v aplikaci Xamarin.iOS. Poskytuje možnost sdílet data webových stránek a soubory cookie s aplikací Safari a zahrnuje několik funkcí Safari (například Čtenář a Automatické vyplňování). SFSafariViewController obsahuje tlačítko Hotovo , které vrátí uživatele do vaší aplikace po dokončení prohlížení webového obsahu.

Vzhledem k tomu, že třída SFSafariViewController je přizpůsobena pro zobrazení jedné stránky webového obsahu, měli byste zvážit jeho použití k nahrazení všech ovládacích prvků WKWebKit nebo UIWebView v existujících aplikacích Xamarin.iOS.

Zobrazení webu

Následující kód je příkladem volání SFSafariViewController z jiného kontroleru zobrazení:

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

Změny architektury UIKit

Apple zahrnul mnoho vylepšení několika prvků architektury UIKit pro iOS 9. Tyto změny jsou podrobně popsané v následujících částech.

3D dotykové události

Novinka v iOSu 9 a i Telefon 6s a i Telefon 6s Plus, 3D Touch přidává do aplikací pro iOS citlivá na tlaková gesta. V důsledku toho platí, že pokud vaše aplikace běží na iOSu 9 (nebo novějším) a zařízení s iOSem dokáže podporovat 3D Touch, změny tlaku způsobí TouchesMoved vyvolání události.

Vzhledem k této změně chování by vaše aplikace pro iOS měly být připravené na TouchesMoved vyvolání události častěji, i když se nezměnily souřadnice X/Y.

Další informace najdete v naší příručce Úvod do 3D Touch .

Funkce open-in-place dokumentu

FinishedLaunching (application, launchOptions)WillFinishLaunching (Application, launchOptions) Pomocí nebo metod třídy UIApplicationDelegate teď můžete otevřít dokument a upravit ho na místě (na rozdíl od práce na kopii).

Pokud chcete podporovat novou funkci open-in-place, přidejte LSSupportsOpeningDocumentsInPlace klíč do souboru Info.plist aplikace Xamarin.iOS s hodnotou YES.

Další podrobnosti najdete v referenčních informacích k UIApplicationDelegate od Společnosti Apple.

Události rozšířeného dotykového ovládání

Apple nabízí několik vylepšení dotykových událostí v iOSu 9. Patří mezi ně možnost používat dotykové predikce a získat přístup k přechodným dotykům mezi aktualizacemi zobrazení.

Další podrobnosti najdete v Průvodci zpracováním událostí společnosti Apple pro iOS .

Načítání přizpůsobeného obsahu

Nová NSDataAsset třída umožňuje aplikaci Xamarin.iOS načíst obsah přizpůsobený paměti a grafickým schopnostem zařízení s iOSem, na kterém je aktuálně spuštěná.

Nové ukotvení rozložení

NSLayoutAnchor Nové třídy ukotvení a NSLayoutDimension rozložení pracují s novými vlastnostmi ukotvení třídy UIView (například LeadingAnchor aWidthAnchor), aby bylo rozložení v iOSu 9 jednodušší.

Další informace o práci s autoLayout a třídami velikostí v aplikaci Xamarin.iOS a referenčních informacích k NSLayoutAnchor, NSLayoutDimension Reference a reference k uiView najdete v naší dokumentaci úvodu do sjednocených scénářů.

Nové čitelné okraje obsahu

Novou UILayoutGuide třídu lze použít k poskytnutí čitelných okrajů obsahu a definování oblastí kreslení pro obsah uvnitř zobrazení. Další informace najdete v referenčních informacích společnosti Apple UILayoutGuide.

Textové zadání v úpravách oznámení

UIUserNotificationAction třída má novou Behavior vlastnost, kterou lze použít k podpoře textového vstupu z oznámení.

Změny UIApplicationDelegate

I když společnost Apple formálně není zastaralá, navrhují nahradit všechna volání FinishedLaunching (UIApplication application) metody UIApplicationDelegate třídy buď metodami FinishedLaunching (UIApplication application, NSDictionary launchOptions) , nebo WillFinishLaunching (UIApplication application, NSDictionary launchOptions) metodami.

Další podrobnosti najdete v referenčních informacích k UIApplicationDelegate od Společnosti Apple.

Změny Dynamics sady UIKit

Apple zahrnul následující změny dynamics UIKitu v iOSu 9:

  • Dynamics teď poskytuje podporu pro hranice kolizí, které nejsou obdélníkové.
  • Nová přizpůsobitelná UIFieldBehavior třída se používá k podpoře různých typů polí.
  • Do třídy byly přidány UIAttachmentBehavior další typy příloh.

Další podrobnosti najdete v referenčních informacích k UIAttachment společnosti Apple.

UiPickerView a UIDatePicker – změny

Před iOSem 9 byly ovládací prvky UIPickerView a UIDatePicker nešizovatelné a automaticky by se změnila velikost tak, aby vyplnila šířku jejich kontejneru (obvykle šířka zařízení s iOSem, na kterém aplikace běží).

V iOSu 9 už k této automatické změně velikosti nedojde a ovládací prvky se budou vykreslovat na všech zařízeních s iOSem o šířce 320 bodů bez ohledu na velikost a orientaci obrazovky.

Chcete-li tuto situaci opravit, připnete šířku ovládacího prvku na okraje nadřazeného kontejneru (zobrazení) pomocí třídy automatického rozložení a velikosti a určíte požadovanou výšku. Další informace o práci s třídami automatického rozložení a velikosti v aplikaci Xamarin.iOS najdete v naší dokumentaci Úvod do sjednocených scénářů .

New UITextInputAssistantItem – třída

Pomocí nové UITextInputAssistantItem třídy můžete skupiny tlačítek pruhu rozložení na panelu zástupců. Panel klávesových zkratek je nová oblast, která je k dispozici v softwarové klávesnici, která poskytuje klávesové zkratky pro psaní.