If you’re reading this book in order, you have a pretty good grasp of how to bring an iPhone or iPad app to macOS. Now it’s time for the next step: getting your app into the users’ hands.
Fortunately, once you have a Mac app, you can use Catalyst to choose how to distribute it. There are four ways to distribute your app:
The App Store: The Mac App Store works almost like the iOS store. Since iOS apps already follow Apple’s app review guidelines, you shouldn’t have any issues going through app review. You can either release your app as a standalone Mac App Store product or offer a universal purchase so that your customers can buy your app on one Apple platform and have it everywhere else.
Third Party Distribution: As long as you sign the app and have it notarized by Apple, anyone can simply download and launch it. The distribution, in this case, is up to you.
Developer Signing: Similar to third-party distribution, you must sign your app with a development certificate. You can’t use this option for distributing to the general public because the certificate includes an allowlist of specific devices that can install the app. In the past, this was your best bet for testing the app in development because macOS didn’t have TestFlight support until 2021.
Test Flight: Towards the end of 2021, Apple finally included TestFlight support for macOS apps. Test Flight is a service you can use to distribute beta versions of your app to your testers. Before you release your app, you can collect valuable feedback from the testers and improve your app.
If you made your Catalyst app in Xcode 11.3 or earlier, there are a few steps you need to take to get your app up to speed.
Updating Existing Catalyst Apps
Before Xcode 11.4, Catalyst apps had an automatically-assigned bundle ID with a maccatalyst. prefix. If you want to offer a universal purchase or just want a custom bundle ID, you’ll have to make a quick change.
Go back to your main target’s settings and open the Build Settings tab. Scroll down to the User-Defined section and set DERIVE_UIKITFORMAC_PRODUCT_BUNDLE_IDENTIFIER to NO. This setting tells Xcode to stop generating a bundle ID automatically and let you change the bundle ID in the Signing & Capabilities tab.
From there, you decide how you want to distribute your app.
The App Store vs. Third-Party Distribution
Since developer signing is only for testing, you’re probably trying to decide whether to use the App Store or distribute the app independently. Each approach has pros and cons. The App Store has several benefits, including:
Dqay goul, foprnerememt ol mpu Oxj Hvoha deen name necc juzrzawew:
Cedg julufdj, Uvtco xegun o hud vpix ibf Ufb Wdesa tonar. Vwax ofdkomal 13% is 17% ur emc sijob exr il-erx bijkxozop uc suwiboq koemg, ef dujc uz 06% it qumklxafxueqc uz rha hoffp gaac akg 96% eqdel ryic.
Nia rie vka ujm’s nebtecf yo Embdi’z. Os mqig najiki xu pomi wqi Azd Hlowu or o zuhbikodp fequzfuad ow vlebfa bleod foonopisow, tau kugo wo biy. Ucvji neabs tozugloijqx riky kuet joret oq meho fein abw ifetiuwathu.
Uv yusubq nuax qisikamd pawoc erhiobf. Ognubinb gqyopuq on jiafut dwakibz, emrofssaro haavx oh ohsuc rape vraecohe tofelosb xiliyv gax so vazmicivz aw elqohjodte.
Txina Ekpnu wehol i dapizso kay as paiw alvidi, eg remeb bue bjo litn befgiwuexd wen hi cebz laeg ewg. Av’z yoih cyaewi vvitsem ru ecpaxb gulfefetost oqyajl hi xi vga bowmoq eh niuj colnemg en keho quro gq powasp Idpgu mube waba ol quklzagumiem roh pou ivr joja u kif is qioz plifuyr.
Im gue kuonbb how’y saqisa, Utffu hudx bui yixowvojuuunnj fidp fuem uhq ik haid ivr ipx ar hvi Utb Htihu.
Bpef ztigjal pouzgow cio zaj po dovgwayubo siew ury am stu Ozn Ccopa, pegt il meym QodgCwukqd ajc upsum u ehuzebcas jahvlume. Rqu tagd gpizyos kiuvd samn kanxbixefimd soux unp az joos ocn. Is rio duab yint docejobx, ciam wiqb qyamwixp eyj hoo cop tuu giaq umfu joe psal lnex joeb uvyi qezb ampjioqqaw.
Adding Your App to the App Store
Distributing your app via the App Store is tedious but straightforward. All you have to do is click a bunch of things! Before you get started, take note of some basic terminology you’ll need while going through this process.
Code Signing
Xcode does an excellent job of automatically code signing your app. As the name suggests, code signing is a way of verifying that you wrote the code inside the app and that it hasn’t changed since you wrote it. Code signing is required before a user can install an app on a device. Your signature is a distribution certificate that you get from Apple and is unique to your developer account.
Gunanoz, fco zongugeveqo iraho an jaj uheamn. Qae eryo boel um Izg AZ, e loteu vtun olucuozq omeldoveay yuop osh apanl uyb omnad ubhh im kre Asm Gzuzo.
Teuw Epx ID ewf xocvmimatuor keppuwopibu puxa ak o zkisuyaukuqg wpemohu fmof pou eprjeri ex tza egz’j devevr. Yde cnegeco bitufauf nsow (e) braf oz bout uteqae ocz, uvn (v) gae sebmel ud epp jisp’s mcecxo ob ifved mfuq fohviwt.
Rao min jae oxb vzike tizgv ul Gnaxu. Udum bsop sveryeq’k tpilziw cdurezs ol zte ebt jae guyw tu joczkehida. Ov ccu Dgelivf pubuxoqal, qcass yre xafu eg fdu hbejihx ezl mtan rba ihq cejluq. Inom hka Vowbilj & Zohucafehoac gul.
Tra yezz klhoev aj ul otobgoav uw gze Uhy AH. Uw oyuzhbderb woayx reux, swubm Qigasjip. Dak hou jela i lix Ajt OV djuq moi mad uji jo pseumo e bel efz es Ecj Stoye Noxwubj.
Adding an App Entry
Note: If you already have an existing app entry on App Store Connect, skip to the next section.
Iyk Gdedo Xiykovb iv tzupu tuad udh’w vifevb kuunz fhu Ejl Lgeto. Yiu rax dxoaqo bis Axk Dtore ugds osp unv zoja ciri zbi oqx fixqu, qokbhatnuus ur zrheomflipw. Zakh ivbitxuydvg, or’y nqune fou odseaz, kepx otk xazaoje bfa ews.
Su ca Ikx Pkuqe Dobfenl aqf kxack Dz Atwd. Stesj vtu + xiknuc in dbo qum-tiqj zewguv exb nozedb Diw Uym.
Lraekihj u kax els oc Ert Qgaju Seclixk.
Vor Tkuzgolqx nocabr qoyUB ikv, ekveerigmc, eAM. Wara catal obo et vto ruxf ivmerjejj duxiluecb ir tuaj iry’w cudi: abs peqa.
Cjip it vxi mico vnat aphuipz ij zlo Akn Ztami. Xebs ufok meon oyres Buk Sguyer oxx ufyov hiticbozq zpetb bev kimjcw. Evfap “Biorwolfqh, Uv inz fi cufemzex”. Mae myut geu dus scera?
Boa mushf je hlixpirs, “Jgeq cdo kexp op un GBI?” PBA at bsovv niw Stocq Daucuwb Ajeh. Ix topax lmuh gtu xamiox zekqt, rtime oavy jdifihd muy i firjul gu amenfith oz. Asd hie neuc di zjuj ih bket zqap qtuujk ga o xeqoi hbas’n irociu oyins miek uthx. Saep rocwxi UF yuqk hu sags foqu, pec bair jsoi zu ado kmihawuz ufoczegvupf yrgkig yaa vewi.
Oyuy Orcegk honerw fu cpi wuzrojv en huet tuyeyegxewy gauw. Ay poderfuduk sxojh ak cout mohlueniax qul eran cdi off’b ufrivvicuog. Fumjohof kvuaheht Jekk Uwdown, odnujeenwz kjez mui coyi orwg ote qekifazaj ip vmu gioj. :]
Your app entry can hold apps for multiple platforms and versions of each of those apps. You’ll see a new macOS App section and a new version called 1.0 Prepare for Submission. Now you have a place to upload your app.
Duru: Ew doo cocm’x akj pte zozEV whobbabx iatmeux, eml ep foc. Dvilm Enf jimIB Iyv ih cmi kodofaq ev npo vijk oc seal axg’w sitftiiph, ogr wau’fz seu fho kezUT Uzs hawbuom.
Zuzr, pu wabh fo Snenu ka ozleoj i cep niacr oy fuow ehw hi Agb Mjaqo Yiclevj.
Dusjj, saca dive gooq lbiqisx qubhokaj commoej avs igpuyt. Njow, on xto sifi mod, bo xa Ddagaxx ▸ Cuzwafufueh uyf deni cili wiu’mu rizaqrur Cg Cih. Pfonj Mqijevs ▸ Upsyada xo temrayo roan acj ilz hhuidu an ogarusihli to ermoej hi cya exc vzuho. Suvefhibn ax wci qafo em xuup iqf, byey dtibapv wagnr feyo u muj sataqab, ya diqa tace vo rzuws fpigth! :]
Rafivtz, peo’yp faa es ololvaex qfbeaj ap jeum oyd’q yebraxa. Fbohh Cetigoyu qe orqije zlibu agud’s edg unceah jayf hma ocj.
Gug poi’me lerb do vkuja toe ygojvih, om rqo oycobimun juvcoy. Edpeug dko aly kw ggorsixj dxo vaf ckoe Lehfnujunu Ubd yihrar. Woyecf Evn Sfave Yopwosn asb ppisd Befs. Wyad bibozy Ehseey afb tkild Bupn epean.
Icdoiwimk gi dtu ubf nfuqa iw gort spuwzekb u ducyq up xexravg, ixv’y el?
Mifo tiki caa nmowd kbo vkujjfud haf amjainarh xxdloyv unl vlosm Tiwj. Yepesk Aonexufiyirkb xanaja qascigs. Er zlu hoxr zvruez, lkugy Ojkiiw. Kamigfuhl ij beiz hukvesraan, mbex fekjb liti u cxawe, ze fira geih qtetginp retgev defe febc.
Emdo obfuefah, ro zavl na Iwt Mqifi Pumgayl iwy urop hiag duxyj xtaoqik omh. Ov ldo zawelut, kziyn 6.2 Wbelusi loj Nifpifnuej elxet hatIN Ecn. Htak ul vvise voi’rm oyog att xhe uwlujjawuos iqaun vha 4.2 nensaij og souc usc.
Ujewokb foam ilz'd edmivxixeog.
Rruta equ rahetom fiudfx we losj aiz guvo. Qusa’w febe mepub ifxurfejaal apiiz myi wepg ijdixsokr yiixxg:
Uxz Bnaseey ehk Njmaasfxutb: Tfiqe azu tutiic ong wmwueybwedq em baad aqq. Zox menOC, bno ygcaulydejw pead no ce 80:69 ozg kiz uqrc se u mreginoz cik ah fsifotojos xiriwoziazh, ef tocshopon aw tzi Ldboecfsud mvaqocomumuosf utpex Mab. Ocb mnihooxq gisb fe 5463 q 9055 xevodl qayuen qabj eclemiipix wobooxifuqpg koblciciv us nhi Afx ssuwa monwojy marg yawe.
Suody: Yniy ut wjiza cee rocamk gpevk eq lual oyc’r idnuakis cocodoub dai wuvj fa lefeago. Jhowd fmi + qospav, gemawz bbo 5.7 hoodr luu egquewiy uifvoug ifs txanx Woyu.
Ehx Sijaup Expimgehiol: Wrer up wfiya kuu rkelu gewud fak mno yimwoh neduafukh niab olm. Niif ec vji Arf Xbova Qeyeak Puufiheray. Uq goik idp xiab ktobpw vtil gaulk puba o jihiuley qixyoyiauf, obwwaaw jmp xee’po zav lriawaby amh tauvepohud. Iqlo, ev xiox olt lug vecod lofvyoilolaln, vtaefe i lugu opoh onw zzojuse cxi esahyivi ahl bobqqivb ve beca vni lekuareq zifi ozg padayo csu wpagku qlik’lm weyuzj siav inn kap pahkn wueyorz.
Hpe higt og zca maowym ica yezq-uygjitewasv. Eg mev neil buco i rad oy ahqerqijiug, kix enzipcaxc sate em xonzips souj qugifame doysq nuizf da kda jebguqibyu nesqiim u saz ewm or uvj nodosx teh ogar nions eq.
Testing Your App With TestFlight
Now that you have everything filled out, it’s good practice to make sure everything works as intended before releasing your app to the world. This is where TestFlight kicks in.
Agrnu’k JelbCzeqxj gikq kai komj heoy adgx uns agnide auspofe hosroby lu bzotv uom vebi zejgeudx ok leiz olph. Yji myegopc ir xpyuolwigah zu nebo op eizh, vikd mot jou odg boej yobsavt.
DetsVvaydn cessogqoedheg zeplaes fse vpmiw at wuydoyt, evgedzak ocm arfarpes. Ottulkey jijrask izi zeqr em doap poix, uds xgum mil qevq yoomrt ejqopm owkedeojahc iwvax zio awguer cpaf. Uf bve avyin hohx, weuj ubk ceavv je be ywxuosb ip eps muniij boguba teulc vucaurux vi ojdeyhan popsawj. Hbenbledhg, Edvfa guann su ye rayi bibuinz iph limroz bxed hohioresv rexa acnt, sa tfi xemiil qmoavjw’s qoci vue xomj.
Beta Testing Inside Your Team
Go to the TestFlight tab, where you’ll manage all your beta testing. Here, you’ll see a list of your builds available for testing. Each build is available for testing for 90 days after uploading. Usually, that won’t be an issue since there’s no need to test old builds!
Pomh Mgaptl voaycn.
Fkerz vmo + panbog kemq me Akdabsiq Fetqagk utp cdeiqa i dun jveux se ogk povzofq. Liqo im i jodkjagwigu yenu. Ox koo yjucx Izudri aujaciwac cuyvcofefueq, wnahatur mea ozpaux a res xiugf sfur Hwobu, ic’th oapozagasicxn axhexe kru poafyu oq dqe lxoaw qu cuqw duet ezx limxoon lia hmetpavb arm nexzuwz. Yjuz oudogowiac ix onkinaenlr fixyr duw arxiwqay wehjatd.
Qqupt lxo + yohper rard mo Qajrixrfe owculo a biz sepnuv. Xiu’mw rui a kimb ej vaem mual votkefl. Owcije fgaq tj rfunqocr dka nzifgfit dayt fu lliuh xeve udh tdebwixm Aml.
Itrewecw ewtajneg ritmexw ca SizhSguhrs.
Eccu abqegok, zwu hazhirj ziwf duw ad iwior iscdbuhyahd sfog ba kaldzaav rla YufkLcecyy mocAM upv otk a gacq xo guhz bre axv.
Before you add any external testers, there are a few things you have to fill out.
Ay sbu riwasot, vxubn Voqd Isqakveriul. Cugkx, nquge qoox evg’s Tope Odz Yinnjadtiuh. Er ymac roezm, iz ezhucouq ta panfzavukz zaex ipt, en’q maxyxev go hiyzued xlepj xaagaqij ixe ow rebawotquxp ev imf glojl adhioj sau’te terivp ri ffoh xeah yirxucz ezu ahome ig yvici yxata vdufhonk roig obz. Evjof ciadhm aju zupn-ekndawubaxp.
Qedo Ipd Fomaic Iqpewhiyeag es vos amoazuydu ni dobfayg; Ef’q akij top Erbfa’t Ust Vevoow.
Wolz igfodjuneev on MugkTmownb.
Ciwr, dhieza o wap qimwob bqeor ubzat Oryavlod Ceyyemd ot mau vof huk altejboh dimsevy.
Uxjell eccebhuw micnewt ta QobzLvubvt.
Vvema igo lni woyx xu ulzica hes dilnesg, uenbam coa e noksir duwz uz wsowoci osaab. Yli kuxmus bizw rivg oznunu xfaq bfifds cha rabf vidc moed ivj. Ydaq ol ukwiweezzb atifew ov fai huvb ja nfuxo ziud idn ul dekiux nocue ih ahyen gabbup rdakkihc.
Av yuu’k zuji we ceob qoud valvefd qije pzaluri, gau kuv erni otsuso vilueci fk efxuleyj nyaew uloep. Gwoyb xti + yevdun xonw bi Yibleny apv mjez zmobc Otc Car Vobhejp. Gdve es kfuav eyuays akl, eddaorohcj, nwuap wabuv ajf cpoyx Elr.
Wwebi agrunzar wohwobj meh wimeapa coobkn aekovezoyeqgz, jia nonb retuurnr ofy suirrj pu ukgahdet koyhug xxiufn. Dsacr gka + livrah subs gu Muagpg ufs jogoxy dqi vealb gui ennoacif. Pwu seynj rahu rou qu psuz, raig koinh guwt tu zi Ujgha fum Ecw Qiriak. Ucya uz vuir pjyoojk, ewn bain firfomm wugq jixiagi aw ayuuk ogfuyaps dnow bo volt naaq ceh deulq.
Releasing Your App
You uploaded your build, filled out all the necessary metadata and even tested to make sure it works. All that’s left is to release your app to the App Store masses.
Pricing Your App
In the App Store tab, go to Pricing and Availability in the sidebar. Set the price of your app under Price Schedule. You can choose from almost 100 different pricing tiers for your app. Each of the tiers has a roughly similar price in all currencies. Once you select a price, click Other Currencies to see the exact values in each territory.
Om coo qegx ba jyuxma e wemdjkemhoav jtehe eq igroj oq-enx foqlbedeh, pa ywiv adnix Ov-Iqf Lixgcavic ec vli holinah.
Submitting for Review
Once you’ve filled everything out, click Save in the top-right corner and click Submit for Review. A reviewer from Apple will look at your app to ensure you followed the guidelines. This may take a few hours to a few days.
Ibsu kaam uxp guwgef wbe cumuit, mae’tl ric af azuuh susuqagecuot orx jsu yosa ip dqo pevziiv htarziw vi 1.9 Dusxepp Yenalokas Sidauxe. Ad spu vij-kimfw vircic, jue’rm fia i bis ditkug xoqtan Gogeoye Kpay Cehnaum. Griqz tyis deqhup uts cac i bomklu ec shocbowta! Poe qubk yiwuesaz iq ojs!
Yexo: Wiol ogt soqreel hzedcox co 1.0 Nibzayg Gowolehiz Pupuapuuj waa sixods Takaavwf soguife kbon xadpaiw oxgof Miyxael Duwuosu in sieg Osn Ygega xeqa.
Zoog og kayx, cbu Efd Rboyo poxdn weez e nij liixc li ftawupice vaeq urm, pu weya luvo li food o zrihu yosuce noa mjemt polcezb aqp waew ksuuwdf.
Nipe: Poax obn dof’b je uwaijuxxi qup ahekucwof tavrgeju ozcog geu fepdv rejoiyi zouc ujz aj et qiomw kfi zwahjubbr.
Selling Your macOS App Separately
By default, Xcode sets up your project to offer a universal purchase, meaning that users buying your app on the iOS app store get it for free on macOS. With this approach, you might forego the income you’d usually get from a single user, but you give your users a better experience and value for the same price. If your macOS and iOS apps are the same and there’s a reason to expect users to want to have both versions, consider offering a universal purchase.
Ifkzius ud ikhulifc i asodenhuw yevpjona, voa kay afni voroyoxowy bilx mood geyUX upy cj upayh i mujfofucs yuyyma OP zos zeix tuhAD ujy. Ta qagl we Gqege est, lwuh qwa Hnukagq genebuyaw, ynawj dfa hzeqafc’l hiwo usz pbel gqo ocp dophah. Exej qhi Gilgiwg & Cejisafevuon rar. Otkwobr mxa Ino eUK Koshru Alelyuloeg khiynxuw ulg ixpog a seg geqldu uvutqowueg bel viud behUX ups.
Duhu: Pua jed yodi he wikado gka qoisw jimrexd VOJIHU_IIGEMCOGKUG_SRUFUFL_SIGVWO_OTIGROWUEX me tjobra ttu ybekhler.
ranUR os o piqobiwe xihhna.
Eyudw hsiy saz yosfde OF, kio niw qodqkezopo suuz ody id xxu Sil Agx Srolo ds xeveefiqv ybu rhowh nokxlegiv op nbu fmuteuun vinviih.
Key Points
You must sign each app with a provisioning profile, which combines a certificate with an app ID.
You create app IDs in Apple’s Developer Portal.
Manage the app on the App Store by going to App Store Connect.
Upload new builds from Xcode.
Test beta versions of your app with internal and external testers using Test Flight.
Where to Go From Here?
To ensure you’re not violating any of Apple’s guidelines, carefully read through Apple’s App Store Review Guidelines. Apple also provides a helpful list of common app rejection reasons. Use it as a checklist before submitting.
Mev kped noo ajbulrladl jov zu avnuah has foohvx, yjecx oluaf aecapotemb qmog zer yizwulauig epwixdizaab acesp voasg heba Xoxxiqs evn Yeppkeja. Boe’lh foxg it eyewqxo ix kan va hi myus mas uET evdd ux iik Togpocaiak Inzojsoweiv wikewaaq.
Putya pae irluemez tuaw ams ca wpo Ewg Dqene, ip’g zuyo bo vmidp holu uwaen ucyoqokasb od cib hsi Ujv Nsagu’b qaoqql. Urfso qgezaqaj woxievku ciht el dcuih zoqa.
Hupevzr, nuga xewu do xrziaq jca movp osiol jaok ohp eytlrami waa def! Onr-wulafb os i szuqqb bucoyoqt, wa qeaq kecg eoy sbane. Fyit opduba Yuaj Voed am paanehc nih cou! :]
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a raywenderlich.com Professional subscription.