IOS 5-arkitektur och SDK-ramverk

föregående Innehållsförteckning nästa
historien om iOS gå med i Apple iOS 5 Developer Program

lär SwiftUI och ta din iOS utveckling till nästa nivå
SwiftUI Essentials – iOS 14 Edition boken finns nu i tryck ($39.99) och eBook ($29.99) utgåvor. Läs mer…

köp Tryck förhandsgranska bok

när vi utvecklar appar för iPad tillåter Apple oss inte direkt åtkomst till någon av den här hårdvaran. I själva verket sker all hårdvaruinteraktion uteslutande genom ett antal olika lager av programvara som fungerar som mellanhänder mellan applikationskoden och enhetens hårdvara. Dessa lager utgör det som kallas ett operativsystem. När det gäller iPad är detta operativsystem känt som iOS.

för att få en bättre förståelse för iPad-utvecklingsmiljön kommer detta kapitel att titta i detalj på de olika lagren som består av operativsystemet iOS 5 och ramarna som gör att vi som utvecklare kan skriva iPad-applikationer.

innehåll

iPhone OS blir iOS

före lanseringen av iPad i 2010, operativsystemet som körs på iPhone var allmänt kallas iPhone OS. Med tanke på att operativsystemet som används för iPad är i huvudsak detsamma som på iPhone var det inte mycket meningsfullt att namnge det iPad OS. Istället beslutade Apple att anta ett mer generiskt och icke-enhetsspecifikt namn för operativsystemet. Med tanke på Apples förkärlek för namn prefixade med bokstaven ’ i ’(iTunes, iBookstore, iMac etc) var det logiska valet naturligtvis iOS. Tyvärr är iOS också namnet som Cisco använder för operativsystemet på sina routrar (Apple verkar också ha en förkärlek för att ignorera varumärken). När du utför en internetsökning för iOS, var därför beredd att se ett stort antal resultat för Ciscos iOS som absolut inte har något att göra med Apples iOS.

en översikt över iOS 5-arkitekturen

som tidigare nämnts består iOS av ett antal olika programlager, som var och en tillhandahåller programmeringsramar för utveckling av applikationer som körs ovanpå den underliggande hårdvaran.

dessa operativsystemlager kan presenteras schematiskt som illustreras i Figur 4-1:

arkitekturen för iOS 5

figur 4-1

vissa diagram som är utformade för att grafiskt avbilda iOS-programstacken visar en extra ruta placerad ovanför Cocoa Touch-lagret för att indikera de applikationer som körs på enheten. I ovanstående diagram har vi inte gjort det eftersom det skulle föreslå att det enda gränssnittet som är tillgängligt för appen är Cocoa Touch. I praktiken kan en app direkt ringa ner något av lagren i stapeln för att utföra uppgifter på den fysiska enheten.

som sagt, men varje operativsystemskikt ger en ökande abstraktionsnivå bort från komplexiteten att arbeta med hårdvaran. Som iOS-utvecklare bör du därför alltid leta efter lösningar på dina programmeringsmål i ramarna i iOS-lagren på högre nivå innan du använder dig av att skriva kod som når ner till de lägre nivålagren. I allmänhet, ju högre nivå av lager du programmerar till, desto mindre ansträngning och färre kodrader måste du skriva för att uppnå ditt mål. Och som alla veteranprogrammerare kommer att berätta för dig, desto mindre kod måste du skriva desto mindre möjlighet måste du introducera buggar.

nu när vi har identifierat de olika lagren som utgör iOS 5 kan vi nu titta mer detaljerat på de tjänster som tillhandahålls av varje lager och motsvarande ramverk som gör dessa tjänster tillgängliga för oss som applikationsutvecklare.

Cocoa Touch Layer

Cocoa Touch layer sitter högst upp i iOS-stacken och innehåller de ramar som oftast används av iPad-applikationsutvecklare. Cocoa Touch är främst skriven i Objective-C, är baserad på Standard Mac OS X Cocoa API (som finns på Apples stationära och bärbara datorer) och har utökats och modifierats för att möta behoven hos iPad-hårdvaran.

Cocoa Touch layer tillhandahåller följande ramar för iPad-apputveckling:

UIKit Framework (UIKit.framework)

UIKit framework är ett stort och funktionsrikt Objective-C – baserat programmeringsgränssnitt. Det är utan tvekan det ramverk som du kommer att spendera större delen av din tid på att arbeta med. Hela böcker kan, och förmodligen kommer, skrivas om UIKit-ramverket ensam. Några av de viktigaste funktionerna i UIKit är följande:

  • användargränssnitt skapande och hantering (textfält, knappar, etiketter, färger, teckensnitt etc)
  • Application lifecycle management
  • Application händelsehantering (t. ex. pekskärm användarinteraktion)
  • Multitasking
  • trådlös utskrift
  • dataskydd via kryptering
  • Klipp ut, kopiera och klistra in funktionalitet
  • webb-och textinnehåll presentation och hantering
  • datahantering
  • integration mellan program
  • push notification i samband med push notification service
  • lokala meddelanden (en mekanism där en applikation som körs i bakgrunden kan få användarens uppmärksamhet)
  • tillgänglighet
  • accelerometer, batteri, närhetssensor, kamera-och fotobibliotekets interaktion
  • Pekskärmsigenkänning
  • fildelning (möjligheten att göra programfiler lagrade på enheten tillgängliga via iTunes)
  • Blue tooth-baserad peer to peer-anslutning mellan enheter
  • anslutning till externa skärmar

för att få en känsla för rikedomen i denna ram är det värt att spendera lite tid på att surfa på Apples UIKit referensmaterial som finns tillgängligt online på:

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIKit_Framework/index.html

karta Kit Ram (MapKit.framework)

om du har spenderat någon märkbar tid med en iPad så är chansen att du har behövt använda kartprogrammet mer än en gång, antingen för att få en karta över ett visst område eller för att generera vägbeskrivningar för att få dig till din avsedda destination. Map Kit framework ger ett programmeringsgränssnitt som gör att du kan bygga kartbaserade funktioner i dina egna applikationer. Detta gör att du bland annat kan visa rullbara kartor för vilken plats som helst, visa kartan som motsvarar enhetens aktuella geografiska läge och kommentera kartan på olika sätt.

Push Notification Service

Push Notification Service gör det möjligt för applikationer att meddela användare om en händelse även när programmet för närvarande inte körs på enheten. Sedan introduktionen av denna tjänst har den oftast använts av nyhetsbaserade applikationer. Vanligtvis när det är nyheter kommer tjänsten att generera ett meddelande på enheten med nyhetsrubriken och ge användaren möjlighet att ladda motsvarande nyhetsapp för att läsa mer information. Denna varning åtföljs vanligtvis av en ljudvarning och vibration av enheten. Denna funktion bör användas sparsamt för att undvika att irritera användaren med frekventa avbrott.

meddelande UI Ram (MessageUI.Framework)

Message UI framework ger allt du behöver för att tillåta användare att skriva och skicka e-postmeddelanden från din ansökan. Faktum är att ramverket till och med tillhandahåller användargränssnittselementen genom vilka användaren går in i e-postadresseringsinformationen och meddelandeinnehållet. Alternativt kan denna information vara fördefinierad i din ansökan och sedan visas för användaren att redigera och godkänna innan du skickar.

adressbok UI Ram (AddressUI.framework)

med tanke på att en nyckelfunktion för iPad är som en kommunikationsenhet och digital assistent borde det inte bli för mycket av en överraskning att ett helt ramverk är dedikerat till integrationen av adressbokdata i dina egna applikationer. Det primära syftet med ramverket är att göra det möjligt för dig att komma åt, visa, redigera och ange kontaktinformation från iPad-adressboken från din egen applikation.

Spel Kit Ram (GameKit.framework)

Game Kit framework ger peer-to-peer-anslutning och röstkommunikation mellan flera enheter och användare så att de som kör samma app kan interagera. När den här funktionen först introducerades förväntades det av Apple att den främst skulle användas i flerspelarspel (därav valet av namn) men de möjliga applikationerna för den här funktionen sträcker sig tydligt långt bortom spelutveckling.

iad-ramverket (iAd.framework)

syftet med iad-ramverket är att tillåta utvecklare att inkludera bannerannonsering i sina applikationer. Alla annonser betjänas av Apples egen annonstjänst.

Event Kit UI Framework

Event Kit UI framework introducerades i iOS 4 och tillhandahålls för att kalenderhändelserna ska kunna nås och redigeras från en applikation.

Konton Ram (Konton.framework)

iOS 5 introducerar begreppet systemkonton. Dessa tillåter i huvudsak att kontoinformationen för andra tjänster lagras på iOS-enheten och nås från programkoden. För närvarande är systemkonton begränsade till Twitter-konton, även om andra tjänster som Facebook sannolikt kommer att visas i framtida iOS-utgåvor. Syftet med Accounts Framework är att tillhandahålla ett API som gör det möjligt för applikationer att komma åt och hantera dessa systemkonton.

Twitter Ram (Twitter.ram)

Twitter-ramverket tillåter Twitter-integration att läggas till i applikationer. Ramverket fungerar tillsammans med Kontonramverket för att få tillgång till användarens Twitter-kontoinformation.

iOS Media Layer

Medielagrets roll är att förse iOS med ljud -, video -, animations-och grafikfunktioner. Som med de andra lagren som består av iOS-stacken, medielagret består av ett antal ramar som kan användas när man utvecklar iPad-appar. I det här avsnittet kommer vi att titta på var och en i tur och ordning.

Core Video Framework (CoreVideo.framework)

Core Video Framework ger buffertstöd för Core Media framework. Även om detta kan utnyttjas av applikationsutvecklare är det vanligtvis inte nödvändigt att använda denna ram.

Core Text Framework (CoreText.framework)

iOS Core Text framework är ett C-baserat API som är utformat för att underlätta hanteringen av avancerade textlayout-och teckensnittskrav.

Bild I/O-Ram (ImageIO.framework)

bild-i/O-ramverket, vars syfte är att underlätta import och export av bilddata och bildmetadata, introducerades i iOS 4. Ramverket stöder ett brett utbud av bildformat inklusive PNG, JPEG, TIFF och GIF.

Resurser Bibliotek Ram (AssetsLibrary.Framework)

resursbiblioteket tillhandahåller en mekanism för att lokalisera och hämta video-och fotofiler som finns på iPad-enheten. Förutom att komma åt befintliga bilder och videor tillåter detta ramverk också att nya foton och videor sparas i standardenhetens fotoalbum.

Kärngrafikramverk (CoreGraphics.ram)

iOS Core Graphics Framework (annars känd som Quartz 2D API) ger en lätt tvådimensionell renderingsmotor. Dragen av detta ramverk inkluderar PDF-dokument skapande och presentation, vektorbaserad ritning, transparenta skikt, bana baserad ritning, kantutjämning rendering, färg manipulation och hantering, bildåtergivning och gradienter. De som är bekanta med Quartz 2D API som körs på MacOS X kommer gärna att lära sig att implementeringen av detta API är detsamma på iOS.

Kärnbildramverk (CoreImage.framework)

ett nytt ramverk introducerat med iOS 5 som ger en uppsättning video-och bildfiltrerings-och manipuleringsfunktioner för applikationsutvecklare.

Kvarts Kärna Ram (QuartzCore.framework)

syftet med Quartz Core framework är att tillhandahålla animeringsfunktioner på iPad. Det ger grunden för majoriteten av de visuella effekterna och animationerna som används av UIKit framework och ger ett Objective-C-baserat programmeringsgränssnitt för skapande av specialiserad animering inom iPad-appar.

OpenGL ES framework (OpenGLES.ram)

under många år har industristandarden för högpresterande 2D-och 3D-grafikritning varit OpenGL. Ursprungligen utvecklad av den nu nedlagda Silicon Graphics, Inc (SGI) under 1990-talet i form av GL, är den öppna versionen av denna teknik (OpenGL) nu under vård av ett ideellt konsortium bestående av ett antal stora företag inklusive Apple, Inc., Intel, Motorola och ARM Holdings.

OpenGL för Inbyggda System (ES) är en lätt version av den fullständiga OpenGL-specifikationen som är utformad speciellt för mindre enheter som iPad.

iOS 3 eller senare stöder både OpenGL ES 1.1 och 2.0 på vissa iPhone-modeller (som iPhone 3GS och iPhone 4). Tidigare versioner av iOS och äldre enhetsmodeller stöder endast OpenGL ES version 1.1.

GLKit-Ramverket (GLKit.Framework)

GLKit framework är ett Objective-C – baserat API som är utformat för att underlätta uppgiften att skapa OpenGL ES-baserade applikationer.

NewsstandKit Framework (NewsstandKit.Framework)

Newsstand-applikationen är en ny funktion i iOS 5 och är avsedd som en central plats för användare att få tillgång till tidningar och tidskrifter. NewsstandKit-ramverket möjliggör utveckling av applikationer som använder den här nya tjänsten.

iOS-ljudstöd

iOS kan stödja ljud i AAC -, Apple Lossless (ALAC), a-law, ima/ADPCM, Linjär PCM, Brasilien-law, DVI/Intel ima ADPCM, Microsoft GSM 6.10 och AES3-2003-format genom stöd från följande ramverk.

av Foundation framework (AVFoundation.framework)

ett Objective – C-baserat ramverk som är utformat för att Möjliggöra uppspelning, inspelning och hantering av ljudinnehåll.

Kärnljudramar (CoreAudio.ram, AudioToolbox.ram och AudioUnit.framework)

ramverken som består av Core Audio för iOS definierar ljudtyper som stöds, uppspelning och inspelning av ljudfiler och strömmar och ger också åtkomst till enhetens inbyggda ljudbehandlingsenheter.

Open Audio Library (OpenAL)

OpenAL är en plattformsoberoende teknik som används för att ge hög kvalitet, 3D-ljudeffekter (även kallad positions ljud). Positionsljud kan användas i en mängd olika applikationer men används vanligtvis för att ge ljudeffekter i spel.

Ram För Mediaspelare (MediaPlayer.framework)

iOS Media Player framework kan spela upp video i .mov,. mp4,.m4v, och .3GP-format med olika komprimeringsstandarder, upplösningar och bildhastigheter.

Core Midi Ram (CoreMIDI.Framework)

Core MIDI framework introducerades i iOS 4 och tillhandahåller ett API för applikationer för att interagera med MIDI-kompatibla enheter som syntar och tangentbord via iPads dockningskontakt.

iOS Core Services Layer

iOS Core Services layer ger mycket av grunden som de tidigare refererade lagren är byggda på och består av följande ramar.

Adressbok Ram (Adressbok.framework)

adressboken framework ger programmatisk tillgång till iPad adressbok kontaktdatabas tillåter program för att hämta och ändra kontaktposter.

CFNetwork Framework (CFNetwork.Framework)

CFNetwork framework tillhandahåller ett C – baserat gränssnitt till TCP / IP – nätverksprotokollstacken och låg nivååtkomst till BSD-uttag. Detta gör det möjligt att skriva programkod som fungerar med HTTP -, FTP-och domännamnsservrar och skapa säkra och krypterade anslutningar med Secure Sockets Layer (SSL) eller Transport Layer Security (TLS).

Ram För Kärndata (CoreData.framework)

detta ramverk tillhandahålls för att underlätta skapandet av datamodellering och lagring i MVC-baserade applikationer (Model-View-Controller). Användning av Core Data framework minskar avsevärt mängden kod som måste skrivas för att utföra vanliga uppgifter när man arbetar med strukturerad data i en applikation.

Core Foundation Framework (CoreFoundation.framework)

Core Foundation framework är ett C-baserat ramverk som ger grundläggande funktionalitet som datatyper, strängmanipulation, rå blockdatahantering, URL-manipulation, trådar och kör loopar, datum och tider, grundläggande XML-manipulation och port-och uttagskommunikation. Ytterligare XML-funktioner utöver de som ingår i detta ramverk tillhandahålls via libxml2-biblioteket. Även om detta är ett C-baserat gränssnitt, är de flesta funktionerna i Core Foundation framework också tillgängliga med Objective-C-omslag via Foundation Framework.

Core Media Framework (CoreMedia.framework)

Core Media framework är den lägre nivå grunden på vilken av-grundskiktet är byggt. Medan de flesta ljud-och videouppgifter kan, och faktiskt bör, utföras med hjälp av higher level av Foundation framework, tillhandahålls åtkomst också för situationer där kontroll på lägre nivå krävs av iOS-applikationsutvecklaren.

Kärntelefoni Ram (CoreTelephony.framework)

iOS Core telefoni framework tillhandahålls för att tillåta applikationer att förhöra enheten för information om den aktuella mobiltelefonleverantören och för att få meddelande om telefonirelaterade händelser.

EventKit Framework (EventKit.framework)

ett API som är utformat för att ge applikationer tillgång till kalendern och larm på enheten.

Foundation Framework (Foundation.ram)

grundramen är det vanliga Objective – C-ramverket som kommer att vara bekant för dem som har programmerat i Objective-C på andra plattformar (troligen Mac OS X). I huvudsak består detta av Objective-C-omslag runt mycket av det C-baserade Kärnfundamentet.

Core Location Framework (CoreLocation.Framework)

Core Location framework låter dig få den aktuella geografiska platsen för enheten (latitud, longitud och höjd) och kompassavläsningar från med dina egna applikationer. Metoden som används av enheten för att tillhandahålla koordinater beror på tillgängliga data vid den tidpunkt då informationen begärs och hårdvarustödet från den specifika iPad-modellen som appen körs på (GPS och kompass visas bara på de senaste modellerna). Detta kommer antingen att baseras på GPS-avläsningar, Wi-Fi-nätverksdata eller triangulering av celltorn (eller någon kombination av de tre).

Ramverket För Mobila Kärntjänster (MobileCoreServices.framework)

iOS Mobile Core Services framework ger grunden för Apples Uniform Type Identifiers (UTI) mekanism, ett system för att specificera och identifiera datatyper. Ett stort antal fördefinierade identifierare har definierats av Apple inklusive så olika datatyper som text, RTF, HTML, JavaScript, PowerPoint .PPT-filer, PhotoShop-bilder och MP3-filer.

Lagra Kit Ram (StoreKit.framework)

syftet med Store Kit framework är att underlätta handelstransaktioner mellan din applikation och Apple App Store. Före version 3.0 av iOS var det bara möjligt att debitera en kund för en app när de köpte den från App Store. iOS 3.0 introducerade begreppet ”in app purchase” där användaren kan ges möjlighet att göra ytterligare betalningar inifrån programmet. Detta kan till exempel innebära att implementera en prenumerationsmodell för en applikation, köpa ytterligare funktionalitet eller till och med köpa en snabbare bil för dig att köra i ett racingspel.

SQLite library

möjliggör en lätt, SQL-baserad databas som ska skapas och manipuleras inifrån din iPad ansökan.

Systemkonfigurationsramverk (Systemkonfiguration.ram)

systemkonfigurationsramen tillåter applikationer att komma åt enhetens nätverkskonfigurationsinställningar för att upprätta information om enhetens ”nåbarhet” (till exempel om Wi-Fi eller cellanslutning är aktiv och om och hur trafik kan dirigeras till en server).

Snabb Titt Ram (QuickLook.Framework)

Quick Look framework ger en användbar mekanism för att visa förhandsvisningar av innehållet i filtyper som laddas på enheten (vanligtvis via en internet-eller nätverksanslutning) för vilken programmet inte redan ger stöd. Filformattyper som stöds av detta ramverk inkluderar iWork, Microsoft Office-dokument, RTF-Format, Adobe PDF, bildfiler, offentliga.textfiler och kommaseparerade (CSV).

iOS Core OS-lagret

Core OS-lagret upptar bottenpositionen för iOS-stacken och sitter som sådan direkt ovanpå enhetens hårdvara. Lagret tillhandahåller en mängd olika tjänster, inklusive nätverk på låg nivå, tillgång till externa tillbehör och de vanliga grundläggande operativsystemtjänsterna som minneshantering, filsystemhantering och trådar.

Accelerera Ram (Accelerera.Framework)

Accelerate Framework tillhandahåller ett hårdvaruoptimerat C-baserat API för att utföra komplexa och stora talmatematik, vektor, digital signalbehandling (DSP) och bildbehandlingsuppgifter och beräkningar.

Externa Tillbehör Ram (Externaccessory.framework)

ger möjlighet att förhöra och kommunicera med externa tillbehör som är fysiskt anslutna till iPad via 30-stifts dockningskontakt eller trådlöst via Bluetooth.

Säkerhetsramverk (Säkerhet.framework)

iOS Security framework tillhandahåller alla säkerhetsgränssnitt som du kan förvänta dig att hitta på en enhet som kan ansluta till externa nätverk, inklusive certifikat, offentliga och privata nycklar, förtroendepolicyer, nyckelringar, kryptering, smältningar och Hash-baserad Meddelandeautentiseringskod (HMAC).

System (LibSystem)

som vi tidigare nämnt är iOS byggt på en UNIX-liknande grund. Systemkomponenten i Core OS-skiktet ger ungefär samma funktionalitet som alla andra UNIX-liknande operativsystem. Detta lager innehåller operativsystemkärnan (baserat på Mach-kärnan utvecklad av Carnegie Mellon University) och enhetsdrivrutiner. Kärnan är grunden på vilken hela iOS-plattformen är byggd och ger gränssnittet på låg nivå till den underliggande hårdvaran. Kärnan ansvarar bland annat för minnesallokering, processlivscykelhantering, input/output, interprocess kommunikation, trådhantering, nätverk på låg nivå, filsystemåtkomst och trådhantering.

som apputvecklare är din åtkomst till systemgränssnitten begränsad av säkerhets-och stabilitetsskäl. De gränssnitt som är tillgängliga för dig finns i ett C-baserat bibliotek som heter LibSystem. Som med alla andra lager i iOS-stacken bör dessa gränssnitt endast användas när du är helt säker på att det inte finns något sätt att uppnå samma mål med hjälp av ett ramverk som ligger i ett högre iOS-lager.

lär SwiftUI och ta din iOS utveckling till nästa nivå
SwiftUI Essentials – iOS 14 Edition boken finns nu i tryck ($39.99) och eBook ($29.99) utgåvor. Läs mer…

köp Tryck förhandsgranska bok

föregående Innehållsförteckning nästa
historien om iOS gå med i Apple iOS 5 Developer Program

Lämna ett svar

Din e-postadress kommer inte publiceras.