iOS Simulator er en integreret del af enhver iOS-udviklingsproces. Vi kan bare ikke ignorere den. Den nye Simulator fra Xcode 9 bringer en masse nyttige tricks med sig, som kan gøre dig endnu mere produktiv. Endelig erindrede Apple om, at de har Simulator derude! Sammenlignet med tidligere beskedne opdateringer virker denne som en stor ting. 🙌

Så lad os bryde det ned og liste alle de funktioner, jeg fandt i den nye iOS-simulator (nogle tricks kan du også bruge i de gamle simulatorer).

#1 Brug Simulator i fuldskærmstilstand med Xcode

Når du har en 13″ skærm er fuldskærmstilstanden for Xcode bare en livredder. Desværre kunne du ikke tidligere bruge Simulator med Xcode i fuldskærmstilstand sammen med Xcode. Det kan du nu 😎

Fuldskærmstilstand med Xcode 9 og iOS Simulator

Denne funktion er aktiveret som standard fra og med Xcode 9b3. Så du behøver ikke engang at gøre noget for at få det til at virke.

UPD: Det viste sig, at denne funktion er deaktiveret som standard for nogle mennesker, men bare rolig, du kan altid aktivere den via Apple Internal-menuen, som jeg beskrev yderligere.

Hvis du vil udforske flere hemmelige funktioner i ny Simulator, bør du aktivere Apples skjulte Internals menu.

For at gøre det, skal du oprette en tom mappe med navnet “AppleInternal” i rodmappen. Du skal blot køre denne kommando nedenfor og genstarte Simulator:

sudo mkdir /AppleInternal

Det nye menupunkt bør dukke op. ☝️

Note:
Jeg har testet denne fremgangsmåde på Simulator fra Xcode 9b3. Hvis du ikke har den, skal du downloade nyeste Xcode her.

#2 Åbn flere simulatorer på én gang

Kan du huske frustrationen ved at teste din app på forskellige simulatorer? Tidligere var du tvunget til kun at åbne én simulatorinstans ad gangen. Der var mange “hacks”, hvordan man kunne åbne flere instanser af iOS-simulatoren i en ældre version af Xcode. Men endelig med Xcode 9 er denne funktion tilgængelig out of the box.

#3 Ændre størrelsen på simulator ligesom et almindeligt vindue

For Xcode 9 havde vi kun “Scale options” til at justere simulatorens vinduesstørrelse. Nu har Apple endelig gjort størrelsesændring af Simulatorens vindue tilgængelig. Det er en nyttig lille detalje, som kan hjælpe dig med at organisere arbejdsområdet effektivt, hvis du har flere simulatorer åbne.

#4 Optag video af simulator

I det officielle “What’s new”-dokument for Xcode 9 hævder Apple, at du nu kan optage en video af simulatorens skærm. Det er ikke helt sandt. Du kan gøre det selv i de ældre versioner med simctl. Jeg fandt dog ikke noget bevis for, at du kan aktivere videooptagelse fra grænsefladen (bortset fra indbygget skærmoptagelse i iOS 11).

For at få din videofil skal du udføre følgende kommando:

xcrun simctl io booted recordVideo --type=mp4 <PATH TO VIDEO FILE>

booted – betyder, at simctl vælger aktuelt opstartet Simulator. Hvis du har mere end én opstartet Simulator, vælger simctl den aktuelt aktive instans.

#5 Del filer til Simulator direkte fra Finder

Nu har Simulator en Finder-udvidelse, som giver dig mulighed for at dele filer direkte fra Finder-vinduet.

Du kan gøre noget lignende med billed-/videofiler ved hjælp af simctl-kommandoen nedenfor:

xcrun simctl addmedia booted <PATH TO MEDIA FILE>

Det er rart at have sådanne evner. Men at trække&drop filen til Simulatorens vindue virker meget hurtigere for mig.

#6 Åbn URL’er på Simulator

Denne kommer også med simctl. Så du kan også åbne brugerdefinerede URL-skemaer på ældre Simulatorer.

Udfør kommandoen nedenfor med den URL, du har brug for:

xcrun simctl openurl booted <URL>

For listen over alle Apples URL-skemaer skal du tjekke dokumentationen.

#7 Find hurtigt app’s containermappe

Endnu en kommando fra simctl. Du kan finde app’ens container på filsystemet med en enkelt kommando. Du skal blot kende appens bundle-id og udføre nedenstående kommando:

xcrun simctl get_app_container booted <APP'S BUNDLE ID>

Og du kan gøre det endnu hurtigere ved at åbne destinationsmappen i Finder med kommandoen open:

open `xcrun simctl get_app_container booted <APP'S BUNDLE ID>` -a Finder

#8 Start din app i Simulator med kommandolinjeargumenter

Med simctl kan du også starte din app fra terminalen og sende nogle kommandolinjeargumenter der (du kan endda indstille nogle miljøvariabler). Det kan være nyttigt, hvis du vil tilføje en skjult debug-only-adfærd til din app.

Kommandoen nedenfor hjælper dig med det:

xcrun simctl launch --console booted <BUNDLE ID> <YOUR ARGUMENTS>

Du kan få disse kommandolinjeargumenter fra CommandLine.arguments (her er linket til dokumentationen).

#9 Få fuld applikationsinformation med Bundle ID

I nogle tilfælde er det nyttigt at finde ud af, hvor din app-fil eller midlertidige data er placeret i filsystemet. Hvis du har brug for mere omfattende oplysninger, end simctl get_app_container kan give. simctl har også dette fine lille værktøj kaldet appinfo, som vil vise dig nogle oplysninger i følgende format:

{
ApplicationType = User;
Bundle = <PATH TO APP FILE>;
BundleContainer = <PATH TO FOLDER WITH APP FILE>;
CFBundleDisplayName = TestiOSApp;
CFBundleExecutable = TestiOSApp;
CFBundleIdentifier = "com.ahmed.app.TestiOSApp";
CFBundleName = TestiOSApp;
CFBundleVersion = 1;
DataContainer = <PATH TO YOUR DATA>;
GroupContainers = {
};
Path = <PATH TO APP FILE>;
SBAppTags = (
);
}

Udfør kommandoen nedenfor og udforsk output:

xcrun simctl appinfo booted <BUNDLE ID>

En sidste ting…

iOS Simulator er et meget kraftfuldt værktøj, som kan fremskynde din udviklingsproces meget. Men kun hvis du kender alle de små detaljer og tricks. Og selvfølgelig skal du som en god ingeniør kende dine værktøjer.

Her hos Flawless er iOS Simulator ekstremt vigtig for os. Vores produkt er et iOS Simulator-plugin, som giver ingeniører mulighed for at inspicere ethvert design oven på implementeringen lige inde i Simulator. Så jeg kan slet ikke fortælle dig, hvor glad jeg er for denne nye Xcode 9- og Simulator-udgave. Jeg kan ikke vente på den offentlige version! Så vi kan implementere flere nyttige funktioner til at holde en visuel kvalitet af iOS-apps i en god form.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.