Music room 2

Eerder schreef ik al over de problemen die ik tegenkwam bij MusicRoom. Op het moment dat ik de app uitbracht, kwam Apple met belangrijke nieuwe functionaliteit die het mij makkelijker en moeilijker maakt om op dezelfde voet verder te gaan, zie instant tech debt

Langzaam ben ik aan het werk aan een nieuwe versie. Belangrijkste verschillen:

UX

Het werd al heel snel duidelijk dat het moeilijk is om visueel overzicht te hebben over de rooms. Alleen een titel is niet voldoende. In de nieuwe versie wordt altijd ook een preview gegeven van een room, zodat je meteen kunt zien welke muziek ergens in zit.

Musicroom2

Naast de iPhone ondersteunt de app nu ook de Apple Watch. Op de watch is het erg moeilijk om muziek terug te vinden: maar omdat je met musicroom zelf je muziek kunt organiseren, kun je de muziek die voor jou het belangrijkst heel toegankelijk maken.

En als laatste is de basisfunctionaliteit van de App ook beschikbaar op Apple TV.

Technisch

SwiftUI

In versie 1 heb ik fiks gebruik gemaakt van de techniek SwiftUI. Niet alleen voor de opmaak van de schermen, maar ook voor de navigatie. De techniek is heel veelbelovend, maar zorgt op een aantal cruciale momenten voor bugs die bijna onoplosbaar zijn. Zo zit er een bug in versie 1 die er voor zorgt dat de interface verkleind wordt weergegeven op alleen de bovenste helft vna het scherm! Een bug die duidelijk bij Apple ligt, maar waar ik niet om heen kan werken. Rondom navigatie gebeurden er ook wonderlijke zaken: een wijziging in scherm A, zorgde er ineens voor dat gebruiker naar een ander scherm werd gestuurd zonder dat dat de bedoeling was.

Vandaar dat ik een nieuwe aanpak heb. SwiftUI views pak ik nu in in UIViewControllers. De ViewControllers zijn verantwoordelijk voor de navigatie tussen schermen. Een SwiftUI view heeft slechts de verantwoordelijkheid over één scherm.

Daarnaast maak ik niet meer gebruik van de mogelijkheid om vanuit de SwiftUI view rechtstreeks de database aan te spreken. Ook dit leek heel praktisch, als er iets veranderd in de database dan veranderd het scherm meteen mee. Maar helaas kwam er ook onvoorspelbaar gedrag mee naar boven.

MusicKit

Sinds afgelopen juni is er een nieuwe bibliotheek beschikbaar met de naam MusicKit. MusicKit stelt een programmeur in staat om op een moderne manier muziek te vinden in Apple Music en deze af te spelen. De nieuwe versie van de App gebruikt MusicKit in plaats van het oudere framework MediaPlayer. Een nieuwe framework komt helaas ook met nieuwe bugs. Zo lijkt het voorlopig niet mogelijk te zijn om MP3’s die een gebruiker zelf aan zijn bibliotheek heeft toegevoegd af te spelen. Maar… Het is te merken dat er hard gewerkt wordt vanuit Apple om dit verbeteren, elke versie verdwijnen bugs en wordt het geheel stabieler.

Mac support

Hoe tof het ook is om iets met de mac te doen. MusicKit is gewoon niet af. Totdat het af is voor de mac, doe ik niets meer.

Conclusie

Uiteindelijk zorgen al de wijzigingen ervoor dat ik de App grotendeel opnieuw aan het maken ben. Normaal gesproken niet heel erg verstandig. Maar omdat dit vooral een hobby project is, mag het van mijzelf :-)