Van 6 t/m 10 juni kwamen ontwikkelaars van over de hele wereld online bijeen voor een inspirerende week vol technologie en community tijdens WWDC 2022. Om op de hoogte te blijven van al het laatste én beste nieuws, sloten we ons met het volledige iOS-team bij de sessies aan. Er waren nog veel meer sessies te volgen, die zelfs tot na het einde van de conferentie doorgingen, dus helaas kan ik ze niet allemaal in deze blog behandelen. Ik zou iedereen graag aanraden om de sessies te bekijken die voor jou en je team interessant kunnen zijn. En vergeet ook zeker de sessies van eerdere jaren niet, want die zijn even nuttig als de nieuwe.
Elke dag kwamen alle sessies van die dag in één keer beschikbaar om 17.00 uur, waardoor het soms moeilijk was om te kiezen wat we nou als eerste wilden zien. Mijn tip is om de video's die je interessant lijken als favoriet op te slaan, zodat je ze makkelijk terug kunt vinden als je ze opnieuw wilt kijken of als je er op een later moment voor wilt gaan zitten.
Verbeterde efficiëntie met Xcode 14
Om te beginnen kijken we normaal gesproken naar de rubriek "What's new", die een samenvatting geeft van wat er gaat worden aangekondigd. Op die manier weet je meteen welke andere aankomende sessies je zou moeten volgen. Toen wij Xcode 14 bekeken, werd ik meteen enthousiast. En dan niet alleen vanwege de toegenomen bouwtijden, maar ook omdat via visuals duidelijk is gemaakt wat er precies hoe lang duurt om te bouwen, zodat je veel sneller de knelpunten kunt identificeren en die vervolgens kunt verhelpen. Later in de week organiseerden ze vervolgsessies om mensen te helpen deze knelpunten op te lossen. Over Xcode 14 gesproken: heb je de nieuwe ontwikkelaarsmodus al gezien? Dit is een nieuwe beveiligingsoptie om debugging op je apparaat in te schakelen, wat voorheen automatisch werkte. Vergeet niet om deze in te schakelen en je apparaat opnieuw op te starten als je gebruikmaakt van iOS 16.
Nieuwe functies in UIKit
Vervolgens was het tijd voor “What's new in UIKit”. Ik vind vooral de nieuwe kalenderweergave interessant, want die hebben we in het verleden ook in onze apps en dat was altijd een uitdaging. Het is geweldig om te zien dat we nu een native versie krijgen waar onze app-gebruikers aan gewend zullen raken. Een andere geweldige functie die er voor mij uitsprong was de SwiftUI-ondersteuning voor UIKit UICollection en UITableView-cellen met behulp van de UIHostingConfiguration. Dit betekent dat de cellen kunnen worden gemaakt met SwiftUI, maar nog steeds gebruikmaken van UIKit-lijsten! Dit zal de aanpassing aan SwiftUI veel soepeler laten verlopen en het opent mogelijkheden voor grote projecten die in UIKit zijn gebouwd.
Bovendien zullen UICollectionView en UITableView een auto-resize celstandaard ingeschakeld hebben, die ook auto-layout cellen ondersteunt. Stel je voor: we hoeven eindelijk niet langer handmatige de grootte aan te passen! Het wordt interessant om te onderzoeken welke optie soepeler scrolt. Aangezien dit nu standaard is ingeschakeld op iOS 16, zullen we onze apps nu waarschijnlijk moeten checken en deze optie uitschakelen als we geen auto cell sizing willen ;)
UI-updates
Over het controleren van onze apps gesproken: er werden UI-updates aangekondigd voor navigatiebalken, UIPageControls, UIScreen en UIDevice-uitfaseringen. Dit betekent dat we onze implementaties moeten controleren en moeten updaten naar de laatste compatibele API's om geen ongewenste resultaten te krijgen. Er is nog wat werk te doen voordat iOS 16 wordt uitgegeven... “What's new in UIKit” introduceerde ook een nieuwe aanvraag met toestemming aan de gebruiker als je het klembord wilt gebruiken, wat weer een grote stap is om gebruikers meer controle te geven over waar apps wel en geen toegang toe hebben.
Als je AppClips gebruikt, zou ik zeker aanraden om “What's new in AppClips” te bekijken, aangezien er enkele leuke functies en tweaks in worden geïntroduceerd. De AppClip kan nu 15 MB groot zijn in plaats van 10 MB (mogelijk omdat bitcode nu afgeschaft is?). Ingeschakelde ondersteuning voor KeyChain delen en iCloudKit (hoewel om veiligheidsredenen beperkt) maakt het makkelijker om gegevens te delen en te gebruiken via AppClip en na het installeren van de hoofd-app. Je kunt dezelfde code hergebruiken en dit is veiliger omdat je rechtstreeks met de KeyChain praat in plaats van met de AppGroups.
Wallet Identity en dynamisch koppelen
De video die er voor mij echt uitsprong bij het bekijken van “What's New”, was “Wallet and Apple Pay”, en dan in het bijzonder de Wallet Identity-verzoeken voor sommige Amerikaanse staten. Met deze functionaliteit kan de gebruiker zijn ID aan zijn Apple Wallet toevoegen en kunnen app-ontwikkelaars een aantal gegevens opvragen om te bepalen of een gebruiker 18 jaar of ouder is (zonder de exacte geboortedatum te weten). Dit zal voor sommige apps een mooie verbetering van de gebruikerservaring betekenen! Ik kan niet wachten om het zelf uit te proberen.
Apple heeft ook een interessante uitlegvideo toegevoegd over statisch versus dynamisch koppelen. Er werd besproken wat de voor- en nadelen zijn en wanneer je deze functie zou moeten gebruiken. Ze hebben zelfs enkele tips toegevoegd over hoe ontwikkelaars de build-/launch-tijden van hun app kunnen verbeteren! Wij raden dan ook zeker aan deze te bekijken als je over elementaire kennis van de functie beschikt. Bij Triple voeren we een groot aantal projecten uit, dus kennis over dit onderwerp is waardevol. De conclusie van deze sessie was in feite om onze nieuwste functie Xcode te gebruiken, en indien mogelijk iOS 13.4 of hoger te gebruiken om optimaal van de voordelen te profiteren.
Als je van async Swift met actors houdt, zou ik Distributed Actors kijken. Vooralsnog vertel ik er niets over, en raad ik je aan om gewoon te kijken ;)
Verbeterde prestaties
In “Improve app size and runtime performance” wordt in detail uitgelegd wat er is veranderd, en dit was zeer informatief! Om de zaken te versnellen, zijn er enkele vlaggen die je in je project kunt gebruiken (hoewel ze aanraden beide commando's uit te proberen om te zien wat het beste werkt voor jouw specifieke project). Deze sessie eindigde met het advies om de nieuwste Xcode 14 te gebruiken en je deployment-doel in te stellen op iOS 16. Het instellen van ons implementatie-doel op iOS 16 zal echter wel enige tijd in beslag nemen, aangezien je gebruikers van de iPhone 6s en 7 met iOS 15 dan moet laten vallen.
Een andere sessie die de app-bouwtijden verlengt is “Demystify Parallelization in Xcode Builds”. Hierin zie je hoe je in het overzicht van de bouw-tijdlijn duidelijk kunt zien hoe Xcode je app aan het bouwen is en hoe je daar je voordeel mee kunt doen. Op die manier kun je nagaan welke onderdelen veel tijd kosten om op te bouwen en waar nodig verbeteringen aanbrengen. En nu je toch bezig bent met je app en Xcode, kun je net zo goed “Track down hangs with Xcode and on-device detection” bekijken om de hangs in je app te elimineren voordat je live gaat. Je gebruikt hier de prestatie-tool voor (die elke ontwikkelaar natuurlijk dagelijks gebruikt, toch?).
Als je even gek bent op debuggen als elke andere ontwikkelaar, zou ik je aanraden om “Debug Swift debugging with LLDB” te bekijken. Hier wordt je leven net even wat makkelijker van.
Meer debugging en het optimaliseren van de batterijduur
Vrijdag was het alweer de laatste dag van WWDC 2022. Hoewel er niet zoveel sessies werden vrijgegeven als op eerdere dagen, waren er toch nog heel wat sessies beschikbaar die we nog niet hadden kunnen bekijken. Ik vond vooral de nieuwe Remote Web Inspector-functie in WKWebView interessant, die wordt uitgelegd in de “What's new in WKWebView”. Dit zal ongetwijfeld helpen om een stuk sneller te debuggen!
Als je net als wij altijd streeft naar maximale optimalisatie van je apps, raad ik ook zeker aan om “Power down: Improve battery consumption” eens te kijken. In deze video wordt uitgelegd hoe je het batterijverbruik kunt minimaliseren, zodat je gebruikers je app langer kunnen gebruiken. De beste tip voor iPhone 13-gebruikers is om de Donkere modus te implementeren, wat resulteert in tot 70% stroomverbruik in hun voorbeeld-app. Hoewel dit natuurlijk maar een voorbeeld is, zou het implementeren van deze functie absoluut een prettige verbetering voor je app zijn.
Na een week vol video's hebben we wel even wat tijd nodig om tijdens het weekend alles te laten bezinken. Je kunt sommige van de sessies natuurlijk gewoon opnieuw bekijken als en wanneer je de besproken functies gaat gebruiken. Volgende week bekijken we nog wat meer video's. Ik kijk vooral uit naar het “SwiftUI cookbook for navigation”, “Eliminate data races using Swift Concurrency”, “Embrace Swift generics” en nog veel meer!