Mac war schon immer anders als sein enger Verwandter iOS, insbesondere in Bezug darauf, was der Benutzer auf seinem System ausführen kann und was nicht. Auch nach dem Aufkommen von Apple Silicon hat Apple klargestellt, dass der Mac immer noch ein Mac ist und auch dann gehackt werden kann , wenn er auf einer neuen Architektur ausgeführt wird.
Für Programmierer bedeutet dies, dass wir bei der Entwicklung für die Mac-Plattform die Wahl haben: Wir können Anwendungen unabhängig außerhalb des Mac App Store nur über den Mac App Store oder eine Kombination aus beiden verteilen.
Dieser Artikel ist das Ergebnis meiner Gedanken zu diesem Thema. Es sollte eine Anleitung zu den wichtigen Informationen beim Verteilen von Mac-Apps außerhalb des App Store sein und keine detaillierte Beschreibung bestimmter Schritte. Ich hoffe, dass die hier präsentierten Informationen Neulingen helfen, das Rätsel aus diesem Prozess zu lösen, und dass meine eigene Prozessbeschreibung als Bezugspunkt hilfreich sein wird.
App Store und Direktvertrieb: Vor- und Nachteile
Alle diese Optionen haben ihre eigenen Vor- und Nachteile. Zunächst einmal können einige Mac-Anwendungen einfach nicht über den Mac App Store verteilt werden. Ein Beispiel hierfür ist meine AirBuddy- App , die einen Systemagenten ausführen und private APIs verwenden muss, um eine umfassende Integration mit drahtlosen Apple-Geräten zu ermöglichen, was im App Store verboten ist. Gleiches gilt für viele andere Arten von Anwendungen, die unter den Bedingungen der Mac-Sandbox einfach nicht ausgeführt werden können.
Für diejenigen, die die Wahl haben, habe ich eine Liste der Vor- und Nachteile einer Veröffentlichung im Mac App Store oder einer unabhängigen Distribution zusammengestellt.
Vorteile des Mac App Store
- Apple vertreibt, verkauft und lizenziert für Sie.
- .
- Apple .
- , Apple, , Mac App Store
Mac App Store
- ,
- macOS , , «», API .
- .
- -, App Store
- , Apple App Store
- , ( , )
- (consumable) (non-consumable) ( StoreKit)
- Apple, , Apple ( , , CloudKit, )
Catalyst SwiftUI
Catalyst hat eine Reihe neuer Mac-Apps auf den Markt gebracht, da es viel einfacher ist, eine handelsübliche iPad-App auf den Mac zu portieren. Anwendungen, die über Catalyst auf macOS portiert wurden, müssen nicht im App Store veröffentlicht werden, selbst wenn das Original für iOS vorhanden ist.
Darüber hinaus gibt es derzeit kein TestFlight für macOS (einer meiner Wünsche für 2021). Wenn Sie also Beta-Builds einer von Catalyst erstellten App verteilen möchten, muss dies außerhalb des Mac App Store erfolgen, und dies ist nicht viel unterscheidet sich von der Verteilung der Anwendung in der Produktion.
Vieles von dem, was in diesem Artikel beschrieben wird, gilt für Catalyst-Anwendungen - schließlich handelt es sich um Mac-Anwendungen, für einige Anwendungen ist jedoch zusätzliches Hacken erforderlich. Apple verhindert, dass alle AppKit-Funktionen direkt von einer Catalyst-Anwendung aus verwendet werden. Mit ein wenig Arbeit können Sie die Catalyst-Anwendung jedoch dazu bringen, viele der Funktionen des Mac zu verwenden, einschließlich AppleScript-Unterstützung und anderer Funktionen.
Bei der Entwicklung von SwiftUI-Anwendungen für Mac sollten keine wesentlichen Unterschiede im Verteilungsprozess auftreten, da in einer SwiftUI-Anwendung alle macOS-API-Funktionen ohne die für Catalyst-Anwendungen erforderlichen Hacks verwendet werden können.
Ausbreitung
Die Verteilung einer Anwendung hat zwei Aspekte: Herunterladen, Speichern und Herunterladen der Anwendungsbinärdatei und ihrer Updates sowie Erstellen eines Pakets, das für Ihre Benutzer geeignet ist.
Hosting
Der erste große Schritt, um Ihre Mac-App in die Hände von Nicht-App Store-Benutzern zu bekommen, ist die Auswahl der Verteilung der Binärdatei. Das Fehlen eines App Store bedeutet, dass Sie die App-Binärdateien und -Updates irgendwo im Internet hosten müssen, um den Benutzern einen Download-Link zu geben.
Dies kann auf viele verschiedene Arten erreicht werden. Für eine Open Source-Anwendung können Sie Releases auf Github verwenden und sogar einen Update-Feed der Anwendung in einem Github-Repository hosten. So verteile ich die WWDC-App für macOS .
Für kommerzielle Apps habe ich Backblaze B2 verwendet, um App-Binärdateien, Delta-Updates und Update-Feeds zu speichern und alle Anforderungen über Cloudflare zu übertragenDamit ich meine eigene Domain zum Herunterladen / Aktualisieren habe und dem Server bei Bedarf auch Filterung, Caching und Logik hinzufüge.
B2 ist ein äußerst erschwinglicher Anbieter (ich bezahle selten mehr als 1 USD pro Monat). Die meisten Mac-Apps sind klein. Selbst wenn Ihre App stark heruntergeladen wird, ist es unwahrscheinlich, dass Sie viel für Speicher / Bandbreite bezahlen müssen. Amazon S3-Buckets sind eine weitere beliebte Option, aber das Dashboard macht mir Angst. Deshalb bevorzuge ich B2, das viel einfacher (und billiger) ist.
Bisher habe ich die Veröffentlichung der Versionen meiner Anwendungen nicht automatisiert. Um eine neue Version herunterzuladen, verwende ich einfach Transmitals Kunde für meine B2-Eimer. Bevor wir die Version auf den Server hochladen, gibt es übrigens noch einen weiteren wichtigen Schritt: das Hochladen der erforderlichen Datei.
Werbung
Wenn Sie einen Server in Russland zum Debuggen oder Hosten von Projekten benötigen , sind unsere epischen Server perfekt für Sie . Erstellen Sie Ihre eigene Konfiguration mit wenigen Klicks, tägliche Abrechnung von Servern, Anti-DDoS in der Box, ein praktisches Bedienfeld. Versuchen Sie es besser einmal!
Bestätigung und Verpackung
Beim Exportieren einer komprimierten App aus Xcode stehen zwei Hauptverteilungsoptionen zur Verfügung: App Store Connect und Developer ID. Um Apps ohne den App Store zu verteilen, verwenden wir die Entwickler-ID.
Das gleiche Entwicklerkonto, mit dem Sie Apps über den Mac App Store verteilen, kann auch zum Signieren von Apps verwendet werden, wenn Sie Apps mit einer Entwickler-ID verteilen. Das Zertifikat selbst ist anders, aber Xcode generiert es automatisch und installiert es, wenn Sie dies noch nicht während des Exportvorgangs getan haben.
Seit der Veröffentlichung von macOS Catalina müssen alle Anwendungen, die direkt an Benutzer verteilt werden, von Apple validiert werden, da sie sonst nicht standardmäßig gestartet werden. Der Überprüfungsprozess umfasst die Übergabe der Anwendung an Apple, das eine automatisierte Malware-Überprüfung durchführt und Ihre Binärdatei mit einer speziellen Signatur „stempelt“, mit der sie ausgeführt werden kann. Dies ist kein App Review-Verfahren, sondern eine automatische Überprüfung, die verhindert, dass sich Malware auf diese Weise verbreitet. Außerdem kann Apple eine einzelne Binärdatei als Malware kennzeichnen und nicht das gesamte Entwicklerkonto, falls sie jemals kompromittiert wird.
Die Möglichkeit, die Binärdatei direkt im Xcode-Organizer zu validieren, hängt von der Verpackungsmethode ab, mit der Sie die Anwendung verteilen. Sie können einen Ordner nicht einfach
.app
auf einen Server hochladen und ihn von Benutzern herunterladen lassen. Er muss in eine unstrukturierte Datei umgewandelt werden. Der einfachste Weg, dies zu tun, besteht darin, die Anwendung per Zip zu verpacken und als Zip-Datei zu verteilen. Nach meiner Erfahrung reduziert das Verteilen der Anwendung als DMG-Datei jedoch die Anzahl der Hilfeanfragen von Benutzern erheblich.
Sie haben DMG wahrscheinlich bereits beim Herunterladen von Mac-Dateien gesehen. Dies sind Disk-Images, die von macOS bereitgestellt werden, wenn Sie im Finder doppelklicken. Sie können auch grafische Anweisungen zum Ziehen und Ablegen der Anwendung in den Anwendungsordner enthalten. Dies erleichtert dem Benutzer das Leben und verringert die Wahrscheinlichkeit, dass dieser Benutzer die Anwendung über den Ordner "Downloads" oder einen anderen beliebigen Speicherort startet.
Wenn Sie Ihre Anwendung als DMG verteilen möchten, müssen Sie sie nur exportieren, indem Sie die Option Entwickler-ID in Xcode ohne Beglaubigung auswählen und dann die DMG selbst validieren. Xcode hat keine Option zum Exportieren in DMG, daher müssen Sie ein Tool eines Drittanbieters verwenden. Ich arbeite gerne mit create-dmg... Darüber hinaus habe ich das dmgdist- Tool erstellt und Open Source erstellt , das das Erstellen, Herunterladen und Stempeln einer DMG automatisiert, sodass Sie mit einem einzigen Befehl ein verteilungsfähiges Image erhalten können.
Um Ihre Anwendung als Zip-Datei zu verteilen, ist der Bereitstellungsprozess einfacher: Wählen Sie nach Auswahl der Xcode Developer ID die Upload-Option. Eine verifizierte Version der Anwendung wird generiert, die dann komprimiert und verteilt werden kann.
App-Updates
Ein weiterer Aspekt des App Store ist, dass er sich mit App-Updates befasst. Wenn wir eine neue Version in App Store Connect hochladen und diese validiert, steht den Benutzern im App Store ein Update zur Verfügung. Wir müssen diesen Prozess für direkt weiterverteilbare Anwendungen irgendwie neu erstellen.
Der beste (und beliebteste) Weg ist die Verwendung von Sparkle . Es gibt es schon seit vielen Jahren und es ist fast die offizielle Methode, Updates für Mac-Apps zu verteilen, die außerhalb des Mac App Store verkauft werden.
Jetzt scheint Sparkle ein Doppelleben zu führen. Sie können entweder die "Legacy" -Version von Sparkle oder den moderneren "v2" -Zweig verwenden, der viele Verbesserungen enthält, z. B. die Möglichkeit, in der "Sandbox" verwendete Anwendungen zu aktualisieren. Ich verwende immer noch die Legacy-Version, weil ich damit vertraut bin, und die Integration der moderneren Version fühlt sich immer noch etwas schwierig an. Es ist nicht erforderlich, das zu reparieren, was nicht kaputt ist.
Das Generieren eines Anwendungsupdates erfolgt normalerweise wie folgt: Wir überprüfen, ob die Version der Anwendung mit jedem Update größer wird, erstellen ein Paket wie oben beschrieben (Sparkle versteht Zip-, DMG- und Installationspakete) und verwenden dann das Tool
generate_appcast
Feed aktualisieren. Danach laden wir die Deltas, das Paket der neuen Version und den aktualisierten AppCast-Feed auf das ausgewählte Hosting hoch. Danach sehen Benutzer die neue Version, indem sie in der Anwendung nach Updates suchen.
Es mag entmutigend klingen und erfordert definitiv Übung, aber nach dem Einrichten ist der Prozess völlig problemlos (meiner Meinung nach viel besser als die Arbeit mit App Store Connect).
Geld verdienen außerhalb des Mac App Store
Wenn Sie Ihre Mac-App außerhalb des App Store vertreiben möchten, möchten Sie wahrscheinlich irgendwann Geld damit verdienen. Wie im App Store können viele verschiedene Geschäftsmodelle verwendet werden. Am beliebtesten für den Direktverkauf an Kunden ist jedoch das gute alte Pay-Ahead-Modell: Der Benutzer zahlt für das Herunterladen der App, registriert sie mit einem Lizenzschlüssel und erhält Updates zumindest über einen bestimmten Zeitraum kostenlos.
Ein weiteres beliebtes Geschäftsmodell für Apps, die außerhalb des App Store vertrieben werden, ist das Abonnementmodell, bei dem Benutzer eine monatliche oder jährliche Gebühr zahlen, um die App weiterhin nutzen zu können. Es ist möglich, einen vollständigen Leitfaden (oder eine Reihe von Leitfäden) für die Auswahl eines Geschäftsmodells zu schreiben. Daher helfe ich Ihnen dabei nicht. In diesem Abschnitt gehe ich davon aus, dass ich das Auszahlungsmodell verwende, das ich für meine Bewerbungen ausgewählt habe.
Um für Ihr Produkt bezahlt zu werden, benötigen Sie eine Art Geschäft, in das Benutzer kommen, sich über die App informieren und sie kaufen (wenn sie Glück haben). Eine gute Option für Neulinge ist die Gumroad- Site , die eine Store-Seite, Zahlungsabwicklung, Hosting und Lizenzierung bietet. Als ich die erste Version veröffentlichte AirBuddy hat im Januar 2019 dann Gumroad verwendet und es hat mir sehr gute Dienste geleistet und im Laufe eines Jahres Zehntausende Exemplare der App verkauft.
Gumroad war ursprünglich nicht für den Verkauf von Software konzipiert, daher fehlt ihm die Flexibilität, die andere Dienste bieten. Nach der Veröffentlichung meiner neuen FusionCast-App und von AirBuddy 2.0 wechselte ich zu Paddle , das nun die Zahlungsabwicklung und Lizenzierung meiner Apps übernimmt.
Eine andere Möglichkeit besteht darin, einfach einen Zahlungsdienst wie Stripe oder FastSpring zu verwenden, oder Sie können Bestellungen bearbeiten und selbst lizenzieren. Dies gibt Ihnen optimale Flexibilität, obwohl Sie härter arbeiten müssen und wahrscheinlich für zusätzliche Dienste (wie das Versenden von E-Mails) bezahlen müssen.
Ich würde sagen, wenn Sie etwas Geld mit dem Verkauf von Mac-Apps außerhalb des Mac App Store verdienen möchten, ist Gumroad die beste Option, da diese Site fast alles für Sie erledigt und Sie nicht einmal eine Site für das erstellen müssen App. Wenn Sie jedoch Apps als Unternehmen oder als Haupteinnahmequelle verkaufen, bietet eine professionelle Lösung mit weniger Einschränkungen wie Paddle mehr Flexibilität.
Lizenzierung, Kopierschutz und Piraterie
Wenn Sie Mac-Anwendungen direkt vertreiben, kann dies zu Piraterie führen: Jeder kann die Binärdatei Ihrer Anwendung verwenden und ausführen, ohne eine Lizenz zu zahlen, es sei denn, Sie aktivieren einen Kopierschutz.
Obwohl dies der Fall ist, bin ich zu dem Schluss gekommen, dass Entwickler, insbesondere Indie-Entwickler, keine nennenswerte Zeit damit verbringen sollten, den Kopierschutz aufzubauen. Ja, einige Leute werden Ihre Arbeit stehlen, aber sie würden sowieso nicht bezahlen. Die Zeit, die Sie damit verbringen, sich darum zu kümmern oder hochentwickeltes DRM in eine Anwendung einzubetten, ist Zeit, die für die Behebung von Fehlern und die Entwicklung neuer Funktionen aufgewendet werden könnte. Darüber hinaus bestrafen diese Praktiken legitime Benutzer häufiger als Piraterie zu entmutigen (sehen Sie sich nur die vielen Beispiele in der Spieleentwicklungsbranche an).
In der ersten Version von AirBuddy gab es überhaupt keinen Kopierschutz, nicht einmal das einfachste Registrierungsformular für die Eingabe eines Lizenzschlüssels. Ich habe im Internet mehrere zusammengerollte Kopien gefunden (natürlich waren einige davon infiziert), aber ich habe keine Anzeichen dafür gesehen, dass die Anwendung von einem großen Prozentsatz der Benutzer raubkopiert wird, und meine Indikatoren spiegeln dies auch nicht wider. In Version 2 benutze ich das Paddle SDK, um mich bei der Installation der App zu registrieren, aber das war's.
Apps, die über den Mac App Store vertrieben werden, verfügen auch nicht über einen automatischen Schutz vor Piraterie: Sie müssen die App Store-Prüfung manuell überprüfen, um sicherzustellen, dass die Kopie legal ist. Die meisten Überprüfungsprüfcodes werden trivial gehackt, sodass eine über den Mac App Store vertriebene Anwendung nicht sicherer gegen Piraterie ist als eine direkt verteilte Anwendung.
Marketing
Ich habe diesen Abschnitt hauptsächlich hinzugefügt, um zu sagen, dass es keinen wesentlichen Marketingunterschied zwischen der direkten Verteilung einer Mac-App und der Verteilung über den Mac App Store gibt. Heutzutage bedeutet die einfache Veröffentlichung einer App im App Store so gut wie nichts, da es unwahrscheinlich ist, dass Benutzer eine brandneue App ohne externe Informationen einfach organisch entdecken.
Bei der Verteilung über den App Store können Sie den Schritt der Website-Erstellung überspringen, da Sie eine App Store-Seite als Hauptpräsentation verwenden können. Trotzdem glaube ich, dass die meisten Apps von einer separaten Zielseite profitieren werden.
App-Marketing selbst ist möglicherweise ein Thema für ein weiteres Tutorial. Im Allgemeinen können jedoch alle verfügbaren Kanäle empfohlen werden, insbesondere wenn Sie bereits Follower haben (Twitter, Instagram, TikTok usw.). Das Senden Ihrer App (mit einer kostenlosen Lizenz) an Websites und Mac-App-Prüfer kann ebenfalls eine hervorragende Möglichkeit sein, die Popularität zu steigern. Sie können auch kostenpflichtige Anzeigen in sozialen Netzwerken, Podcasts und Veröffentlichungen verwenden.