Bedre kode: Utvikle universelle apper for iOS-enheter

Etter hvert som flere iOS-enheter treffer markedet, bør utviklere vurdere sin tilnærming til å bygge apper beregnet på å kjøres på alle enheter. Da iPhone ble introdusert, var ikke utviklerne opptatt av å lage en enkelt kodebase designet for å kjøre på flere enheter. Det var ingen andre enheter. Da iPod Touch kom inn på markedet, var grensesnittene - størrelse og oppløsning - nesten identiske med den første generasjonen iPhone. Det var veldig enkelt å utvikle, kompilere og publisere en universell app kompatibel med begge enhetene. I dag er det ikke så vanskelig å utvikle en enkelt app som skal kjøres på alle nåværende iOS-enheter.

Prosessen

Apple Xcode gjør koding av universelle binære filer enkle, men ikke automatiske. Det er litt ekstra arbeid - både i planleggings- og kodingsfasene - for å lage en skalerbar universell app. Det første trinnet i å utvikle en universell app er å velge "Universal" fra Enheter-menyen ( figur A ). Xcode vil lage et prosjekt med kode for iPhone-, iPod- og iPad-enhetene. To storyboard-filer blir opprettet og lagt til det universelle prosjektet. Én storyboard-fil støtter skjermstørrelse og oppløsning på iPhone og iPod-enheter, mens den andre storyboard-filen er spesifikk for iPad-familien.

Figur A

I tillegg til de enhetsspesifikke storyboardfilene ( figur B ), vil et universelt prosjekt inneholde to separate områder for å kontrollere distribusjonsinnstillingene for hver type enhet - uavhengig av hverandre. De støttede retningene, appikonene og lanseringsbildene for iPad- og iPhone / iPod-enhetene administreres innenfor forskjellige deler av sammendragsfanen under prosjektinnstillingene ( figur C og D ).

Figur B

Figur C

Figur D

Som du ser har Xcode innebygd støtte for å utvikle universelle apper. Hvis utviklerens intensjon er å opprettholde en felles opplevelse på tvers av alle enheter, følger du bare det samme designet og flytmønstrene i hvert storyboard, sammenstiller og kjører. Hvis det er nødvendig å ha en annen opplevelse på hver enhet, vil imidlertid ytterligere koding være nødvendig.

I delen Avanserte apptriks i iOS-programmeringshåndboken bruker Apple eksempelet på å utvikle en universell app som støtter lansering i liggende retning på en iPad og portrettorientering på iPhone og iPod-enheter. Info.plist er en flott måte å bruke Meta-data for å kontrollere visse aspekter av en iOS-app. Å legge til spesifikke nøkler til Info.plist-filen er en enkel og skalerbar måte å administrere parametere utenfor kodebasen. Ta en titt på List Key Reference for en fullstendig liste over parametere som kan defineres i Info.plist-filen.

Et navn / verdipar i Info.plist-filen er strukturert som følger:

 UserInterfaceOrientation 
 UIInterfaceOrientationLandscape 

Koden identifiserer egenskapen, og koden lukker verdien. I eksemplet over vil alle enheter som støttes av vår universelle app, starte i liggende modus. For å målrette mot en spesifikk enhet legger vi en av de tre enhetstypene til nøkkelen. Hvis vi for eksempel trenger iPhone-enhetene for å starte i portrettmodus, vil vi legge til følgende kode i Info.plist-filen:

 UserInterfaceOrientation-iphone 
 UIInterfaceOrientationPortrait 

De akseptable verdiene er iphone, ipad og ipod.

Utover grensesnittet

Noen ganger er det nødvendig å lage betingede kodebaner for å støtte enhetsspesifikk funksjonalitet. Apple har inkludert en makro for enkelt å bestemme gjeldende enhetstype. Makroen UI_USER_INTERFACE_IDIOM er en del av UIKit-rammeverket, og er tilgjengelig for bruk i alle apper. Hvis enheten er en iPad, vil verdien som returneres fra makroen være UIUserInterfaceIdiomPad. Hvis enheten er iPhone eller iPod Touch, er verdien som returneres UIUserInterfaceIdiomPhone.

Bruk makroen når som helst det er nødvendig å forgrenes eller kjøre enhetsspesifikke rutiner. En typisk betinget uttalelse vil se slik ut:

 Hvis (UI_USER_INTERFACE_IDIOM () == UIUserInterfacePhone) { 
 // Plasser iPhone / iPod-spesifikk kode her ... 
 }ellers{ 
 // Plasser iPad-spesifikk kode her ... 
 } 

Utviklere leter stadig etter måter å minimere mengden kode som kreves for å utvikle en iOS-app. En måte er selvfølgelig å opprettholde et bibliotek med klasser, metoder og funksjoner for gjenbruk. Det er viktig å vurdere muligheten for å bruke disse klassene i universelle apper. Med det i tankene, bør du utvikle klasser med betingede kodebaner der det er nødvendig.

Siste tanker

Det er fordeler og ulemper med å utvikle universelle apper. Fra et vedlikeholds- og støtteperspektiv er en kodebase enklere å administrere. En universell apptilnærming betyr også at en enkelt utgivelse - oppdateringer og oppdateringer - dekker alle enheter samtidig. Forretningskrav kan imidlertid overstyre muligheten for å utvikle og gi ut en universell app. Noen ganger kan det være ønskelig å ha et annet prispunkt for en iPhone-app enn den samme appen som ble utgitt for iPad. For øyeblikket støtter App Store bare en pris for hver app.

Les også:

  • Apputvikling for Human in Human Interface Device
  • Overvinne applikasjonen av iOS-utviklerprogrammet
  • Tips for å generere inntekter fra iOS-appen din

© Copyright 2020 | mobilegn.com