Mac selalu berbeda dari sepupu dekatnya iOS, terutama dalam hal apa yang dapat dan tidak dapat dijalankan oleh pengguna di sistem mereka. Bahkan setelah munculnya Apple Silicon, Apple memperjelas bahwa Mac masih merupakan Mac dan masih dapat diretas , bahkan saat berjalan dengan arsitektur baru.
Untuk pemrogram, ini berarti bahwa saat mengembangkan untuk platform Mac, kami memiliki pilihan: kami dapat mendistribusikan aplikasi secara mandiri, di luar Mac App Store, hanya melalui Mac App Store, atau kombinasi keduanya.
Artikel ini adalah hasil pemikiran saya tentang topik ini. Ini dimaksudkan sebagai panduan untuk mengetahui hal-hal yang perlu diketahui saat mendistribusikan aplikasi Mac di luar App Store, daripada penjelasan rinci tentang langkah-langkah tertentu. Saya harap informasi yang disajikan di sini akan membantu para pemula mengeluarkan misteri dari proses ini, dan deskripsi proses saya sendiri akan berguna sebagai titik referensi.
App Store dan distribusi langsung: pro dan kontra
Semua opsi ini memiliki kelebihan dan kekurangannya masing-masing. Untuk memulainya, beberapa aplikasi Mac tidak dapat didistribusikan melalui Mac App Store. Contohnya adalah aplikasi AirBuddy saya , yang perlu menjalankan agen sistem dan menggunakan API pribadi untuk mengaktifkan integrasi mendalam dengan perangkat nirkabel Apple, yang dilarang di App Store. Hal yang sama berlaku untuk banyak jenis aplikasi lain yang tidak dapat berjalan di bawah batasan kotak pasir Mac.
Bagi mereka yang memiliki pilihan, saya telah menyusun daftar pro dan kontra dari rilis di Mac App Store atau distribusi independen.
Pro dari Mac App Store
- Apple mendistribusikan, menjual, dan melisensikan untuk Anda.
- .
- 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 telah menghadirkan banyak aplikasi Mac baru karena jauh lebih mudah untuk mengambil aplikasi iPad off-the-shelf dan memindahkannya ke Mac. Aplikasi yang di-porting ke macOS melalui Catalyst tidak perlu dirilis di App Store, meskipun yang asli untuk iOS ada di sana.
Selain itu, saat ini tidak ada TestFlight untuk macOS (salah satu keinginan saya untuk tahun 2021), jadi jika Anda ingin mendistribusikan versi beta dari aplikasi yang dibuat oleh Catalyst, maka ini harus dilakukan di luar Mac App Store, dan ini tidak banyak. berbeda dengan distribusi aplikasi dalam produksi.
Banyak dari apa yang dijelaskan dalam artikel ini berlaku untuk aplikasi Catalyst - bagaimanapun, ini adalah aplikasi Mac, tetapi beberapa aplikasi akan memerlukan peretasan tambahan - Apple mencegah semua fitur AppKit digunakan langsung dari aplikasi Catalyst. Namun, dengan sedikit usaha, Anda bisa mendapatkan aplikasi Catalyst untuk menggunakan banyak fitur Mac, termasuk dukungan AppleScript dan fitur lainnya.
Saat mengembangkan aplikasi SwiftUI untuk Mac, seharusnya tidak ada perbedaan besar dalam proses distribusi, karena dalam aplikasi SwiftUI, kita dapat menggunakan semua fungsi macOS API tanpa peretasan yang diperlukan untuk aplikasi Catalyst.
Sebaran
Distribusi aplikasi memiliki dua aspek: mengunduh, menyimpan, dan mengunduh biner aplikasi dan pembaruannya, dan membuat paket yang akan berfungsi untuk pengguna Anda.
Hosting
Langkah besar pertama dalam menghadirkan aplikasi Mac Anda ke tangan non-pengguna App Store adalah memilih cara mendistribusikan binernya. Kurangnya App Store berarti Anda harus meng-host binari aplikasi dan pembaruan di suatu tempat di Internet, memberi pengguna tautan unduhan.
Ini dapat dilakukan dengan berbagai cara. Untuk aplikasi open source, Anda dapat menggunakan rilis di Github dan bahkan menghosting feed update aplikasi di repositori Github. Ini adalah cara saya mendistribusikan aplikasi WWDC untuk macOS .
Untuk aplikasi komersial, saya menggunakan Backblaze B2 untuk menyimpan biner aplikasi, pembaruan delta dan pembaruan umpan, membuat proxy semua permintaan melalui Cloudflaresehingga saya memiliki domain sendiri untuk diunduh / diperbarui, dan juga menambahkan pemfilteran, cache, dan logika ke server jika perlu.
B2 adalah penyedia yang sangat terjangkau (saya jarang membayar lebih dari $ 1 sebulan). Sebagian besar aplikasi Mac berukuran kecil, jadi meskipun aplikasi Anda banyak diunduh, kecil kemungkinan Anda harus membayar banyak untuk penyimpanan / bandwidth. Bucket Amazon S3 adalah opsi populer lainnya, tetapi dasbornya membuat saya takut, jadi saya lebih suka B2, yang jauh lebih sederhana (dan lebih murah).
Sejauh ini saya belum mengotomatiskan tahap penerbitan rilis aplikasi saya, jadi untuk mengunduh rilis baru, saya cukup menggunakan Transmitsebagai klien untuk keranjang B2 saya. Ngomong-ngomong, sebelum kita mengunggah rilis ke server, ada satu langkah penting lagi: mendapatkan file yang diperlukan untuk diunggah.
Periklanan
Jika Anda memerlukan server di Rusia untuk men-debug atau menghosting proyek, server epik kami sangat cocok untuk Anda . Pembuatan konfigurasi Anda sendiri dalam beberapa klik, penagihan harian server, anti-DDoS di dalam kotak, panel kontrol yang nyaman. Lebih baik mencobanya sekali!
Konfirmasi dan pengepakan
Saat mengekspor aplikasi zip dari Xcode, kami memiliki dua opsi distribusi utama: App Store Connect dan ID Pengembang. Untuk mendistribusikan aplikasi tanpa App Store, kami akan menggunakan ID Pengembang.
Akun pengembang yang sama yang Anda gunakan untuk mendistribusikan aplikasi melalui Mac App Store juga dapat digunakan untuk menandatangani aplikasi saat Anda mendistribusikan aplikasi menggunakan ID Pengembang. Sertifikat itu sendiri berbeda, tetapi Xcode akan secara otomatis menghasilkan dan menginstalnya jika Anda belum melakukannya selama proses ekspor.
Sejak rilis macOS Catalina, semua aplikasi yang didistribusikan langsung ke pengguna harus divalidasi oleh Apple, jika tidak, aplikasi tidak akan diluncurkan secara default. Proses verifikasi melibatkan penyerahan aplikasi ke Apple, yang melakukan pemeriksaan malware otomatis dan "mencap" biner Anda dengan tanda tangan khusus yang memungkinkannya berjalan. Ini bukan prosedur Peninjauan Aplikasi, tetapi pemeriksaan otomatis yang mencegah malware menyebar dengan cara ini. Ini juga memungkinkan Apple untuk menandai satu file biner sebagai malware, daripada seluruh akun pengembang, jika itu pernah disusupi.
Kemampuan untuk memvalidasi biner secara langsung di Xcode organizer tergantung pada metode pengemasan yang Anda pilih untuk mendistribusikan aplikasi. Anda tidak bisa begitu saja mengunggah folder
.app
ke server dan membiarkan pengguna mengunduhnya, itu harus diubah menjadi file yang tidak terstruktur. Cara termudah untuk melakukannya adalah dengan mengemas zip aplikasi dan mendistribusikannya sebagai file zip, namun, menurut pengalaman saya, mendistribusikan aplikasi sebagai file DMG secara signifikan mengurangi jumlah permintaan bantuan dari pengguna.
Anda mungkin pernah melihat DMG saat mengunduh file Mac. Ini adalah image disk yang dipasang macOS saat Anda mengklik dua kali di Finder. Mereka mungkin juga berisi instruksi grafis tentang cara menyeret dan melepaskan aplikasi ke folder Aplikasi. Ini membuat hidup lebih mudah bagi pengguna dan mengurangi kemungkinan bahwa pengguna akan meluncurkan aplikasi dari folder Unduhan atau beberapa lokasi sewenang-wenang lainnya.
Jika Anda akan mendistribusikan aplikasi sebagai DMG, Anda hanya perlu mengekspornya dengan memilih opsi ID Pengembang di Xcode tanpa notaris, lalu memvalidasi DMG itu sendiri. Xcode tidak memiliki opsi ekspor ke DMG, jadi Anda harus menggunakan alat pihak ketiga. Saya suka bekerja dengan create-dmg... Selain itu, saya telah membuat dan membuka sumber alat dmgdist yang mengotomatiskan proses pembuatan, pengunduhan, dan stamping DMG sehingga Anda bisa mendapatkan gambar siap distribusi dengan satu perintah.
Untuk mendistribusikan aplikasi Anda sebagai file zip, proses penyediaannya lebih sederhana: setelah memilih ID Pengembang Xcode, pilih opsi unggah. Versi terverifikasi dari aplikasi akan dibuat, yang kemudian dapat di-zip dan didistribusikan.
Pembaruan aplikasi
Aspek lain dari App Store adalah berkaitan dengan pembaruan aplikasi. Saat kami mengunggah versi baru ke App Store Connect dan divalidasi, pembaruan tersedia untuk pengguna di App Store. Kita perlu membuat ulang proses ini untuk aplikasi yang dapat didistribusikan ulang secara langsung.
Cara terbaik (dan terpopuler) adalah dengan menggunakan Sparkle . Telah ada selama bertahun-tahun dan hampir menjadi cara resmi mendistribusikan pembaruan ke aplikasi Mac yang dijual di luar Mac App Store.
Sekarang Sparkle tampaknya menjalani kehidupan ganda. Anda dapat menggunakan Sparkle versi "lama", atau cabang "v2" yang lebih modern, yang mencakup banyak penyempurnaan, seperti kemampuan untuk memperbarui aplikasi yang digunakan di "kotak pasir". Saya masih menggunakan versi lawas karena saya sudah terbiasa, dan mengintegrasikan versi yang lebih modern masih terasa agak rumit. Tidak perlu memperbaiki apa yang tidak rusak.
Proses pembuatan pembaruan aplikasi biasanya berjalan sebagai berikut: kami memeriksa bahwa versi aplikasi menjadi lebih besar dengan setiap pembaruan, membuat paket seperti yang dijelaskan di atas (Sparkle memahami paket zip, DMG dan penginstal), dan kemudian menggunakan alat
generate_appcast
untuk memperbarui umpan. Setelah itu, kami mengunggah delta, paket versi baru dan umpan AppCast yang diperbarui ke hosting yang dipilih, setelah itu pengguna akan melihat versi baru dengan memeriksa pembaruan di dalam aplikasi.
Ini mungkin terdengar menakutkan dan pasti membutuhkan latihan, tetapi setelah diatur, prosesnya ternyata benar-benar tidak merepotkan (jauh lebih baik daripada bekerja dengan App Store Connect menurut saya).
Menghasilkan uang di luar Mac App Store
Jika Anda ingin mendistribusikan aplikasi Mac Anda di luar App Store, kemungkinan besar pada titik tertentu Anda ingin menghasilkan uang darinya. Seperti App Store, banyak model bisnis yang berbeda dapat digunakan, tetapi yang paling populer untuk penjualan langsung ke pelanggan adalah model pembayaran di muka yang baik: pengguna membayar untuk mengunduh aplikasi, mendaftarkannya dengan kunci lisensi, dan mendapatkan pembaruan gratis, setidaknya, selama periode waktu tertentu.
Model bisnis populer lainnya untuk aplikasi yang didistribusikan di luar App Store adalah model langganan, di mana pengguna membayar biaya bulanan atau tahunan untuk tetap menggunakan aplikasi. Anda dapat menulis seluruh panduan (atau serangkaian panduan) untuk memilih model bisnis, jadi saya tidak membantu Anda dengan itu. Di bagian ini, saya akan berasumsi bahwa saya menggunakan model pembayaran yang telah saya pilih untuk aplikasi saya.
Untuk mendapatkan bayaran atas produk Anda, Anda memerlukan semacam toko yang dikunjungi pengguna, mempelajari tentang aplikasinya, dan membelinya (jika mereka beruntung). Pilihan yang baik untuk pemula adalah situs Gumroad , yang menawarkan halaman toko, pemrosesan pembayaran, hosting, dan lisensi. Saat saya merilis versi pertama AirBuddy pada Januari 2019 lalu menggunakan Gumroad dan itu sangat membantu saya, menjual puluhan ribu salinan aplikasi selama setahun.
Namun, Gumroad pada awalnya tidak dirancang untuk menjual perangkat lunak, sehingga tidak memiliki fleksibilitas yang dimiliki layanan lain. Setelah rilis aplikasi FusionCast baru dan AirBuddy 2.0, saya beralih ke Paddle , yang sekarang menangani pemrosesan pembayaran dan lisensi aplikasi saya.
Pilihan lainnya adalah dengan menggunakan layanan pembayaran seperti Stripe atau FastSpring, atau Anda dapat memproses pesanan dan melisensikan sendiri. Ini memberi Anda fleksibilitas yang optimal, meskipun Anda harus bekerja lebih keras dan kemungkinan akan perlu membayar layanan tambahan (seperti mengirim email).
Saya akan mengatakan bahwa jika Anda ingin menghasilkan uang dengan menjual aplikasi Mac di luar Mac App Store, maka Gumroad adalah pilihan terbaik, karena situs ini melakukan hampir segalanya untuk Anda dan Anda bahkan tidak perlu membuat situs untuk aplikasi. Namun, jika Anda menjual aplikasi sebagai perusahaan atau sumber pendapatan utama Anda, solusi profesional dengan batasan yang lebih sedikit, seperti Paddle, akan memberikan lebih banyak fleksibilitas.
Perizinan, perlindungan salinan dan pembajakan
Jika Anda mendistribusikan aplikasi Mac secara langsung, Anda mungkin berakhir dengan pembajakan: siapa pun dapat mengambil biner aplikasi Anda dan menjalankannya tanpa membayar lisensi, kecuali jika Anda mengaktifkan semacam perlindungan salinan.
Meskipun demikian, saya sampai pada kesimpulan bahwa pengembang, terutama yang indie, tidak boleh menghabiskan banyak waktu untuk membangun perlindungan salinan. Ya, beberapa orang akan mencuri pekerjaan Anda, tetapi mereka tetap tidak akan membayar, jadi waktu yang dihabiskan untuk mengkhawatirkannya atau menyematkan DRM yang sangat canggih dalam aplikasi adalah waktu yang dapat digunakan untuk memperbaiki bug dan mengembangkan fitur baru. Selain itu, praktik ini akhirnya lebih sering menghukum pengguna yang sah daripada mencegah pembajakan (lihat saja banyak contoh di industri pengembangan game).
Di versi pertama AirBuddy, tidak ada perlindungan salinan sama sekali, bahkan tidak ada formulir pendaftaran yang paling sederhana untuk memasukkan kunci lisensi. Saya menemukan beberapa salinan melingkar di Internet (tentu saja, beberapa di antaranya terinfeksi), tetapi saya tidak melihat tanda-tanda bahwa aplikasi tersebut dibajak oleh sebagian besar pengguna, dan indikator saya juga tidak mencerminkan hal ini. Di versi 2, saya menggunakan Paddle SDK untuk mendaftar saat menginstal aplikasi, tapi hanya itu.
Aplikasi yang didistribusikan melalui Mac App Store juga tidak memiliki perlindungan anti-pembajakan otomatis: Anda perlu memeriksa App Store secara manual untuk memastikan salinannya legal. Sebagian besar kode verifikasi cek diretas dengan sepele, sehingga aplikasi yang didistribusikan melalui Mac App Store tidak lebih aman dari pembajakan daripada aplikasi yang didistribusikan secara langsung.
Pemasaran
Saya menambahkan bagian ini terutama untuk mengatakan bahwa tidak ada perbedaan pemasaran utama antara distribusi langsung aplikasi Mac dan distribusi melalui Mac App Store. Saat ini, merilis aplikasi di App Store hampir tidak ada artinya karena tidak mungkin pengguna secara organik menemukan aplikasi baru tanpa informasi eksternal.
Saat mendistribusikan melalui App Store, Anda dapat melewati langkah pembuatan situs web, karena Anda dapat menggunakan halaman App Store sebagai etalase utama, tetapi meskipun demikian, saya yakin sebagian besar aplikasi akan mendapat manfaat dari memiliki halaman arahan terpisah.
Pemasaran aplikasi sendiri mungkin menjadi topik untuk tutorial lainnya, tetapi secara umum, saluran apa pun yang tersedia untuk Anda dapat direkomendasikan, terutama jika Anda sudah memiliki pengikut (Twitter, Instagram, TikTok, dll.). Mengirimkan aplikasi Anda (dengan lisensi gratis) ke situs web dan peninjau aplikasi Mac juga bisa menjadi cara yang bagus untuk meningkatkan popularitas. Anda juga dapat menggunakan iklan berbayar di jejaring sosial, podcast, dan publikasi.