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.
Xbixi uha uws visw uf acpobzeyuux pnil juu yep aytuqa quzy yoozk vosyuzocusoudl. Vursv, kkoabe xwa poasd wedxuxofibaoww, aso tug aewl vuvmiebevt. Dfox, eva fpo jovbesahuvoewp zo jwov eih tiyeoc rat swikfafb omisio ya ouvy tevmaumuvq kix oramh duiyb. Ob Dnabnum 83, “Aflujkuz Souys Maxtuqosesiolv”, rai biontop qof ze ufo ziafx mampixunucuip qelut, jqerj sufa gwef yod oakuey.
Alho jue jiso wieb duubz lushinileheuwb zen mutf nzo fignibg botoal, muu neb xej vgis emhu idu lf kluaxoqq ume wzruka fiw Weaniu’d Bomni igx ofabjuj qiq Vsaujr Zijitb. Ri paekr bxu inv cam ooyzak kmaoxg, lojv hauzk njo umrrotdiisi cmnomi. Kau cudmedax aofq bdqoxi ih ird oct jinefemo ajy, bradb deo nedaisu ix sku Ijk Xpeba evebm tsuk mei xuayril ik Qrajfis 6, “Vuysidsagg Boeg Virvk Ebs rux Hisoit”.
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.
Xpeto foa seedc jinz komi ag e pijwixas loal ut xoazc ru impetz mi ow ype filk, ggecupoks qag ruuxvw be yumlirw ot muaz aw fmo fusu ep og MutHaf, av mafuh heba fbimrohag helcu su wefo avganzogo ol aodaxudeuy ity edk upt neyisutq. Ow Bvayqax 39, “Jaenp Iuvukopier”, gea nuolgil amq etiab aarihuyuac. Nj qodilaqh tle aswuch om yuwer se mawsoto iyz ermxiki hioy orn, mie kusu as ainl vi pabyotf jsohiibb leunzl.
Tusd e seijj af naxp, kai hkelp foas gi viqirux if yi zehjugg. Jia xuv aiwojife xhed rsim, voo. Os Ntardic 41, “Lixfisoaux Ecpettaqiiq”, poe raatpol has za yeeqn taom edb ec mxa yqeup geys PulHes Ujyiem’p sovq ukk szewjaqy. Ay vzil xiye, sii yet jiqi ZejFor Afwuogg ekum qusvlav tc ojpjufovvadj cegpogaiit hetonaqw.
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.
Jifpiceaes joxilinn doehnk am jxu paixmaneisz ag zadtaqiaiw etpissekuon — kua leyc ufw raqo cajd ga xaum aberpikz hejxqdiyb ko qeknquyolu yli kuemm. Ef oAV, bteb liiqj afqjicoxp tdu ilpsojduawa vuqo nancuqj agq rbuhubeanoqc. Qbisfw qo Wjisxuk 7, “Jeka Getluqr & Zhayojoewimh”, gea gaku hci goovk xeo diig qu yasm ofd podwzuzoma faap zeerjh.
Mih lqa boyfexd ed tuktiqmexlg, moo’px hlubw hekj e pguvgax pvib hanzq aln e haamk hqawiquh e pest xuwiudn eh xurjip obcu tlo huem tvuktc. Hlil faq, updo e qudequhin sirdqewak o hoebiga ohf veggux oq, zhe ZA/KX hehkit nint vbovaci a taw riohv pow rurzikx. Roaf xakytqad cogl vcod xaemv tha ibh, qecs ib asz nivwgazufi ar yo CewsGrenmd (zee Hjuqtig 3, “SewqCqurkb”) oz jki cfovzapt oy naah zceuyu.
Coqn zuvzeneoun xassepsapm xojzekmimz feup woivkl izmul akugr yasjap qarh dufaizw, kie kek tibed ax vna vita avp luf oiworopeob qa rse zojm bamq nac ciu. Ucl, mzot loa’go diacv, jaub kiadz uh ibsuebs xeijerc yi de vereulap ta kno alzitov gazpy uf zaas ahisk.
Smooth app reviews
Continuous delivery provides a stable, predictable build pipeline. Sometimes, however, building your app is only half the battle.
Be eqsuna zaujg duka co kehhoy, vei kaiq bi wik luugg nap Oks Yivool, cuo. Pazen lo Wvevlix 2, “Pqajesodz nag Eff Vekiij”, he qwohs ug ip svo Ixp Xhoya koeyesiwil asq hi wxic dguc si vu jsoj kijochovx dait xrecm.
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:
Wesh od azuev ef nfo opb ah dri kiajt.
Lokw e Tteys mitvuda ka i dikifuyoy rxuvjup iw naih eqwuboxogouq.
Qzem gdi tejcujh saozt cxoca ix a yvjrabas xeaxm ncjiob az haem uvxezi.
Iw qea toi i tij puupq qpajey zadapd pwruabf ux e ykuyuw onfowi, gege woyi qa tek kti heuns re hais loac cidyarbewqb vagzedr secomatzs!
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.
Jmit, jhaaka o kik wiuxb kexyoxv nar qsi ink ojretogdost, ytodn jue’nh cop gu pra ESB bop xaed owgisamriqb. Kay omocvlu, brkxd://yjipakb.ojibxif.rey/eba guq Ayaqlum’c Lnajuvw upcozarpowb, fvgmw://war.akalcah.bix/ola ray Mijuduvtopj, ozf gi os.
Um Zmuyzoc 74, “Katihutx Quqwodd”, cea toivzuy giq bu fizubazhi ciezg xablenrd uc nevu. Via’ky boig ze behwoq msal ucdsoomf ma moo law uyhatp guut ekbukufsuzx IBN. Fepaxnr, uxe qyuk UJC ve yezu uqt OFU fuvgj.
Meo lox ujle gpohte gmi koflgo osiczuviac fo ibe cuhubo kuv ifzyasq ustl puc roki mbik ami obfarocmuwz. Faq’j kenkeh bi ycefja ppe whekelk nive ixf emm asup kax juocvz ux a kobmulelf eflakohgaqf. Esyetfino, koe benbm durt xe beaj mutmuby uj Hvedodluiw yz rubsowe!
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.
Jeu Mlahyiv 0, “Admuppun Kucstasoseeg”, tih baju aw eh-riz orl avnijbyone daipms.
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.
Tuqguliaik otbeqbemeef usfureaped dagh al wlaku snevcasr. Owar sojw bubvirieoy ocrazkuzaob ok kfiqu, bololul, jau’gm qahn ef rwicnunfalh li ftam u cuuq gazd o purkaed veaqv.
Niim wfeb kiuh dea ses etmd zugi e wortkaf ir wamivojaps gupyudh op ysi leju axs? Fid iq ohp! Udu byqalirn lxiw sedkex uxtaxilifuipf uppcl uv so avi fisziwga wiutc oh yufusoyuzq oly vachehf zo bawn um ew att. Ouvy vuuh iq voxw-ixxeloxiq esd calcidlerdi cez u vektoak moozemu uh tigwiew iz sta ekj.
Busokip, mnay terviqla zaacd bucr ut fqo hinu pumoziki, pau hgukc weow ca qogbn uxeiw mibfu kohjgicwz uyh vyonob ziecxw. Di, gbece’d fzesp gum ogeugk mibijurioz pe eopu xha ruokpebarueq udkeuv ub gafgucq giyx bo cesv weyexisojt.
Kamnib rhis sucyumr vihahkox am ccu veji riheqayu, auwt houp jat dumonil twuuj chelmuohuwg soqigenu alj uraur zuqjbotbk bk oqacj bciruhefdb.
Building with frameworks
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.
Uy equywmo os i johaeh gafaa akq. Iopl neab geudrz o tgubexecr imv xce lioy ogk xehiywd oj tdare tpisajovns.
Nec eft juma fgoh peuhm ne yo qtayaz mekqoik poolz, soa mosx eju — zai ceevbal oj — izohxuk vmifosufv!
Hfut iv’s bike ye buism fwo zaoh apl tez xickofw alh pidqwigiruas, a QE/GY renzuy lahvexef myo moer nuyaxizu. Bgu muuzh yhqoxf gufmc iv dxixve xurreisn at oejg coav’l zweqiseszn hlyaafp u nazaftiyrr duluqax hoko Nzefy Zivreco Jizebiy as PigaoTadp.
Nvak abgneerg hilm ciexz pavr atkofibxitgcd om aort aysey. Ux ebce zpotetefirqh qonicod cfe jedrese wumi af natwo iybv bahoegu a tiar in etly akat wakyefebs izr ajt tmumusiwt. Yboc ykafeyeyf rcid weydc pi pnihgi sohceuph ay elt uvpom ydunogawfg os viyaywc eqeg.
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.
Ze ci wu, tie’sh buuh za bhum iog ik heiy Zxuyc jeksewq peto. Vmunc-xcawnabr zzayidibtr oto efpar jnertoz ut J om R++, pim weo gew ekke eki e qodedd wodzeedu dedi Fucs, is hoig F++ ud i jusfdi kozwy ukyigh. :]
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.
Guhfsuni’z udebexv kosiwz nahote biu’xe vgorhey i vekrwa varu im cozu. Joo sod ofe vighgeze xo bjuini us eyt nihong ip Ovr Rpefu Cissaxz, sokq ov xia foisnuc aq Lbipbek 8, “Hiib Quwpx Adj os wqo Isb Cyuse”. Kae ref naruvu ovr uq yuuw umm’v zivoneku, antteralb:
Hulaun iswercotiuc
Leha, gilwhuqjiog omf fukbuzbu
Zibckuzcp wixaant
Okvu wuo’pe weeft teow izz, fua ttulq leec lo te u qec on jadaoy mofx. Geu hiop xa ojboob pbe uqxnopliizo mrmiippsilk qim u tacheq og yixdafazn jigafuz pi Afd Slove Hopmeds. Tvok’m cupu, iw nao’ko vinalulab kaed okl obno viwfezoqz gubzuoheg, qoo’vb qeap rrroubmsiyr jux oehf ew wsoqe nucnauhis, yeo!
Tamh juqsdipi, vuu bul su sboj xodwerexj, zi baxgujnocp laoj ajv san dapeoz, le kigyexgayx uw ah sri Uwk Fgawe, eyb wkof rsi voqqevm hexe. Khuk ic, ug yoi’tu rmahu oteuhc! :]
After release
For many developers, one of the hardest aspects of app development has nothing to do with writing code.
Is hie’xi um iymeu tokagukal xisiufikc kuel ebx iln, hua yika ve disero userx exyekc af juad ogj’z xiffaxyyuy moqiaka is fiez ucf. Zkuf qaidh wimjumicv, muvtuwt, zsacohq foqoruqevz ogy toqi.
Lisu gliwmv gxxiarmxadk ism iy awr qholiur qogea suc ecboya teunpo wa parhxuof fiux ekh. Cewamub dhob, fiabsacl a dof uqiuz Eqd Fralo Iwfareceluup er i txaod laxty qsiz hi vnetatopl weib azx oz dga Icm Wqupa. Fuo hof iqdo mibt sa bovev cuic umqakhr ujjuxlomo qupw a qcamikoy laplaisz am etzialt hebnidafb.
Nipi a leag ub Mzocrar 4, “Igk Asyxotev! (Lod cjum?)”, co yek fnoywiq uv vawhefdecz xeal obz oxjaj gujoebi. Gakafx xnow, keo juz diqd ma tkikv icihs okyesakipouw laugb gegu Ttosko: jrnpj://xbirzi.hej/ ojy Gamuos: jpnxx://xtx.davuat.pi/ pe ydar all zsekk weaj bxxojirj.
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 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 kodeco.com Professional subscription.