Dette raske tipset vil introdusere deg til noen av de kraftige funksjonene som er tilgjengelige for testing og feilsøking av apper med Xcode og iOS-simulatoren.
I årevis har utviklere kjempet med feilsøking av CoreLocation-baserte applikasjoner i simulatoren på grunn av mangel på innebygd simulatorstøtte for tilpassede koordinater. Selv om prosjekter som FTLocationSimulator var en stor hjelp, ble mange av oss fortsatt avvigende Android-utviklere som enkelt kunne angi plasseringen av Android-simulatoren ved hjelp av de medfølgende DDMS-verktøyene.
Heldigvis har de dagene av rolig misunnelse vært borte i en stund. Med utgivelsen av Xcode 4.2 var iOS Developers i stand til å simulere en standard enhetsplassering for en rekke verdensomspennende byer. Denne tilnærmingen eksisterer fortsatt, og kan gjøres ved å velge "Rediger skjema":
Og deretter navigere til "Alternativer" -fanen i popup-vinduet:
Imidlertid har nyere versjoner av iOS Simulator gjort det enda enklere å endre den simulerte plasseringen, og du kan nå oppnå dette i kjøretid.
Etter at du har startet simulatoren, velger du Feilsøking> Beliggenhet vil produsere følgende menyalternativer:
Som du kan se, kan du nå enkelt sette dine egne koordinater ved hjelp av alternativet "Egendefinert plassering":
Selvfølgelig krever dette at du faktisk vet nøyaktig koordinatene til stedet du vil simulere, og ikke bare gateadressen. Prosessen med å generere breddegrad og lengdegradskoordinater fra en adresse refereres til som geokoding, og det finnes en rekke gratis nettsteder og iOS-apper som vil generere koordinater fra en gateadresse for deg. Den gratis IOS App Geocode Noe samt webområdet geocoder.us er begge verdt å nevne, og denne geocoder mashupen er en rask og enkel måte å trekke koordinater direkte fra Google Maps til..
Simulatoren kommer også med en rekke forhåndsdefinerte steder og stier du kan bruke til å teste dine egne applikasjoner. En kort beskrivelse av hver er gitt nedenfor.
Hvis du velger "Apple" fra lokaliseringsmenyen, blir den nåværende plasseringen til Apple HQ på 1 Infinite Loop, Cupertino, CA. For brukere av tidligere versjoner av Xcode, gjenkjenner du dette som den eneste plasseringen som støttes av Simulatoren.
Hvis du velger alternativet "City Bicycle Ride", vil CoreLocation-rammen begynne å generere koordinater som følger en forhåndsinnstilt bane nær Apple HQ. Sykkelalternativet vil føre til at oppdateringer oppstår med en hastighet på omtrent 5 - 7 meter per sekund.
Alternativet "City Run" er akkurat som "City Bicycle Ride" -innstillingen, med unntak av at oppdateringer oppstår med en sporingshastighetsinnstilling på omtrent 3 - 4 meter per sekund.
Alternativet "Freeway Drive" er forskjellig fra de to foregående i både sti og hastighet i meter per sekund. Banen beveger seg langs Junipero Serra Freeway like nord for Apple HQ, og hastigheten ser vanligvis ut til å være mellom 20 og 35 meter per sekund.
I teorien bør dette alternativet generere koordinater knyttet til Apple Store-steder. Men med iOS 6.0 Simulator og Xcode 4.5 synes dette alternativet å være dårlig ødelagt. I min erfaring med å teste dette, synes koordinatene alltid å begynne rundt ca. 33.7718 N, 112.9031 W, og deretter øke gradvis i både nord- og vest-avlesningene, og flytter nåværende sted på en diagonalbane til ingensteds. Jeg har sendt dette som en feilrapport til Apple, så hvis andre opplever det samme problemet, forhåpentligvis vil det bli løst snart!
Fordi Apple Maps-appen kan kjøre i simulatoren, er det enkelt å teste ut noen av alternativene ovenfor. Bare start iOS-simulatoren som du normalt ville, sett din simulerte plassering, og start deretter kartprogrammet.
Med iOS 6 SDK kan du nå kjøre programmer som bruker Maps direkte i simulatoren!
En annen flott funksjon av iOS Simulator er muligheten til å plassere animasjoner i slowmotion med Feilsøking> Slå langsomme animasjoner menyalternativ.
Å gjøre det kan være svært nyttig når du prøver å lage en tilpasset UIKit-animasjon og må sørge for at hver ramme ser akkurat ut.
Kanskje en mer praktisk bruk av denne funksjonen er å redusere animasjonene som oppstår når du roterer enheten for å polere orienteringsendringsanimasjonene (se Session 517 fra WWDC 2012 for mer informasjon om hvordan du kan polere orienteringsanimasjoner).
De Debug menyalternativet gir også den utrolig nyttige muligheten til å fargere visninger i sanntid:
Du kan bruke disse alternativene til å visuelt identifisere blandede lag, kopierte bilder, feiljusterte bilder og visninger som er gjengitt offscreen.
Dette er en nyttig funksjon for feilsøking av egne applikasjoner, og det kan også være innsiktsfullt for å undersøke standardprogrammene på simulatoren. Følgende skjermbilde viser Maps-appen og Passbook-appen med alternativet "Color Blended Layers" valgt:
Mens ingenting vil erstatte opplevelsen av å teste applikasjoner på ekte maskinvare, har simulatoren kommet langt i de siste årene med real-world event emulering. Faktisk er det mulig at noen hendelser, som å bytte en statuslinje "i samtale" eller generere minneadvarsler, er enklere å feilsøke i simulatoren enn med en faktisk enhet.
En titt på maskinvare menyen vil avsløre følgende arrangement alternativer:
De fleste av disse er selvforklarende, men noen fortjener ytterligere notat.
Alternativet "Simuler maskinvare-tastatur" er hovedsakelig for feilsøking av iPad-applikasjoner der brukeren sannsynligvis vil ha et fysisk tastatur koblet via Bluetooth eller dockekontakten. Testing med maskinvare tastaturet alternativet bør være en viktig del av iPad app beta test.
Med "TV-ut" -alternativet kan du simulere VGA / HDMI-tilkoblinger ved å lage et nytt vindu som kan ha en oppløsning så lav som 640x480 eller så høyt som 1920x1080 (dvs. 1080p).
Den enkleste måten å legge til bilder på iOS-simulatoren, er å dra og slippe dem enkeltvis fra OS X Finder-vinduet til simulatorvinduet.
Men hvis du trenger å legge til mange forskjellige bilder for testing, blir denne prosessen raskt ineffektiv. Når du trenger å legge til mange bilder samtidig, kan du vurdere å skrive et enkelt iOS-program som kan gå gjennom bildelisten og legge til hvert bilde i fotobiblioteket med UIImageWriteToSavedPhotosAlbum
funksjon. For å se hvordan dette er gjort, ta en titt på Trinn 6 i Min Build a Photo App med GPUImage opplæring.
En annen tilnærming ville være å legge til bildefiler direkte i Simulator-filsystemet, men trinnene for å oppnå dette synes å endres med hver ny versjon av iOS. Å bygge din egen importør kan være en mer pålitelig tilnærming på lang sikt (vite om en bedre måte å oppnå dette på? Legg igjen en kommentar nedenfor!).
For mine egne iOS-programmer prøver jeg alltid å distribuere for både den nåværende versjonen av IOS og en tidligere versjon. Som standard inneholder Xcode imidlertid bare en simulator for gjeldende iOS-versjon. Heldigvis er det en enkel metode for å få simulatoren til den forrige iOS-versjonen også.
Med Xcode åpen, velg Xcode> Innstillinger fra menylinjen, og naviger deretter til "Nedlastinger" -fanen. Herfra har du muligheten til å installere tidligere iOS-simulatorer samt kommandolinjeverktøy-pakken. Jeg anbefaler å installere alle tre alternativene som vises:
Etter at installasjonen er fullført, kan du velge 5,0 / 5,1 iOS-simulatorene når du bygger og kjører programmene dine.
Hvilke tips eller triks har du for å jobbe med iOS-simulatoren? Legg igjen din tilbakemelding i kommentarfeltet nedenfor!