/

/

Varför jag byggde Notarizer
Varför jag byggde Notarizer

Varför jag byggde Notarizer

Därför byggde jag Notarizer

Jag hade precis gjort klart min första macOS-app. Efter att ha jobbat med iOS var det en rejäl tröskel – nya konventioner, nya mönster och en helt annan känsla för hur saker ska hänga ihop. Men jag lyckades. Appen fungerade. Jag var redo att lansera. Det var då jag stötte på notarization: steget där Apple godkänner din app så att personen som öppnar den för första gången slipper se en läskig varning om att kasta den direkt i papperskorgen.

Ärligt talat förstod jag inte riktigt hur det fungerade. Jag läste några guider på nätet, och en del lät rimligt, men mycket kändes helt obegripligt. Så jag gjorde som de flesta och letade efter en app som kunde lösa det åt mig. De jag hittade var antingen dolda bakom en saftig betalvägg eller så proppfulla med inställningar att jag inte visste var jag skulle börja. Dessutom såg de flesta ut att inte ha rörts på flera år.

Så jag öppnade terminalen och försökte göra det för hand. Något gick snett på vägen, och dessutom kunde jag inte anpassa min DMG – det lilla fönstret som dyker upp när man öppnar filen, där man drar appen till programmappen. Jag ville att det skulle se ut på ett visst sätt, och det fanns ingen enkel väg dit.

Det var så Notarizer föddes.

Vad det är

Från början var den bara för mig. En liten app som tog en .app-fil, tuggade sig igenom notarization-stegen och gav mig en DMG som jag faktiskt kunde skicka ut. Inget märkvärdigt. Inga storslagna planer.

Men ju mer jag använde den, desto mer insåg jag att andra utvecklare säkert också ville ha något liknande, särskilt de som gör det här för första gången. Så målet ändrades i tysthet. Från "få det bara att funka" till "hjälp användaren att förstå vad som händer medan det funkar".

Om något misslyckas (ditt Apple-konto är inte aktivt, ett utvecklarcertifikat saknas, din signeringsidentitet är fel) berättar appen vad som gick snett och visar hur du löser det. Det finns en inbyggd FAQ för felen som brukar dyka upp om och om igen, så att du slipper sitta och gräva i forum mitt i natten.

Så fungerar det

Flödet är enkelt. Välj din .app, välj en bakgrundsbild för din DMG, välj dina sparade Apple-inloggningsuppgifter och klicka på kör.

Under huven går appen igenom fyra steg: den kollar dina uppgifter, bygger och signerar din DMG, skickar in den till Apple för notarization och stapling, och verifierar sedan resultatet. Varje steg har en egen logg, så om något går fel ser du exakt var och varför. Om ett steg misslyckas måste du starta om processen, men du slipper i alla fall gissa dig till vad som låg bakom.

Du får också en förhandsvisning av din DMG innan du bygger den. Ärligt talat var detta en av de viktigaste sakerna jag ville lösa. Att klura ut fönsterstorlek, ikonplaceringar och var genvägen till programmappen skulle ligga brukade innebära: bygg din DMG, öppna den, kisande titta, ändra en siffra, bygg igen, öppna igen… runt åttonde försöket börjar man ifrågasätta sina yrkesval. Med Notarizer drar du bara runt sakerna och ser förhandsvisningen uppdateras direkt.

Inloggningsuppgifter sparas en gång och läggs säkert i Keychain. Med mallar kan du spara en hel konfiguration så att nästa release inte startar från noll. Det finns också en valfri AI-diagnos: om ett steg misslyckas kan du skicka loggen till ChatGPT eller Gemini och få ett lösningsförslag. Den är avstängd som standard, och helt valfri att använda.

De irriterande bitarna

Några saker tog längre tid än jag trodde.

macOS GUI-appar ärver inte din terminal-PATH, vilket gör att verktyg installerade med Homebrew (som create-dmg) helt enkelt inte syns om inte appen pekar direkt på dem. Att hitta ditt Developer ID har en liknande hake: standardsökningen i keychain beter sig inte som man förväntar sig inifrån en app, så den måste fråga login-keychain manuellt.

create-dmg är dessutom lite lynnigt. Ibland misslyckas det eftersom Finder eller QuickLook fortfarande håller i bilden. Lösningen är inte särskilt elegant – försök igen upp till tre gånger, rensa upp, vänta några sekunder. Men det fungerar.

Sparkle var det andra stora tidstjuven. Jag hade precis upptäckt det – biblioteket som de flesta Mac-appar använder för automatiska uppdateringar – och att integrera det kändes självklart. Haken är att Sparkles signeringsverktyg ligger gömt djupt inne i Xcodes DerivedData-mapp. Så appen måste leta upp det, köra det, plocka ut signaturen från en enda rad i loggen och lägga in resultatet i din appcast.xml.

Avslutning

Notarizer gör inget som Apples egna verktyg inte redan klarar av. Den paketerar bara ihop dem, så att en release kräver ett enda klick istället för en kvarts arkeologi i terminalhistoriken. Och om du är ny i det här slipper du lösa allt själv. Låt Notarizer hjälpa dig.

senior iOS-utvecklare

Boka ett kostnadsfritt möte

Boka ett kostnadsfritt möte

Låt oss se vad vi kan bygga ihop.

Utvalda
case

Utvalda
case

Utvalda
case

Se hur vi tagit idéer hela vägen