Oppgrader din app til iOS 10

I denne artikkelen vil jeg snakke om iOS 10 og hva du må gjøre for å forberede appene dine til iOS 10. 

Som med alle store utgivelser, introduserer iOS 10 en rekke endringer og forbedringer. Noen er påkrevd, andre anbefales, og det er også noen få endringer som kan forbedre applikasjonens brukeropplevelse. La oss starte med en oversikt over hva som kreves hvis du bygger din søknad mot iOS 10 SDK.

1. App Transport Sikkerhet kommer

Den viktigste endringen er ikke strengt knyttet til iOS 10, men det er viktig nok at jeg vil diskutere det først. Selv om App Transport Security (ATS) har eksistert siden iOS 9, har det alltid vært lett å velge bort ATS ved å legge til følgende kodestykke til målet ditt Info.plist.

NSAppTransportSecurity  NSAllowsArbitraryLoads  

Men det er i ferd med å endres. 1. januar 2017 må alle søknader som sendes til App Store, inkludert oppdateringer av eksisterende applikasjoner, overholde ATS-retningslinjene. Dette betyr at din søknad er nødvendig for å kunne kommunisere sikkert med webtjenester over HTTPS.

Hvis du leser min detaljerte diskusjon om App Transport Security, kan du huske at App Transport Security definerer et sett med regler. Serverne din søknad kommuniserer med behovet for å overholde disse reglene. Med andre ord er det ikke nok å lage nettverksforespørsler over HTTPS. Hver server din søknad snakker med må sikres av og overholde moderne sikkerhetsstandarder.

Du kan fortsatt definere unntaksdomener i målets Info.plist, men det er ikke tillatt å velge bort App Transport Security helt.

Lokale nettverkstilkoblinger

Jeg har nylig kjørt inn i et problem relatert til App Transport Security. Applikasjonen til en klient måtte kommunisere med andre enheter på samme nettverk. Det snakker til andre enheter som bruker deres IP-adresse, som ikke støttes av App Transport Security-unntaksdomener. Og for å gjøre ting enda mer komplisert, er IP-adressen til en enhet ikke løst. Det kan og vil endres over tid.

Heldigvis, fra iOS 10, er det mulig å løse dette problemet ved å legge til et ekstra nøkkelverdi-par til NSAppTransportSecurity ordbok i målets Info.plist. Ved å sette verdien av NSAllowsLocalNetworking til JA, Det er mulig å deaktivere App Transport Security for lokal nettverkstrafikk.

Andre muligheter

Hvis du har slitt med App Transport Security tidligere, så anbefaler jeg at du tar en titt på den oppdaterte App Transport Security-dokumentasjonen. Apple har lagt til noen få ekstra nøkler som gjør at de arbeider med ATS mindre av hodepine.

For eksempel laster mange applikasjoner innhold fra nettet i en webvisning. Din søknad vet ofte ikke hvilke nettsteder brukeren skal besøke, noe som gjør det umulig å definere unntaksdomener for App Transport Security i målets Info.plist. Fra iOS 10 kan du deaktivere App Transport Security for webvisning ved å sette inn NSAllowsArbitraryLoadsInWebContent til JA i målets Info.plist.

App Transport Security er nødvendig

Det du trenger å huske er at App Transport Security kreves for alle søknader som sendes til App Store etter 31. desember. Å velge fra App Transport Security er ikke lenger mulig. Vær oppmerksom på at App Store-gjennomgangsteamet krever en forklaring fra deg hvis du delvis velger bort App Transport Security ved å bruke et unntak, for eksempel NSAllowsLocalNetworking eller NSAllowsArbitraryLoadsInWebContent. Du kan lese mer om dette i Apples dokumentasjon.

2. Personvern

Apple fortsetter å investere i å beskytte personvernet til sine kunder, og at engasjementet også har konsekvenser for utviklere. Hva betyr det for deg?

Hvis applikasjonen din får tilgang til en systemtjeneste eller enhetsfunksjon som krever brukerens eksplisitte tillatelse, ser brukeren et systemvarsel der søknaden ber om brukerens tillatelse. Innholdet av det varselet ble levert av operativsystemet hvis søknaden din ikke angav en. Dette har endret seg i iOS 10.

Som av iOS 10, må applikasjonen din fortelle brukeren hvorfor den trenger tilgang til en bestemt systemtjeneste eller enhetsfunksjon. Du gjør dette ved å legge til en nøkkel til målet Info.plist. Hvis søknaden din er lokalisert, bør du også gi en oversettelse for beskrivelsen i InfoPlist.strings fil.

Her er en komplett liste over personverntastene som er tilgjengelige i iOS 10. De fleste av dem skal se kjent, men noen er nye i IOS 10, for eksempel NSSiriUsageDescription og NSAppleMusicUsageDescription.

  • HealthKit
    • NSHealthShareUsageDescription
    • NSHealthUpdateUsageDescription
  • plassering
    • NSLocationUsageDescription
    • NSLocationAlwaysUsageDescription
    • NSLocationWhenInUseUsageDescription
  • NSBluetoothPeripheralUsageDescription
  • NSCalendarsUsageDescription
  • NSVoIPUsageDescription
  • NSCameraUsageDescription
  • NSContactsUsageDescription
  • NSHomeKitUsageDescription
  • NSAppleMusicUsageDescription
  • NSMicrophoneUsageDescription
  • NSMotionUsageDescription
  • NSPhotoLibraryUsageDescription
  • NSRemindersUsageDescription
  • NSSpeechRecognitionUsageDescription
  • NSSiriUsageDescription
  • NSVideoSubscriberAccountUsageDescription

Hvis du ikke legger til en bruksbeskrivelse for systemtjenestene og enhetens egenskaper som programmet bruker, vises en advarsel i konsollen, og systemvarselet som ber brukeren om tillatelse, vises ikke til brukeren. Som et resultat av dette, blir søknaden din nektet tilgang til den aktuelle tjenesten eller evnen.

"Denne appen har forsøkt å få tilgang til personverns sensitive data uten bruksbeskrivelse. Appens Info.plist må inneholde en NSLocationAlwaysUsageDescription-nøkkel med en strengverdi som forklarer brukeren hvordan appen bruker disse dataene."

Det sier seg selv at App Store-vurderingsteamet avviser eventuelle programmer som bryter med denne policyen. Faktisk bygger opplastinger til App Store som ikke overholder denne policyen, avvises automatisk.

Hvis du bruker et tredjepartsbibliotek eller rammeverk i søknaden din, må du sørge for at de riktige bruksbeskrivelsene legges til målgruppene Info.plist. Biblioteker og rammer for annonser krever ofte flere tillatelser du kanskje ikke forventer eller vet om.

3. Swift 3

Hvis du åpner et eksisterende prosjekt for første gang i Xcode 8 og det inneholder Swift, blir du bedt om å overføre til Swift 3. Hvis du ikke føler deg helt klar ennå, spør Xcode deg om å overføre til Swift 2.3 i stedet. Du må velge den ene eller den andre siden Xcode 8 bare støtter disse versjonene av Swift-språket. Swift 2.2.1 og Swift 2.3 er veldig like. Den viktigste forskjellen er at Swift 2.3 er kompatibel med iOS 10, tvOS 10, watchOS 3 og macOS 10.12.

Skal du migrere i dag?

Skal du migrere til Swift 3 i dag? Sannsynligvis ikke. Men vent ikke for lenge. På et tidspunkt vil Apple kreve at utviklere sender inn søknader med Xcode 8, som ikke støtter Swift 2.2.1. Du kan holde fast med Swift 2.3, men hvorfor ville du ikke bare hoppe?

Det er sant at å migrere et prosjekt til Swift 3 har en dramatisk innvirkning på prosjektets kodebase. Nesten hver linje av kode endres på noen måte. API endringene er betydelige. Men oppsiden er at du får bruke Swift 3. Jeg har brukt Swift 3 i flere måneder, og jeg elsker det. Det er en stor forbedring i forhold til Swift 2.2.1 og Swift 2.3.

Planlegge på forhånd

Hvis du jobber med et stort prosjekt for en klient, må du sørge for å planlegge overføringen til Swift 3. For komplekse prosjekter kan migreringen ta flere dager. Fordelene er at du kan begynne å bruke Swift 3 API, og du kan også dra nytte av den forbedrede Swift 3 kompilatoren drevet av LLVM og Clang.

4. Forbedringer og avskrivninger

Med alle store utgivelser av iOS forbedrer Apple plattformen ved å legge til og fjerne APIer. Flere rammer har fått en betydelig oppdatering, og selskapet har også innført flere nye rammer.

Hvorfor er det viktig? Hvis du ønsker å skille seg ut i App Store, betaler det seg for å holde programmene oppdatert og legge til støtte for nye funksjoner på plattformen. Det er dette denne delen handler om.

Brukervarsler

De UILocalNotification klassen er deprecated fra iOS 10. Hva betyr dette for deg? Du kan fortsatt bruke UILocalNotification å planlegge og administrere lokale meldinger, men det vil trolig gå vekk på et tidspunkt. Men hvorfor har Apple besluttet å deprecate UILocalNotification? Det fungerte fint, ikke sant?

I IOS 10 introduserte Apple Brukervarsler rammeverk. Som navnet antyder, er rammen ansvarlig for planlegging, håndtering og håndtering av meldinger, lokalt og eksternt. Det er det som gjør rammen stor. Din søknad trenger ikke lenger å skille mellom lokale og eksterne meldinger. Brukervarslingsrammen tilbyr en enhetlig API for håndtering av lokale og eksterne meldinger.

API-en ser ut og føles veldig fin. Rammeverket behandler lokale og eksterne meldinger det samme fra en utviklerperspektiv, noe som gjør det enklere og transparent å legge til varslingshandlinger. Handlingsvarslingshandlinger er sentralisert i en kortfattet delegatprotokoll. 

Vi har noen opplæringsprogrammer om brukervarselsrammen her på Envato Tuts+!

  • En introduksjon til UserNotifications Framework

    I denne opplæringen lærer du om det nye UserNotifications-rammeverket i iOS 10, tvOS 10 og watchOS 3. Dette nye rammeverket gir et moderne sett med ...
    Davis Allie
    iOS
  • iOS 10: Opprette tilpassede varslingsgrensesnitt

    I denne opplæringen lærer du hvordan du bruker det nye UserNotificationsUI-rammeverket i iOS 10 for å lage egendefinerte grensesnitt for appens lokale og presse ...
    Davis Allie
    iOS SDK

Du kan også være interessert i mine siste blogginnlegg om planlegging av lokale varsler og varslingshandlinger med brukermeldingsrammen. 

Sirikit

En av de større annonsene i årets WWDC var muligheten til å integrere søknaden din med Siri gjennom SiriKit. Selv om alternativene er begrensede for øyeblikket, hvis søknaden passer inn i en av kategoriene som støttes, er det en fin måte å sette søknaden på bortsett fra konkurransen. Siri støtter for tiden et begrenset antall domener, inkludert VoIP-anrop, meldinger og treningsøkter.

Du integrerer med Siri ved å legge til en utvidelse til søknaden din. Hver applikasjon som integrerer med Siri må legge til en intents forlengelse. Det tillater at søknaden din utfører en oppgave som svar på informasjon Siri sender til din søknad. Du kan eventuelt lage en Intents UI forlengelse for å tilpasse utseendet på det resulterende brukergrensesnittet som presenteres for brukeren etter at oppgaven er fullført.

Haptisk tilbakemelding

Den splitter nye haptiske motoren til iPhone 7 og iPhone 7 Plus har åpnet mange nye muligheter for utviklere. I IOS 10 er det mulig å bruke den haptiske motoren til enheten for å gi brukeren taktil tilbakemelding når de utfører en bestemt handling eller en bestemt hendelse oppstår.

Din søknad kan kjøre den haptiske motoren gjennom UIFeedbackGenerator klassen og dens tre konkrete underklasser:

  • UIImpactFeedbackGenerator
  • UINotificationFeedbackGenerator
  • UISelectionFeedbackGenerator

Hver UIFeedbackGenerator Underklasse er utformet for et bestemt scenario. Hvis du legger til støtte for den haptiske motoren, vil du sikkert forbløffe brukerne av søknaden din. Gi det et forsøk.

Kjernedata

Core Data er trolig min favoritt kakao rammeverk, og Apple har gjort det enda mer fantastisk på iOS 10 og med utgivelsen av Swift 3. Dette er den største oppdateringen rammen har sett i de siste årene.

Swift 3 og Xcode 8 samles for å gjøre Core Data enklere å bruke enn noen gang før. Apple introduserte også NSPersistentContainer klassen, som gjør det mulig å sette opp og administrere en Core Data-stakk en bris.

Selskapet selv fornyet underlagene til rammen ved å revurdere samspillet mellom rammene med SQLite. Resultatene er virkelig fantastiske. Det er flott å se at Apple fortsetter å investere i Core Data, mer enn ti år etter introduksjonen på MacOS Tiger.

For å lære mer om Core Data, sjekk ut noen av våre andre kurs og opplæringsprogrammer her på Envato Tuts+.

Hva burde du gjøre?

Hvis du bygger din søknad mot iOS 10 SDK, som betyr at du bruker Xcode 8, må du sørge for at du overholder App Transport Security og retningslinjene for personvern Apple har satt på plass. Pass på at du merker disse boksene først.

Selv om de andre forbedringene og forbedringene er valgfrie, oppfordrer jeg deg til å ta en titt på dem. For eksempel, vent ikke for lenge til å overføre til Swift 3. Du kan overraske brukerne dine ved å legge til støtte for hapticmotoren. Det er valgfritt, men det er en mulighet til å skille seg ut i dagens overfylte App Store.

For å lære mer om Swift 3 eller iOS 10, sjekk ut noen av våre andre kurs og opplæringsprogrammer.