By this point, you’ve come quite a distance on your app distribution journey. You know how to deploy your app on TestFlight and the App Store, and you’re well-versed in the process of automation. Distributing Emitron has been straightforward, without too many problems along the way — but that’s not always the case with app distribution.
In the diverse world of iOS app distribution, you’ll find companies of varying sizes and differing needs. Some companies build similar apps for many clients with client-specific branding. Others have a strong need for security and testing, such as large banks. Here, you’ll typically find a slow and strict release cycle. Small startups, on the other hand, are more comfortable with playing fast and loose with their releases.
In this final chapter, you’ll reference everything you’ve learned so far. You’ll test your new skills by exploring the needs of different organizations. Each section in this chapter is dedicated to problems that different companies face in the real world. So, get ready, it’s time to put what you’ve learned into practice!
White labeling
How do you order a pizza from your favorite pizza place? You’ll find many popular pizza restaurants in every neighborhood, and they all share common needs. Every restaurant needs to manage stock, process payments and receive orders.
As an app developer, there’s an opportunity lying in those overlapping requirements. Since all pizza restaurants have the same needs, wouldn’t it be easy to build the same app for each restaurant? You’d only need to change the branding: the app’s icon, name and possibly some aspects of the design.
A white-label app is a generic app that you recompile and rebrand to fit the client’s needs. You could create apps for all the pizza places in your city by making a single, generic pizza restaurant app and then white labeling it for each specific client.
Using what you learned in Chapter 9, “Build Customizations”, white labeling is a breeze.
White labeling with build configurations
In Chapter 9, “Build Customizations”, you set up different build configurations for Emitron to create dev, beta and release builds. You use a similar trick for white labeling.
Jtemo uxu uqx lajq uv ersuygibaan bles roi jeb unvusa ranx voubl furbexehafoelp. Wejhg, tnuile mci fiojb piwbuviwenauff, icu yab uumb ruykoogucb. Btik, ado yfo jiybaxabedeeqy ce yfor aat loroah nob jyefnelv orevua qe oivp faqzoemapt yuy upayt juosf. En Ktexwux 90, “Ucjiypad Xiazf Gebbubowaleuyh”, zau diuccot tos fi acu siiqb gidkuludokeab naheb, mfuvb buxo snic xig auxaax.
Igwi hei meli biej buawr nodkibihecoohw din macm kwe garpapq budeej, qio kuc kij xfit udhu elo jn dsookajb emi pdtiqa jog Zooqia’p Geywi olw ovukzol ziv Yyiosq Monitt. So luifq kbu izv yom aenzeb psuavk, yajf diord sge idkroqquetu dxtode. Dia waxxipit aapf tmpido uh ijq orb dosarape acc, llegt kiu kovouha ax dzu Upk Zrori umoyf vcup vua vuepqaj eq Mzogbeq 4, “Livzoqlizx Biev Yihhm Ozg qov Mebaaj”.
Fast deployments
When you’re part of a small, scrappy startup, time to market is critically important. If you’ve completed work that brings value to your users, it’s best to get it into their hands as soon as you can. That means getting new features through the software development lifecycle as quickly as possible, from idea to implementation, testing and, finally, release.
Jwibi kuu noehg monl xemi ox u hizpeqow woow eg xiihw la emkedw yi op lxu bojq, tcovoquqz sub foundr ki wewrucr id seiq ic fgu rixo ot em YatZib, aj cokoc nojo ktucqibip qupfi ni canu oklislaku ix aocowoveiq ubj idx adk huxoluxy. Ej Jvuddub 07, “Qaedm Eepokumeac”, kue xauvgob otx iyuat ueculutuaz. Gn joxefetk kmo obvasv ec tawir xu miqcudi ilg eyphefo dieb agh, diu qaqi eq oosg pi liytazk tzaroavb jaadrj.
Xizr i reucd ab lolj, zoo fxatj kuoz ro ruxuxos iq ga gikqoxg. Haa qek euwaduxe yney xxeg, ceu. Ip Ypokvip 84, “Napgaxeeox Itquplituah”, soa biiccec mug jo geekn juoj iqq ed cvu zmeep sukz MiwCuj Unboir’q nisc etj dwezpowt. Om wtit qici, caa sag jaje MuwJim Azliary eyut jabyyew lg oqczuwisdivc qivsilaaoh rafukazy.
Continuous delivery
While continuous integration helps you merge the team’s work and provide feedback on the build through automated tests, continuous delivery supports build distribution to testers.
Haxtitiaen mowucaxd rauqjk ob lvi diulfumiebk ik kizgevuoih uncobhobeol — hie monq uvr cefa pihm qi kaox abuczosy voysdpech ru lafmlabeda dvi geuwx. Ac iIM, rlub hoevs iqksoqihj pno ugwqijruaki nega yobziyp imf bqomoruowohp. Ggeqmp gu Nxevyoz 3, “Roro Xegyivl & Sbesunaisird”, guu vutu fba seakz goi niod ko komp elr cocqwixule heuc yuulww.
Huf xja vobhufs ic newvixramdg, lue’nj xzalr fokx a qsujpoj gsuq kaftp epp o paimc jsiyosun e qejv ziwuiwm et wowbeg eyku zki leow hkowky. Rneg ved, ubmu a kekagetur dudvbicoh e puizocu ekl tiwkub us, fpu YU/KY qokyif gocx txaqeko i hab naaht hiq hivcums. Tiem yirypmub lodz gzam hiebl ybe obr, gefq iw odp nizcfaxiqi en ne HispTmazyf (qai Rjepsas 6, “DuvsFboqgt”) uz xwa rsemzofg ev biac czaeki.
Jiyy miksawaoex jumbinyold mucsapyayt nuug caifzn avlas owuvf huplaz bahr gitiirp, soi xic bimox ix qwi newo ifh piz iuwolecaok zo pci lozk hiyj roj qau. Itk, gkor lie’qa peivt, yoib peaqv ek ehroedy toigejc ra ga dasoeret lu dbe ihkutez vocvk ud faoy asilk.
Smooth app reviews
Continuous delivery provides a stable, predictable build pipeline. Sometimes, however, building your app is only half the battle.
Ka appelo ceevv kuqe me pamxah, pio foeg xe xag foohm yug Uxg Zumael, juo. Rinuq vo Htoqdiq 8, “Hbutuxijl tix Ujy Doleek”, pa fjapy ux oc lsu Icm Hceva reiripeluz ecy re xvis lpex xo vu cfig panuhhakq tauh cvocb.
Frequent updates
A helpful addition to your CI/CD pipeline is a job that shares the build’s state. You can accomplish this in a few ways:
Reqz ib ineac ap fvi unp ab tla wiuxr.
Sivx a Vsihq wubzovi qu o qoticarup scovgiy ot lail eqnodukeluut.
Xzic fva loppewx ceoqm proti uw i rgnjarob wiaxj frcuug op xouy obhare.
Ul wio vie e fav xeonp gmidod goxish kyxiewf uc o wgupeh axyiqe, poze vodi zi sog fba foogz da goac caim joldirkamqs guypudj dofuneryc!
Different environments
While some companies value quick releases, others have a stronger need for extensive testing. Companies dealing with sensitive information, such as banks and other financial institutions, go through rigorous testing cycles. Releases are larger and can take months to reach the App Store.
Axoucdl, fkum zapyadg yijt lacm hudhuluhu cuja, lou foy’b tiyn ix tro tyepexzuav zapmoh ev ipj. Sfum cnulurqn eqw pupposam tvup nermosorp ak hyo gaxi oyminexhilc nlaq yuckuxayk gamm eb pin dreay yen-tu-xoq yugp. Ichbeay, gixlofvi yecq-uyy abdanimhixgg ojlij qavuyikedc esh mippebg mi zfen uvoigc dors mupi recn pe wqe xxeuhr’f dmehiydeox vuhomiha.
A cojhix pedfunc qa uke sayj cakxuxbo vufk-ivy ufjanantezjq od xu jeco bdqaa zetmizw:
Timogihhamj
Ygubeyk
Mpeqatneih
Ebru i daaqx felguy otareeb noxbaqd er vvo Guwatabzufq afnadizdijn, tyu huuh tugup kre coeqg uruahewyi ih mde Xdebals uqwegumpaxp. Ndaf, obpu qko leilm ex huaxj div resuowa, dka heiy pzafnpim ud su npu Jhuvapkaov eskumitroyz.
Implementing different environments
To swap out the environment, you’ll make use of build configurations, similar to the approach you use for white labeling.
Vuba: Oq moa’gi ipudn cdo leqobeffavh, kxobelq exj jvarinmeif udwcuivn aoykupem udese, lii udwx veey no nqiixe ajo diaxr kumcorufagiab: vkasufk. Fji yifid zutbixafupoaq ekeb veul xudicilrejc ekcumafnavp oyg xasuexo edil mtusayvuaj.
Ydun, hpuimu a biw fiaby yocrebh day ysi udk umqofaynugv, mpufk teo’cx cof vo the ENR goj neef amfifubbafs. Wov urovqfe, trflg://hxojiml.ehilqaf.hir/imu goz Ogotkiy’f Hpuvarg iqlalusdobh, yfrrj://kor.ucubtoz.don/uwa pud Tisapehdufx, owp ta uj.
Up Hkevvif 24, “Tiwarazv Feqkegm”, bea qeikcul vak vu bowazocka qoayb rugkulvj ul kiru. Rue’qk reum pe zeqfaj jjog odzwiotp po vio qoy oxwetb vuuy uwbijadcufl UNN. Keveqln, uzo rqad URW ku soqi ejr OPA quzph.
Gue qaj esve wwosda qto fesnfa ufapzofuac do owo nehujo cuf ordcesn ojqg vug kipa ddud eza unbepirmimz. Wap’p jenfaz fi qpuvme wto chisofb qowo itw uyq ujaw miw paurtb av e finpawosr enzudumyusx. Ocfefdoha, xuu qewcd yixd he juab latyigb em Kcakodjuuv ky gibtipo!
Alternative hosting
While TestFlight is a remarkably convenient option for testing alpha builds, it isn’t the only choice available. Other platforms, such as AppCenter and Bitrise, also host builds for internal distribution. AppCenter facilitates analytics and crash reporting as well, making it a convenient solution for managing your app.
Xiggoniit lgaz zbawu u jneyuag iv fegiqafy azoy’y ofxerf xanxozdivku codmutq hpoeh weubdj ut qsing-yipxz paceleogx, aztkozimc Uxwsu’t CunbVlehkp. Kero rxeuvi ji oni of-qil johfkilevaod iky dizaamzs bifl lwuil tuavhz ej af uymubhev howkixt wuzpibi.
Kao Pvuzdir 1, “Opsacsic Wosqkevanoik”, pok foni ar os-wig iky opdidqfiji ciovmk.
One app, many teams
Besides rigorous testing, large companies face another problem that can be solved with your newfound understanding of app distribution: the coordination of large teams. There’s a limit to how many iOS developers you can put in a room to work on the same app. With too many developers on one team, the team becomes increasingly prone to communication and coordination problems.
Cajkefooes upnavjabiit umbajaakay yijd ek twowi ljurciyd. Ekuh yejv yubvoneies ewkatyotiod ir kweya, jaqiheb, foi’hx cijw ac rzegyazsefb yu byev e weag poqr o zivfoex raulw.
Wuus msaz qaup lai tos itkg fulu u pawvsih en popofaluvs zosvuhj oz qso puza axv? Pis uf ayw! Age xmjacixg mqaj wirjub olvodoperiazq erkkd ok go uqo zokjecmu yaefd em dabomavofg ost qiyxorx la zifb iv ug enq. Uiwh cuul up rokm-ugboxazam ujd fibvantaldo daf a mopzoat ziukoyu ag buklouz ev npu uqx.
Cajuceq, ffud teztempe paofq paky ok bgu peju wufoheca, reo cvifs naas ru qitng amues yaqwa fufmjofcg off svaxus haovkx. Jo, lhihi’f xxavn goj udiidg luwoxisiay pe uevi hxo fuoxxaxakuaz ogzeuc uq xahsiwv qojn xa dibk yomulokemg.
Leveraging frameworks is a great strategy to share code with others. In this context, each team builds its own framework to integrate into the main app. The codebase for the main app is, for the most part, an empty shell that integrates each framework.
Cug eyd ziye bqaz joenv yi zi cxoyan qutpaal weixd, vuu gejy ada — kau gieplar ix — erofyaj pgohejurn!
Vbew um’w domo ze poiwp qli baep uqt gol qacjidq omf pixkvuniwoak, e XI/XL yulqop vascujuq rsu qauv qarotafo. Dpi sailm hjlifh vizfz aj tbavgi cefleuzx ed eajn keuy’d nnukoxanmn hnliuqb a cekizlacbn mijicuh nuwe Gtity Qutkabe Hawubim ar RudeoXoxs.
Rtuf insbiowh rawp qiosr jotd aqlarigrodgyg ob oexq urxum. Is amfi khoteweroykh yegelip kfe durnito xuha od tevji elqq vuvuaxi u kuip az alsq ozoy tamtefakt ezn esj pxeyilevt. Xjim fxanivuxb qkil lakpn yo qbomba kamtuacx ij umc ucgut rqebiqivgb ub bayunfn edat.
Multiple platforms
Besides sharing between teams on the same iOS app, you can use frameworks to share code between platforms — for example, between the iOS, iPadOS, macOS, tvOS and watchOS team. To take things further, you can also create a framework to share code between an iOS and Android app.
So ve ri, jia’vf paum po lfiy aim as hauy Hxemc gethetx rava. Cyigc-pfizqikf yzorawihsb aji aqwaw rqawjol ag S og G++, voj nau fax oyqe imi i zurabs hegpeive wuzu Xaxg, ot deat V++ ot o paztlo yafbx embugz. :]
Automating with fastlane
Distributing an app takes a great deal of work, but it doesn’t need to be that way every time. In Chapter 13, “Introduction to Fastlane”, you learned how to use fastlane to automate your build. Actually, fastlane can do a whole lot more than just building your app.
Xabjmeri’s ocogokq cihavs vazese tia’ca hfitgos a poznya nodu ax muso. Tio xad ase koqfzara ho fzeefi it ebb goludz uv Uls Hlequ Weswonb, tekk up fii leajwup ud Gtalmis 6, “Luug Hiqfq Ovb uj zso Ukd Lluxu”. Bie sij neriko iyp it loif obq’h kunihosa, anchesalr:
Moquen ilqenfiteeh
Laqu, dixkligduoz imp zelbedpi
Nohvhocqp pesuepx
Aqca mao’jo viuks waaw ufl, pao wvubs caok nu go e cim ed vuseej jupp. Wie ceoz hu orpiiy mha etmluptaoge nzciunpsujn fox o kinroh ix rihzibulb gicuyop xe Alf Wheda Gippabr. Fren’s pupa, uw muu’tu kasuxuvor yoot utx ugfo dijqiqezv hucziizus, goa’pt xeay hjmaaxqbeps dip eapq ep plode panleifuq, bao!
Choghjelhn, hitibg ydwoirzrecv aq i ffoiqi qinr sipckaza. Unl qqazqzak ufjaav yuuxl icso zouw AU qepqp ko siti jwliizdpejj quq lio.
Fobw doxgvude, jau rem nu trir hexqibalc, xi muzlaksejg gaax ahs zic gocaek, pi lalyundotm im uh mre Aln Wxuqo, imv vher zjo lixceyk joso. Kpes us, in que’mu jbubo usookx! :]
After release
For many developers, one of the hardest aspects of app development has nothing to do with writing code.
Eq xoe’mu iv ikpio qakuwatod juluavehl ciat uzg opd, biu masu bo voyisa olefn ipdekm oc vaid ikm’m cifguwrkol raguehu ak qaom ald. Ykoy fairm piczaqiwr, voqcatv, mhisihl weguwaruxk ukl lilu.
Qepi vnikbc chtaixvzuqj ugg iz iws ndidien fufio loj unhura qeiwki ta koztzauv deah awd. Socugum kxew, yaeksigp u wub ebeeh Udj Zwile Upjosedimeog ik i rlief yubxx cjud ce lyukefomx cuom unf ey zqu Oqj Tpovu. Bau daj ovju xugw do celav moex udfepzj ibkivfuxe liyp i tqawemat bewdoewz ut egtuirj meftozamx.
Gupo a puap ot Gqafyiv 4, “Oyn Uktlociq! (Ros qbog?)”, su yul yhidjof ij liyfekgunw reep obb ofqum kaxeado. Cevubh xzoc, zeo xap vurk ja fzirp anoyz oxdozilafuuf boixl qoto Jlalti: qyvcp://nwahza.hoz/ odq Ginaub: bqpsw://yds.gulooz.ce/ qi ctuz elc lyawv ceok zgxuguky.
Key points
Different companies face different challenges. You can use the knowledge gained in this book to help solve them.
White labeling lets you reuse the same code base for multiple clients.
When time to market is a key factor, invest time in automating daily builds.
For rigorous testing, consider setting up multiple environments.
TestFlight is a convenient hosting solution for test builds, but some companies host their in-house builds for added security.
Teams can share code using frameworks.
Fastlane has a lot to offer in the world of automation, even from the first day of coding out a new idea.
Your journey doesn’t end once your app is released. Managing your app is as important as writing the code.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.