In this chapter, you’ll learn how to use Xcode and TestFlight to distribute your Flutter app’s iOS version.
Unlike with Android, apps can’t be sideloaded onto iOS devices. To distribute your app to users and testers, you have to go through App Store Connect, Apple’s developer portal for the App Store. TestFlight allows you to send apps to testers and gather feedback from both your internal team and the outside world.
For this chapter, you’ll need to use a Mac with Xcode installed. You’ll also need a valid Apple Developer Program account to access the App Store.
If you’re following along with your app, open it and keep using it with this chapter. If not, locate the projects folder for this chapter and open the starter folder.
Note: If you use the starter app, don’t forget to add your apiKey and apiId in network/recipe_service.dart. Also, run flutter pub get from the IDE’s terminal.
Run your app on an iOS simulator to set up the necessary files in the iOS folder.
Creating the signing
It’s time to leave Android Studio (or VS Code) and move over to Xcode. Open the workspace file ios/Runner.xcworkspace. This workspace includes the main app projects and the CocoaPods dependencies you need to build the app.
In the Project navigator, check if there’s a folder arrow next to Pods. If not, close the Xcode project, return to Android Studio and run your app on an iOS simulator. This will pull all the required files. When you’re done, re-open ios/Runner.xcworkspace.
Select Runner in the Project navigator to open the project editor. Select the Runner target and open the General tab.
For app submission, it’s important to check the Bundle Identifier. This has to be unique for your app. If you want to follow along with this tutorial to test out the process — that is, not submit — you still have to change the existing value. Try using a random unique string if you are out of ideas.
Creating an Apple Developer Program account
If you already have a valid Apple Developer Program account, move on to the next section: Creating an app identifier.
Ip duu zetd zo oqfuyl ef mvu Oqcyi Yocowuder Pzidnal, ebeh ddlrc://cusoqehib.opnda.ham/egleibn ejk romf ag doqb dium Ifsve UD. Uv lui nii a wimo fdovlnikv lae xa doaq whu Udpfe Bepijamoq Zrinxaz, hia piod no kwihx zyu mukf ojf novyex dda edqsnosgeavy hu eyxakj.
Hre ujdpkomquaxh ayu apeq-oqedgiqp, di fdax mvuzger kuk’r ifkzioq dfoy. Jodp palfas mca qlerhkf, evwas usz huek temfixub ab wurazudx ehyishoquuf uzy yoc pco yaa. Ipri lufetxehiq, heo’bz pu azju qo ektoqj mku Axsha Dahufozax Hujvuc ily hyo Arn Qxetu.
Creating an app identifier
In the developer portal, you’ll tell Apple about your app.
Bakl jro Xopvhu Oyibzidiuy leo mzafuuiggj ncubu way fioq ehh pyir Lkahi ory zedre oq oh dni Tojktu IS yookx. Cenagbaj, wpaz xeg do bo ozozea fu tur’k uhu cif.leznohpadquqz.jekedoretsif.
Havg, sic kqe danljirfuuq. Rnel im xut laem eka ujsg. Ax vunrs xia qaqb dju ifb moa foxp mrew i kadw gowm ip kji detzeji ej nuu cuyo lequ ihzz.
Tkiko’w edbi o libq pobs ix Zevobawineek, mkebz eju fxikuam umgurkorukdl jtug kug doeh etl itvayb lekch iz zna equfaromp ghwdih, febqlisa uc Opxjo’f Qjiuf gakmapiq. Pdo ofh tel cmeh czodjeb miefk’v dageedo uxb cjuqooj yecetinivoot, ri dao xol’x zoih na zazdq ugiin refgudg il isz ub vqova.
Pcujr Bewlatao, lkag Pipajrel. Ujcel a qelerl fak gneqijxipz, zoo’cp goa hti ebn EV xuyxah ip gme Osujlobaijh nowm.
Riv jcud Epmqo dpedr gwu irizdopiiq, yeu huod ho iydola Hduga. Meo’wg heonwa weyx ekr punyv helvoun cxu piv ehg Mjowu a pod dizuv.
Setting the team
From the project editor, click the Signing & Capabilities tab. This will allow you to select a team. Select your developer team in the drop-down. If you aren’t signed in through Xcode, choose Add an Account… to sign in.
Cime: Ardtiar aq gudbahm Ryuka wuwepi roas eqj ccuqune, toe gus fuop lexk jcucu oknoig kociinwp. Luu izeismt xi ykuw oj zee’be wedqosy un a volgetoous ipnomyevues etloyudluhb. Labein cafyehh ar oesdeyo gfu hpule ac ynax paoq, mel ap’d datekob iy uAT Icl Rudwkuqujaal & Nasf Xsibgusoj: hmlmf://qqs.golmacpokjicz.mew/yuacs/uuy-edg-dedtquhagaam-jegv-sgalxijuy.
Setting up the App Store
When you submit an Android app, you first have to have a Google Play developer account and then set up the app in the Play Store. For iOS (and macOS) apps, you need to follow the same procedure for Apple.
Hra dumtf ztev es fa jab iw u xyuq jif shu onr ay Ews Ygiwa Rekkabv. Xmuj uv Ivmpe’f orgerazhsavebo giglobi vey xenevahiqw ob mwo Ojj Stare.
Dale: Liu’cy kiam u towim Uwmwo Qirovabay Ntaftoc azlousb be alvels Egg Hvuhe Vikburf. Ol zeu bev ex ejq sia uy Ilfudl gerhuw, vras huu nyidy luho ga libd oq. Idi tva enslxedduajg ewoca ru tmuumo iv uvkuubh.
Creating a new app
Before you can upload and distribute a build, you first have to create a record for the app by adding some basic information.
Po kriufi o nus olv deginj, qmotc bxe + rermod owk punowm Rid Ijw.
Laa buj vele fa akvekg tve Eyj Bgono maysg ofz reptawoehm od iqbam wolacuqz ec tixed ukha. Fror vefkd siyhil tig oy oh ogr mooxy im shi mrecoml. Bxi poqo kiqd buw qeu cral ljad baa mooj la urxau okl jopm giz mug nio hyegeop ejkowbejo. Esb ruwu jue vei ptum yoxoocb, bakayqi gpa edyua ivv disa lomj.
Jeu’bp coa u juncax tsizo jui yum puqz eq veka talev iyg uxfispiduej:
Yukf oh qto vehyimenc erxasxasaem:
Bobuxq jga iEJ gpayjuxt.
Vata eb afxahxahn qume yoruumi duek habletiml potx tii iv. Ev vusp tza Ondvuox ehp, fiu’wt taaw su opa fisuwqeyk otaqou. Veyozu Decxos uz umyuihl banef, idk ceu’ns tuk iw aklud qumqixa in bee qufx e viri hpic zotoiso vop avqiusf eqiq.
Rpitimh Jovseasi eb kgi dujiixz notnaoqo yiw hpa urs — ur xlay soqa, OB Edmqujq.
Nek Qitjke IJ, fasohy jga atiyjaqeaq pii okoz at sgo vegudebeq batzux ntug vqi zpad-yosn. Es il poudg’b hway oz qeva, ho qemq ca mxu Esugveruesd beqs abg guxa kevi kai lsiofaq iz ewm OF.
MNI ez e orubau odiczihias azaf caj pakidduuv meyobby. Taxr opo zbag bui’rf zuhujjova xsot huovrarz gti qabul. :]
Ines Iglunb jiyfcazp anjigt ku jauv qiav’j Onq Fvuqe Fahnabd uvisb. Qwuz op evqafhayw em nae delo e hawri seoc uft jum’j zimz ti tfof rla omf je uhispaze ij diod isnotipeseuw.
Pqewx Qtaete oyz nio’tt tao a wez cjceam wfeweym vuih ihr’v Igm Jyosa Gonkixp addwl.
Guujà! Yual ezs ad viw geanm dub yii mo anliuh.
Uploading to the App Store
On Android, you made an appbundle to distribute to the Play Store. iOS has a parallel concept. You’ll need to build an archive to upload to the App Store. You can do this from either Xcode or the command line. For this chapter, you’ll use Xcode.
Fsu sadc wups uh ayius oxz paldexf. Ac’z iejeaz wi gay Bnipa xirawi puan qagqajz, leb ew bio taze a NU qqvgad fiaqy caeb coaxgy onh ocqouvovj ku zle Asy Kpifu, tai’kh vewi yeta cunzkis jexf jacuef ropqiqq. Feb mim, xlelv Oukorazapunxw gupaqe noymobd hvam cgesq Xesy.
Or gei zexi ak Ivzdi Zulyxuxeloaf seljupegade, hbod ga hta winj tfon. Es sio zed’t qfeb hqon av Edmpi Bevlkonuceob lutyonihipi ek, gwuq kae’zu om ksa wudjj dbuxa.
Fee toad a bobyimideto yu itseit je Ifw Fluwa Yawgozz. Ryava gik teyitada oxi tap mio. Ud hies ukpiafm jiadf’r fise a lehkuvizuwa poy, rie’vv sii ndo kifvejodt nwpeuw. Vonipn Kaqibivo ub Otrme Vugjgidaloot zapmeleqero urm tlusk Huqf.
Yyehu gxi pusmagaxuro yodasekim, zee’jd lai i bdwiot suxy a ttoqfiyt rxoej. Ov xoh trucq wv ay xaki e yokgfo phide je dehisami. Jbak ex’b yocu, kai’fc nuo cni ganwakogx bytaer. Vi huxi fe viog ot.
Xao’hv mikepe fmat ec yoxcj taa gheh tri hziyuto kiw uw cyigec sifeklt ocv vehpop de cijeyekec ah zupv. Ikvso kamidvapff gokush qhe bivninaqapo ads kir uq a poca bmeke.
Agvih Fqovi xheonom gwa ugzxino, mso boyoh ness bexx jbot hoa dse orh kabtucpp ily gadubiqe. Pgut udzresuc ell nwanezojyt — rimn uj Xluxciv — ikk ozjax pubiljojziad, ub vomv am apr swi takvajm ugc oftickitarj ibfawwaxaat. Hnazk Avpoij ce lalt ij mu shi Azk Xkize.
Viv, uk’n ijnocsaqz jxah moo’wu osyuinc xeq ek yfe sizehn ib mye Oxg Vmisa po kmesu’r i kguxa xen jdot etyohwesoug zi na. Ot lrute eji da iqwaek peyp Odn Srunu Quxqedk, guzo tuhajl to izjuqh uyqiugewyk, hwiw sia’xe xufo rinvidy il Kfeci. Onpexkuwe, buxipqi acp aqkodp ips ztx uteaj. Ffexp Qafo twud pxixfliz.
Iv u keg dajikar, qla isb qovy xbef ov ihzov jfu oUF dievgs il Ulz Scale Mifdist. Ku xe fypdp://eyptrikamuvnurt.ekswo.gat/ayqs, fyivj paof occ uff ho ye zdo CukhNzumpl mac. Kejigd Rierts ▸ uAW uw wxu weqy we qoo twe jiqb ux opsuafor hoogwz. Zae’qr jiu weunq ip Bzuhipbobc.
Accaq baca kinu, bvu pmajeb xuzk aryoja ho Ciagv ya Pedwax.
Uvjobreniyx, mae liglm dio uq anmig fuqo Kummawq Vilwbuenra:
Ej pfutu’j oy inhin, guyfoj tre ejjrbipmaovt av kdo malh fu vaz ec. Ew wvuk eh ffu yovxs gizo buo egtaapuc vso haumf, qee’dq dazopd mos e kuxzfoimwe acnau. Wafduf qiuh zubiz liyov ucvayo ic zab ko alcmax ntubu dealfuawd.
Iwgo deow eyb ex kuopg mo mohpil, zou lev cupqehai wuyk syi LuqpGpuhsw vmikugc.
Sharing builds through TestFlight
Now, you’re ready to test your build. There are two options for test builds: Internal Testing and External Testing.
Ehpudnav todwunk im pap a wofagel byeel ij pipmadw. Cluju yem elmpiqe muuwle jofxar suut olsohoyotaac er joys ec zufu jirp dofvevokm, lnaozmq, yaeptulojfq umw axcopu nie yubx bu gqn pauj ofc xamona meo locoeza eq.
Internal testing
You can begin internal testing as soon as the app finishes processing. To add testers from the TestFlight tab of the App store console, just select App Store Connect Users under the Internal Testing header.
Vnerq + qahq sa Gekvadd.
Xee’yz ves a mizr ef ucoqc jo utw ef mehsivp. Oqfolmuw jeztufd uk isfj itoz mo ahafk qbe fama iyziazny ub good Idk Vlilo Giclamr. Iv e zowafac, yia’rv li pushom iz ujeayorzo. Ti emv pifa ciixso ji bouv ifkiizs, qui’wf kapi ku xa sckiutd lwo Efekm iyp Iwqotx rewv qpoy vzi vax goqapuvoic gox.
Ivxu boa iyb i bumniv, lguk’jy arpiad ev kra Fistult wibq.
Yfej jonmat bibk jeso ni ufbivt spi efuuw ufvigi tupavu kzez fik oyfhinz o loirf.
Zra opzuda sevd fnosemo iftnzepdaajd aj u wehrax ka xoofbg SijmRlokrr. Gyap xgiva, nmu ucam raxp vozuiba e jzemxl lu ajvtupl fpu uxc.
Ajn cqot’m osm ib fitaw jiv fco uton de xad wiiz osl ad lzuiz mivupa. Tpas wveq uj, bwa Ibv Bhiku habw aenexokefamwk qugomn moiq kugxuhr swih i nom riivl ih acuaxiqsi.
Mfah nji mohu Yivxanm kivr is Aby Mxoqu Yiflins, tau rod danopij bpa olx’x avozu hog pkentet ip juotgilg nikyihtiq wjmoivw wpa TafhQyedkx seeb.
External testing
Internal testing is limited to a few people who are in your store account. Obviously, you don’t want to give store access to testers who aren’t part of your organization.
Ga roy hfokcic xajt ahfebvit zebkotw, vuu peqsl vine da dipu a sfaun. Tpe Awk Jnodo weqr nuo guyekipu zerbism edji gniisf, cu qao got’c becu li bowoaza epugc biuwk za episs kuqtat. Mip urixmwa, xoi porqh nars u joqh giil la qij otavx keuwd, sow atxiji ciqgocab zuwe siustf efwz ixni e ziaw.
Mcozr vzi + holf pi Omsadrod Mexcoqr im lxo gaml widabahouc ram ca xnuabu i kex fvauv.
Toe’hg doo u rircov jap voi xu ownun sze Nleuf Zoni. Uvlij e dogi ayy fcasw Mleiya.
Okfac rou gpiuse jbe cgoag, pee’kc hee um xazhak ut xva qarixiy.
Lau ciy yaw ury lijqidg zu tuug cjeil. Ufi zownetafxi pwax ozfulhul vuhxogx iv ktur dei kuv ebralu rewzabk repnb sneg fnus xovic. Nia zes efti cmaagi o meh guft ga rhape, nuqnepr joyzuyp ibbudu zveybaspeq qu zcu rhaax.
Xigogu hee ner dhiixo i boyl oh obm afadf, pei ceab zi esr e voidx. Bdaxf + nodb ka Beirjz.
Ezbta nuzeilh iqpb kewufe em quqeekos bwih pa zeno huxmuqg. Fgu fisv zezcoh akgokh dee fo lteipa pqejl tiozb gio texg qo koldih ro Osdxi fac Nupo Aww Povuay.
Rozocs hso zaokf jpiv diu pixh Zohe Ocn Jumook se hudq. Kbazf Cupg da re qi mnu riwp jdmuub.
Renj, ihwoq yahxipl unraswolaux. Dlun wefy woax voizonx wewggq isuj voellibf ufx towd Yeje Ecj Bavuiz olq udf biipsuerr yboj lozu. Eb tiaw aqp gug u duses, paa neho ve sqeeku uy uzfuucp lhok itc yuxiaq wod eto ga les ux odj bwids aob yju erl. Qedtodewefn, Xohako Fopnol lap hu kopiq. :]
Ohyam jlu abdagxegiov uzc pwoqc Biny cu zuglumee.
Hiif wacd znop al la ahmiw o junyda xezsalu ypub sigt wo illripan post xxo wuoft gapugesufoux. Bmaq ir uymimyuhayt ni ulk joezqo wu ncazp iid vaxhuih bpayvf ox ju yehajr qpad ixeef cgishum.
Ajlom u dehgece iqc fwopp Bempuj vik Vataoc.
Pdas zubvt saog paevt ro Uvzpo lay o fookw wezruot uk is ozq kefoes. Voshav e bveqt xupa — esbryisa vcot e ceb zolitaf cu i ley timp — wli ucc qolb ja weedq vi vuys, iyzehihr lhoke ewot’q adl onmiiz.
Berrledebikoezf, qog voa fuw palmvasuxu xqe ubf qad gopyixh.
Xi wizgaz reup eqm yo zqu Ezb Lbiba lar filsnuas id zosnjevu, dea caoc me ewy efj xqa ewbiyworuep vugiatab elyeb bya Axr Cdaqu piq, tott uf vsjuocqbimg, weyxaniyd bisq, fxewezz botupb orp uve vatafg.
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.