Cómo vender aplicaciones de Mac fuera de la App Store





Mac siempre ha sido diferente de su primo cercano iOS, especialmente en términos de lo que el usuario puede y no puede ejecutar en su sistema. Incluso después de la llegada de Apple Silicon, Apple dejó en claro que la Mac sigue siendo una Mac y aún puede ser pirateada , incluso cuando se ejecuta en una nueva arquitectura.



Para los programadores, esto significa que cuando desarrollamos para la plataforma Mac, tenemos una opción: podemos distribuir aplicaciones de forma independiente, fuera de Mac App Store, solo a través de Mac App Store, o una combinación de ambos.



Este artículo es el resultado de mis pensamientos sobre este tema. Tenía la intención de ser una guía de lo que debe saber al distribuir aplicaciones de Mac fuera de la App Store, en lugar de una descripción detallada de pasos específicos. Espero que la información presentada aquí ayude a los principiantes a resolver el misterio de este proceso y que mi propia descripción del proceso sea útil como punto de referencia.



App Store y distribución directa: pros y contras



Todas estas opciones tienen sus propias ventajas y desventajas. Para empezar, algunas aplicaciones de Mac simplemente no se pueden distribuir a través de la Mac App Store. Un ejemplo de esto es mi aplicación AirBuddy , que necesita ejecutar un agente del sistema y usar API privadas para permitir una integración profunda con los dispositivos inalámbricos de Apple, lo cual está prohibido en la App Store. Lo mismo es cierto para muchos otros tipos de aplicaciones que simplemente no pueden ejecutarse bajo las limitaciones de la caja de arena de Mac.



Para aquellos que pueden elegir, he compilado una lista de los pros y los contras de lanzar en la Mac App Store o distribución independiente.



Ventajas de la Mac App Store



  • Apple distribuye, vende y otorga licencias por usted.
  • .
  • 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 ha traído una gran cantidad de nuevas aplicaciones para Mac porque es mucho más fácil tomar una aplicación para iPad lista para usar y portarla a la Mac. Las aplicaciones portadas a macOS a través de Catalyst no necesitan ser lanzadas en la App Store, incluso si el original para iOS está allí.



Además, actualmente no hay TestFlight para macOS (uno de mis deseos para 2021), por lo que si desea distribuir versiones beta de una aplicación creada por Catalyst, debe hacerlo fuera de la Mac App Store, y esto no es mucho. diferente de la distribución de la aplicación en producción.



Gran parte de lo que se describe en este artículo se aplica a las aplicaciones Catalyst; después de todo, estas son aplicaciones de Mac, pero algunas aplicaciones requerirán piratería adicional; Apple evita que todas las funciones de AppKit se utilicen directamente desde una aplicación Catalyst. Sin embargo, con un poco de trabajo, puede hacer que la aplicación Catalyst utilice muchas de las funciones de Mac, incluida la compatibilidad con AppleScript y otras funciones.



Al desarrollar aplicaciones SwiftUI para Mac, no debería haber grandes diferencias en el proceso de distribución, porque en una aplicación SwiftUI, podemos usar todas las funciones API de macOS sin los hacks necesarios para las aplicaciones Catalyst.



Propagar



La distribución de una aplicación tiene dos aspectos: descargar, guardar y descargar el binario de la aplicación y sus actualizaciones, y crear un paquete que funcione para sus usuarios.



Hosting



El primer gran paso para que su aplicación Mac llegue a manos de usuarios que no pertenecen a la App Store es elegir cómo distribuir su binario. La falta de una tienda de aplicaciones significa que tendrá que alojar los archivos binarios y las actualizaciones de la aplicación en algún lugar de Internet, lo que les dará a los usuarios un enlace de descarga.



Esto se puede lograr de muchas formas diferentes. Para una aplicación de código abierto, puede usar lanzamientos en Github e incluso alojar una fuente de actualización de la aplicación en un repositorio de Github. Así es como distribuyo la aplicación WWDC para macOS .



Para las aplicaciones comerciales, utilicé Backblaze B2 para almacenar archivos binarios de aplicaciones, actualizaciones delta y feed de actualizaciones, enviando todas las solicitudes a través de Cloudflare.para tener mi propio dominio para descargar / actualizar, y también agregar filtrado, almacenamiento en caché y lógica al servidor si es necesario.



B2 es un proveedor extremadamente asequible (rara vez pago más de $ 1 al mes). La mayoría de las aplicaciones de Mac son pequeñas, por lo que incluso si su aplicación tiene muchas descargas, es poco probable que tenga que pagar mucho por el almacenamiento / ancho de banda. Los cubos de Amazon S3 son otra opción popular, pero su tablero me aterroriza, así que prefiero B2, que es mucho más simple (y más barato).



Hasta ahora no he automatizado la etapa de publicación de las versiones de mis aplicaciones, por lo que para descargar una nueva versión, solo uso Transmitcomo cliente para mis cubetas B2. Por cierto, antes de que lleguemos a cargar la versión en el servidor, hay un paso más importante: obtener el archivo requerido para cargar.






Publicidad



Si necesita un servidor en Rusia para depurar o alojar proyectos, nuestros servidores épicos son perfectos para usted . Creación de su propia configuración en un par de clics, facturación diaria de servidores, anti-DDoS en la caja, un cómodo panel de control. ¡Mejor probarlo una vez!










Confirmación y embalaje



Al exportar una aplicación comprimida desde Xcode, tenemos dos opciones de distribución principales: App Store Connect e ID de desarrollador. Para distribuir aplicaciones sin la App Store, usaremos el ID de desarrollador.



La misma cuenta de desarrollador que usa para distribuir aplicaciones a través de Mac App Store también se puede usar para firmar aplicaciones cuando distribuye aplicaciones usando un ID de desarrollador. El certificado en sí es diferente, pero Xcode lo generará e instalará automáticamente si aún no lo ha hecho durante el proceso de exportación.



Desde el lanzamiento de macOS Catalina, todas las aplicaciones que se distribuyen directamente a los usuarios deben ser validadas por Apple; de ​​lo contrario, no se iniciarán de forma predeterminada. El proceso de verificación implica entregar la aplicación a Apple, que realiza una inspección automática de malware y "estampa" su binario con una firma especial que le permite ejecutarse. Este no es un procedimiento de revisión de aplicaciones, sino una verificación automatizada que evita que el malware se propague de esta manera. También permite a Apple marcar un solo archivo binario como malware, en lugar de toda la cuenta del desarrollador, en caso de que alguna vez se vea comprometido.



La capacidad de validar el binario directamente en el organizador de Xcode depende del método de empaquetado que elija para distribuir la aplicación. No puede simplemente cargar una carpeta .app



en un servidor y permitir que los usuarios la descarguen, debe convertirse en un archivo no estructurado. La forma más fácil de hacer esto es empaquetando la aplicación en zip y distribuyéndola como un archivo zip; sin embargo, en mi experiencia, distribuir la aplicación como un archivo DMG reduce significativamente la cantidad de solicitudes de ayuda de los usuarios.



Probablemente ya haya visto DMG al descargar archivos de Mac. Estas son imágenes de disco que macOS monta cuando hace doble clic en Finder. También pueden contener instrucciones gráficas sobre cómo arrastrar y soltar la aplicación en la carpeta Aplicaciones. Esto facilita la vida del usuario y reduce la probabilidad de que inicie la aplicación desde la carpeta Descargas o desde alguna otra ubicación arbitraria.



Si va a distribuir su aplicación como DMG, solo tiene que exportarla seleccionando la opción ID de desarrollador en Xcode sin notarización, y luego validar el DMG en sí. Xcode no tiene una opción de exportación a DMG, por lo que tendrá que usar una herramienta de terceros. Me gusta trabajar con create-dmg... Además, he creado y de código abierto la herramienta dmgdist que automatiza el proceso de creación, descarga y sellado de un DMG para que pueda obtener una imagen lista para distribución con un solo comando.



Para distribuir su aplicación como un archivo zip, el proceso de aprovisionamiento es más simple: después de seleccionar el ID de desarrollador de Xcode, seleccione la opción de carga. Se generará una versión verificada de la aplicación, que luego se puede comprimir y distribuir.



Actualizaciones de la aplicación



Otro aspecto de la App Store es que se ocupa de las actualizaciones de aplicaciones. Cuando cargamos una nueva versión a App Store Connect y se valida, hay una actualización disponible para los usuarios en la App Store. Necesitamos recrear de alguna manera este proceso para aplicaciones redistribuibles directas.



La mejor (y más popular) forma es utilizar Sparkle . Ha existido durante muchos años y se ha convertido casi en la forma oficial de distribuir actualizaciones para las aplicaciones de Mac que se venden fuera de la Mac App Store.



Ahora Sparkle parece estar viviendo una doble vida. Puede usar la versión "heredada" de Sparkle o la rama más moderna "v2", que incluye muchas mejoras, como la capacidad de actualizar las aplicaciones utilizadas en la "caja de arena". Todavía uso la versión heredada porque estoy familiarizado con ella, e integrar la versión más moderna todavía me parece un poco complicado. No hay necesidad de arreglar lo que no está roto.



El proceso de generación de una actualización de la aplicación suele ser el siguiente: verificamos que la versión de la aplicación sea más grande con cada actualización, creamos un paquete como se describe anteriormente (Sparkle comprende los paquetes zip, DMG e instalador) y luego usamos la herramienta generate_appcast



para actualizar el feed. Después de eso, cargamos los deltas, el paquete de la nueva versión y el feed de AppCast actualizado al alojamiento seleccionado, luego de lo cual los usuarios verán la nueva versión al verificar si hay actualizaciones dentro de la aplicación.



Puede parecer abrumador y definitivamente requiere práctica, pero una vez configurado, el proceso resulta ser completamente sencillo (en mi opinión, mucho mejor que trabajar con App Store Connect).



Ganar dinero fuera de la Mac App Store



Si desea distribuir su aplicación de Mac fuera de la App Store, es probable que en algún momento desee ganar dinero con ella. Al igual que con la App Store, se pueden usar muchos modelos comerciales diferentes, pero el más popular para la venta directa a los clientes es el viejo modelo de pago anticipado: el usuario paga para descargar la aplicación, la registra con una clave de licencia y obtiene actualizaciones. gratis, al menos, durante un período de tiempo.



Otro modelo comercial popular para las aplicaciones distribuidas fuera de la App Store es el modelo de suscripción, mediante el cual los usuarios pagan una tarifa mensual o anual para seguir usando la aplicación. Es posible escribir una guía completa (o una serie de guías) para elegir un modelo de negocio, así que no te ayudaré con eso. En esta sección, asumiré que estoy usando el modelo de pago que he elegido para mis aplicaciones.



Para que le paguen por su producto, necesita algún tipo de tienda a la que los usuarios vengan, aprendan sobre la aplicación y la compren (si tienen suerte). Una buena opción para los novatos es el sitio de Gumroad , que ofrece una página de tienda, procesamiento de pagos, alojamiento y licencias. Cuando lancé la primera versión AirBuddy en enero de 2019 usó Gumroad y me sirvió muy bien, vendiendo decenas de miles de copias de la aplicación en el transcurso de un año.



Sin embargo, Gumroad no fue diseñado originalmente para vender software, por lo que carece de la flexibilidad que tienen otros servicios. Después del lanzamiento de mi nueva aplicación FusionCast y AirBuddy 2.0, cambié a Paddle , que ahora maneja el procesamiento de pagos y la licencia de mis aplicaciones.



Otra opción es simplemente usar un servicio de pago como Stripe o FastSpring, o puede procesar pedidos y obtener la licencia usted mismo. Esto le brinda una flexibilidad óptima, aunque debe trabajar más duro y probablemente tendrá que pagar por servicios adicionales (como el envío de correos electrónicos).



Yo diría que si está buscando ganar algo de dinero vendiendo aplicaciones de Mac fuera de la Mac App Store, entonces Gumroad es la mejor opción, ya que este sitio hace casi todo por usted y ni siquiera tiene que crear un sitio para el aplicación. Sin embargo, si vende aplicaciones como empresa o su principal fuente de ingresos, una solución profesional con menos restricciones, como Paddle, le proporcionará más flexibilidad.



Licencias, protección contra copias y piratería



Si distribuye aplicaciones de Mac directamente, podría terminar en piratería: cualquiera puede tomar el binario de su aplicación y ejecutarlo sin pagar una licencia, a menos que habilite algún tipo de protección de copia.



Si bien este es el caso, he llegado a la conclusión de que los desarrolladores, especialmente los independientes, no deberían dedicar una cantidad significativa de tiempo a crear protección contra copias. Sí, algunas personas te robarán el trabajo, pero de todos modos no pagarían, por lo que el tiempo que se dedica a preocuparse por ello o a incorporar DRM súper avanzado en una aplicación es tiempo que se puede dedicar a corregir errores y desarrollar nuevas funciones. Además, estas prácticas terminan castigando a los usuarios legítimos con más frecuencia que desalentando la piratería (solo mire los muchos ejemplos de esto en la industria del desarrollo de juegos).



En la primera versión de AirBuddy, no había ninguna protección de copia, ni siquiera el formulario de registro más simple para ingresar una clave de licencia. Encontré varias copias enrolladas en Internet (por supuesto, algunas de ellas estaban infectadas), pero no vi señales de que la aplicación fuera pirateada por un gran porcentaje de usuarios, y mis indicadores tampoco lo reflejan. En la versión 2, uso el SDK de Paddle para registrarme al instalar la aplicación, pero eso es todo.



Las aplicaciones distribuidas a través de la Mac App Store tampoco tienen protección antipiratería automática: debe verificar manualmente la verificación de la App Store para asegurarse de que la copia sea legal. La mayoría de los códigos de verificación de cheques son pirateados trivialmente, por lo que una aplicación distribuida a través de la Mac App Store no es más segura contra la piratería que una aplicación distribuida directamente.



Márketing



Agregué esta sección principalmente para decir que no hay una diferencia de marketing importante entre la distribución directa de una aplicación para Mac y la distribución a través de la Mac App Store. En estos días, simplemente lanzar una aplicación en la App Store no significa casi nada porque es poco probable que los usuarios simplemente descubran orgánicamente una nueva aplicación sin información externa.



Al distribuir a través de la App Store, puede omitir el paso de creación del sitio web, ya que puede usar una página de la App Store como escaparate principal, pero aun así, creo que la mayoría de las aplicaciones se beneficiarán de tener una página de destino separada.



El marketing de aplicaciones en sí mismo puede ser un tema para otro tutorial, pero en general, se pueden recomendar los canales disponibles, especialmente si ya tiene seguidores (Twitter, Instagram, TikTok, etc.). Enviar su aplicación (con una licencia gratuita) a sitios web y revisores de aplicaciones Mac también puede ser una excelente manera de aumentar la popularidad. También puede utilizar anuncios pagados en redes sociales, podcasts y publicaciones.



All Articles