Comment vendre des applications Mac en dehors de l'App Store





Mac a toujours été différent de son proche cousin iOS, en particulier en ce qui concerne ce que l'utilisateur peut et ne peut pas exécuter sur son système. Même après l'avènement d'Apple Silicon, Apple a clairement indiqué que le Mac était toujours un Mac et pouvait toujours être piraté , même s'il fonctionnait sur une nouvelle architecture.



Pour les programmeurs, cela signifie que lors du développement pour la plate-forme Mac, nous avons le choix: nous pouvons distribuer des applications indépendamment, en dehors du Mac App Store, uniquement via le Mac App Store, ou une combinaison des deux.



Cet article est le résultat de mes réflexions sur ce sujet. Il était destiné à être un guide des choses à savoir lors de la distribution d'applications Mac en dehors de l'App Store, plutôt qu'une description détaillée des étapes spécifiques. J'espère que les informations présentées ici aideront les débutants à sortir le mystère de ce processus, et que ma propre description de processus sera utile comme point de référence.



App Store et distribution directe: avantages et inconvénients



Toutes ces options ont leurs propres avantages et inconvénients. Pour commencer, certaines applications Mac ne peuvent tout simplement pas être distribuées via le Mac App Store. Un exemple de ceci est mon application AirBuddy , qui doit exécuter un agent système et utiliser des API privées pour permettre une intégration profonde avec les appareils sans fil Apple, ce qui est interdit dans l'App Store. Il en va de même pour de nombreux autres types d'applications qui ne peuvent tout simplement pas s'exécuter sous les contraintes du bac à sable du Mac.



Pour ceux qui ont le choix, j'ai compilé une liste des avantages et des inconvénients de la sortie sur le Mac App Store ou une distribution indépendante.



Avantages du Mac App Store



  • Apple distribue, vend et concède des licences pour vous.
  • .
  • Apple .
  • , Apple, , Mac App Store


Mac App Store



  • Apple 15% 30% . , .
  • , , App Review .
  • - «» macOS.
  • .




  • ,
  • macOS , , «», API .
  • .
  • -, App Store
  • , Apple App Store




  • , ( , )
  • (consumable) (non-consumable) ( StoreKit)
  • Apple, , Apple ( , , CloudKit, )


Catalyst SwiftUI



Catalyst a apporté une multitude de nouvelles applications Mac car il est beaucoup plus facile de prendre une application iPad standard et de la porter sur le Mac. Les applications portées sur macOS via Catalyst n'ont pas besoin d'être publiées sur l'App Store, même si l'original pour iOS est là.



De plus, il n'y a actuellement pas de TestFlight pour macOS (l'un de mes souhaits pour 2021), donc si vous souhaitez distribuer des versions bêta d'une application créée par Catalyst, cela doit être fait en dehors du Mac App Store, et ce n'est pas beaucoup différent de la distribution de l'application en production.



Une grande partie de ce qui est décrit dans cet article s'applique aux applications Catalyst - après tout, ce sont des applications Mac, mais certaines applications nécessiteront un piratage supplémentaire - Apple empêche toutes les fonctionnalités d'AppKit d'être utilisées directement à partir d'une application Catalyst. Cependant, avec un peu de travail, vous pouvez faire en sorte que l'application Catalyst utilise de nombreuses fonctionnalités du Mac, y compris la prise en charge AppleScript et d'autres fonctionnalités.



Lors du développement d'applications SwiftUI pour Mac, il ne devrait y avoir aucune différence majeure dans le processus de distribution, car dans une application SwiftUI, nous pouvons utiliser toutes les fonctions de l'API macOS sans les hacks requis pour les applications Catalyst.



Propagé



La distribution d'une application comporte deux aspects: télécharger, enregistrer et télécharger le binaire de l'application et ses mises à jour, et créer un package qui fonctionnera pour vos utilisateurs.



Hébergement



La première grande étape pour mettre votre application Mac entre les mains d'utilisateurs non-App Store consiste à choisir comment distribuer son binaire. L'absence d'App Store signifie que vous devrez héberger les binaires et les mises à jour de l'application quelque part sur Internet, donnant aux utilisateurs un lien de téléchargement.



Cela peut être accompli de différentes manières. Pour une application open source, vous pouvez utiliser des versions sur Github et même héberger un flux de mise à jour de l'application dans un référentiel Github. C'est ainsi que je distribue l'application WWDC pour macOS .



Pour les applications commerciales, j'ai utilisé Backblaze B2 pour stocker les binaires d'applications, les mises à jour delta et le flux de mise à jour, en transmettant toutes les demandes via Cloudflarede sorte que j'ai mon propre domaine pour le téléchargement / les mises à jour, et également ajouter le filtrage, la mise en cache et la logique au serveur si nécessaire.



B2 est un fournisseur extrêmement abordable (je paie rarement plus de 1 $ par mois). La plupart des applications Mac sont petites, donc même si votre application est fortement téléchargée, il est peu probable que vous ayez à payer beaucoup pour le stockage / la bande passante. Les compartiments Amazon S3 sont une autre option populaire, mais son tableau de bord me terrifie, donc je préfère B2, qui est beaucoup plus simple (et moins cher).



Jusqu'à présent je n'ai pas automatisé l'étape de publication des versions de mes applications, donc pour télécharger une nouvelle version, j'utilise juste Transmiten tant que client pour mes seaux B2. En passant, avant de télécharger la version sur le serveur, il y a une étape plus importante: obtenir le fichier requis à télécharger.






La publicité



Si vous avez besoin d'un serveur en Russie pour le débogage ou l'hébergement de projets, nos serveurs épiques sont parfaits pour vous . Création de votre propre configuration en quelques clics, facturation quotidienne des serveurs, anti-DDoS in the box, un panneau de contrôle pratique. Mieux vaut l'essayer une fois!










Confirmation et emballage



Lors de l'exportation d'une application compressée depuis Xcode, nous avons deux options de distribution principales: App Store Connect et Developer ID. Pour distribuer des applications sans l'App Store, nous utiliserons l'identifiant de développeur.



Le même compte de développeur que vous utilisez pour distribuer des applications via le Mac App Store peut également être utilisé pour signer des applications lorsque vous distribuez des applications à l'aide d'un ID de développeur. Le certificat lui-même est différent, mais Xcode le générera et l'installera automatiquement si vous ne l'avez pas déjà fait pendant le processus d'exportation.



Depuis la sortie de macOS Catalina, toutes les applications distribuées directement aux utilisateurs doivent être validées par Apple, sinon elles ne se lanceront pas par défaut. Le processus de vérification consiste à remettre l'application à Apple, qui effectue une inspection automatisée des logiciels malveillants et «tamponne» votre binaire avec une signature spéciale qui lui permet de s'exécuter. Il ne s'agit pas d'une procédure d'examen des applications, mais d'une vérification automatisée qui empêche les logiciels malveillants de se propager de cette manière. Il permet également à Apple de signaler un seul fichier binaire comme malware, plutôt que comme l'intégralité du compte développeur, au cas où il serait compromis.



La possibilité de valider le binaire directement dans l'organisateur Xcode dépend de la méthode d'emballage que vous choisissez pour distribuer l'application. Vous ne pouvez pas simplement télécharger un dossier .app



sur un serveur et laisser les utilisateurs le télécharger, il doit être transformé en fichier non structuré. Le moyen le plus simple de le faire est de compresser l'application et de la distribuer sous forme de fichier zip.Cependant, d'après mon expérience, la distribution de l'application sous forme de fichier DMG réduit considérablement le nombre de demandes d'aide des utilisateurs.



Vous avez probablement déjà vu DMG lors du téléchargement de fichiers Mac. Ce sont des images disque que macOS monte lorsque vous double-cliquez dans le Finder. Ils peuvent également contenir des instructions graphiques sur la façon de faire glisser et déposer l'application dans le dossier Applications. Cela facilite la vie de l'utilisateur et réduit la probabilité que cet utilisateur lance l'application à partir du dossier Téléchargements ou d'un autre emplacement arbitraire.



Si vous prévoyez de distribuer votre application en tant que DMG, il vous suffit de l'exporter en sélectionnant l'option ID de développeur dans Xcode sans notarisation, puis de valider le DMG lui-même. Xcode n'a pas d'option d'exportation vers DMG, vous devrez donc utiliser un outil tiers. J'aime travailler avec create-dmg... De plus, j'ai créé et open source l'outil dmgdist qui automatise le processus de création, de téléchargement et d'estampage d'un DMG afin que vous puissiez obtenir une image prête pour la distribution avec une seule commande.



Pour distribuer votre application sous forme de fichier zip, le processus d'approvisionnement est plus simple: après avoir sélectionné l'ID développeur Xcode, sélectionnez l'option de téléchargement. Une version vérifiée de l'application sera générée, qui pourra ensuite être compressée et distribuée.



Mises à jour de l'application



Un autre aspect de l'App Store est qu'il traite des mises à jour d'applications. Lorsque nous téléchargeons une nouvelle version sur l'App Store Connect et qu'elle est validée, une mise à jour est disponible pour les utilisateurs dans l'App Store. Nous devons en quelque sorte recréer ce processus pour les applications redistribuables directes.



La meilleure (et la plus populaire) façon est d'utiliser Sparkle . Il existe depuis de nombreuses années et est devenu presque le moyen officiel de distribution des mises à jour des applications Mac vendues en dehors du Mac App Store.



Maintenant, Sparkle semble vivre une double vie. Vous pouvez utiliser soit la version «héritée» de Sparkle, soit la branche plus moderne «v2», qui inclut de nombreuses améliorations, telles que la possibilité de mettre à jour les applications utilisées dans le «bac à sable». J'utilise toujours la version héritée car je la connais, et l'intégration de la version plus moderne me semble encore un peu délicate. Il n'est pas nécessaire de réparer ce qui n'est pas cassé.



Le processus de génération d'une mise à jour d'application se déroule généralement comme suit: nous vérifions que la version de l'application s'agrandit à chaque mise à jour, créons un package comme décrit ci-dessus (Sparkle comprend les packages zip, DMG et installateur), puis utilisons l'outil generate_appcast



pour mettre à jour le flux. Après cela, nous téléchargeons les deltas, le package de la nouvelle version et le flux AppCast mis à jour vers l'hébergement sélectionné, après quoi les utilisateurs verront la nouvelle version en vérifiant les mises à jour dans l'application.



Cela peut sembler intimidant et nécessite certainement de la pratique, mais une fois mis en place, le processus s'avère totalement sans tracas (bien mieux que de travailler avec App Store Connect à mon avis).



Gagner de l'argent en dehors du Mac App Store



Si vous souhaitez distribuer votre application Mac en dehors de l'App Store, il est probable qu'à un moment donné, vous souhaiterez gagner de l'argent. Comme pour l'App Store, de nombreux modèles commerciaux différents peuvent être utilisés, mais le plus populaire pour la vente directe aux clients est le bon vieux modèle de paiement anticipé: l'utilisateur paie pour télécharger l'application, l'enregistre avec une clé de licence et obtient des mises à jour. gratuitement, au moins, sur une période de temps.



Un autre modèle commercial populaire pour les applications distribuées en dehors de l'App Store est le modèle d'abonnement, dans lequel les utilisateurs paient des frais mensuels ou annuels pour continuer à utiliser l'application. Il est possible de rédiger un guide complet (ou une série de guides) pour choisir un modèle commercial, je ne vous aide donc pas. Dans cette section, je suppose que j'utilise le modèle de paiement que j'ai choisi pour mes candidatures.



Pour être payé pour votre produit, vous avez besoin d'une sorte de magasin où les utilisateurs se rendent, se renseignent sur l'application et l'achètent (s'ils ont de la chance). Une bonne option pour les débutants est le site Gumroad , qui propose une page de magasin, le traitement des paiements, l'hébergement et les licences. Quand j'ai sorti la première version AirBuddy en janvier 2019 a ensuite utilisé Gumroad et cela m'a très bien servi, en vendant des dizaines de milliers d'exemplaires de l'application au cours d'une année.



Cependant, Gumroad n'a pas été conçu à l'origine pour vendre des logiciels, il n'a donc pas la flexibilité dont disposent d'autres services. Après la sortie de ma nouvelle application FusionCast et AirBuddy 2.0, je suis passé à Paddle , qui gère désormais le traitement des paiements et les licences de mes applications.



Une autre option consiste simplement à utiliser un service de paiement comme Stripe ou FastSpringou vous pouvez traiter vous-même les commandes et obtenir une licence. Cela vous donne une flexibilité optimale, même si vous devez travailler plus dur et devrez probablement payer pour des services supplémentaires (tels que l'envoi d'e-mails).



Je dirais que si vous cherchez à gagner de l'argent en vendant des applications Mac en dehors du Mac App Store, alors Gumroad est la meilleure option, car ce site fait presque tout pour vous et vous n'avez même pas à créer un site pour le app. Cependant, si vous vendez des applications en tant qu'entreprise ou en tant que principale source de revenus, une solution professionnelle avec moins de restrictions, comme Paddle, offrira plus de flexibilité.



Licence, protection contre la copie et piratage



Si vous distribuez directement des applications Mac, vous risquez de vous retrouver en piratage: n'importe qui peut prendre le binaire de votre application et l'exécuter sans payer de licence, à moins que vous n'activiez une sorte de protection contre la copie.



Bien que ce soit le cas, je suis arrivé à la conclusion que les développeurs, en particulier les développeurs indépendants, ne devraient pas passer beaucoup de temps à créer une protection contre la copie. Oui, certaines personnes voleront votre travail, mais elles ne paieraient pas de toute façon, donc le temps passé à s'en soucier ou à intégrer des DRM ultra-avancés dans une application est du temps qui pourrait être consacré à corriger des bogues et à développer de nouvelles fonctionnalités. De plus, ces pratiques finissent par punir les utilisateurs légitimes plus souvent que décourager le piratage (il suffit de regarder les nombreux exemples de cela dans l'industrie du développement de jeux).



Dans la première version d'AirBuddy, il n'y avait aucune protection contre la copie, pas même le formulaire d'inscription le plus simple pour saisir une clé de licence. J'ai trouvé plusieurs copies enroulées sur Internet (bien sûr, certaines d'entre elles étaient infectées), mais je n'ai vu aucun signe que l'application est piratée par un grand pourcentage d'utilisateurs, et mes indicateurs ne le reflètent pas non plus. Dans la version 2, j'utilise le SDK Paddle pour m'enregistrer lors de l'installation de l'application, mais c'est tout.



Les applications distribuées via le Mac App Store n'ont pas non plus de protection anti-piratage automatique: vous devez vérifier manuellement la vérification de l'App Store pour vous assurer que la copie est légale. La plupart des codes de vérification des chèques sont trivialement piratés, de sorte qu'une application distribuée via le Mac App Store n'est pas plus sûre contre le piratage qu'une application distribuée directement.



Commercialisation



J'ai ajouté cette section principalement pour dire qu'il n'y a pas de différence marketing majeure entre la distribution directe d'une application Mac et la distribution via le Mac App Store. De nos jours, simplement publier une application sur l'App Store ne signifie presque rien, car il est peu probable que les utilisateurs découvrent simplement de manière organique une toute nouvelle application sans informations externes.



Lors de la distribution via l'App Store, vous pouvez ignorer l'étape de création de site Web, car vous pouvez utiliser une page App Store comme vitrine principale, mais même ainsi, je pense que la plupart des applications bénéficieront d'une page de destination distincte.



Le marketing d'application lui-même pourrait être un sujet pour un autre tutoriel, mais en général, tous les canaux disponibles peuvent être recommandés, en particulier si vous avez déjà des abonnés (Twitter, Instagram, TikTok, etc.). Soumettre votre application (avec une licence gratuite) à des sites Web et à des évaluateurs d'applications Mac peut également être un excellent moyen d'augmenter la popularité. Vous pouvez également utiliser des publicités payantes sur les réseaux sociaux, les podcasts et les publications.



All Articles