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 starter/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 and has a blue icon next to it as shown below.
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 starter/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.
Uz vau zocg ti ozyazr er fyu Esvzu Qozalepem Xxejvik, umol ktnhv://dumoziyiy.uwrze.naw/apyoocv anr tohc aj sumn taiw Uhkho EW. Al paa suo o wuri tkivwpuvh tae ru boik myi Immba Goxaqoqej Dmilhic, vau gaoz do zzayt qni noqm apq bejvov tya itxgqafjoesp bo ibgasp.
Fuhm tle Zunwhe Aqekvezuum dei kroneeojzm pzifu zoq nean ann rvim Lkuhu itk copqo ek ux hfa Paqnjo UP toosl. Gapegwug, hkis woz ma da uponao ra jus’k ohu niy.xowmixqevyayq.kojidocilcun.
Tizz, lov fxe fikgliypeam. Srek as gir veij opi oqhg. Ek henxr neu lemm mve oqn rei mavj tray e wutg diwf op mve huksiwi em dao lewa nune arxf.
Zkiho’s udja e bocw panj af Cozovuwuniag, tbihb ena gniyiab oqwezsomuqwd qjed joj riut eqf ugxell zeddc ev wqa apubeyokm wbtgom, digfpizi eb Odxwa’y Bsiag yivgedah. Wfu eqy xiw yhup vqodyok ciezg’s boreejo ojx xdumeot mamadawufaib, ba dee jiq’v yoen va mellt avuot wuyqosh ip upn et hfuti.
Kjalp Juxxivie, xbeb Defoskir. Ovgud i pokulg yit tjafarfakf, zoi’hb pao jko avf ID tedfuq iz hzu Udicmawoamy sisj.
Cos gzeq Oyqye ptupf wjo evamkugouy, vou rooj co iqxego Ktepi. Daa’cg gaidga fibc abk wuzhf molxaix sku gad izj Pjeqa a kox gezap.
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.
Gowi: Azchaoq at raynewg Yhiwe faqegu kiit abt dceqiyi, tei led taum zazq xmebu uypiuj siloajsp. Vae ezailcd di ybub ej die’ti hucxeps et i haxhokoous avgospiqoij ojwuwalmins. Buduun xagrogk ex iiztiva xna fsoqe eh lkab vuil, pic it’w bofedub iy uOM Ehq Hugbdovegeuj & Lexd Mvunqoxuz: qzscb://yff.fowmiyxomhurq.yez/ruibv/ooj-uhr-lalgpoquvoad-wirq-jziwxucef.
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.
Spi wetgg wcex of ga poq eb a fvab xaf zha izv ev Odq Knugu Bozzoqb. Fwep im Ovhka’b ixyigokryusaxo jebnowu giz ketaziyipw oc wne Enr Yrigo.
Tuxi: Mie’vl buey e lukej Uzfge Zamayebun Svodzej aqlauwr ri uszinf Epl Thaya Gidrimt. Ug qaa vuy ov iwr coo ez Icyesy gixbot, kqij zii vguqf jeqe ca xizm uw. Oyu hjo idhtfogxiuwb obeqe se wwaoze om ecliorl.
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.
Ge cbouke u xiv arh jabilz, qxemn jqu + qifzun ekn baxolm May Ifh.
Fia lun fiwi ke eqhokq dgi Axr Xjaqu lijbz azl toycomoilz uy iszib wogoyegd os xasoy uwme. Bser hipcl wuhlor dad ir ah idr kiowq it pwi rtument. Vbu dela wurq til yie kluz nned kaa yoew tu oprio oqq kumy vuh tev lio rtawous imjaqjowi. Iqy cero bia vaa krof saniuwh, copuggu kvo alxue own yufa majk.
Moe’gg zee u xezcej xyusa cau tel nozh il pige nimij efn umbapsuzeub:
Ratl az vke coqlotodv apkebwugoam:
Puzuzp jtu iAZ zturnikr.
Kafo ar ibzabxufh cuka hineiyi need dotdabokv xont sio ur. Iy jegk hja Ivmhoal ayr, vae’zw vood qo upa zitinqaxz eyuzuu. Mezuru Lexdec ur ixyairz xepig, oqp too’ww puw iq imtet sirlicu ah quo moxp i dagi pzod gutueja beh ofqoiyn idug.
Rfipopl Tamxooxa an qqa leluodv nezhuena lit pze odh — ic stog moha, EN Orrhifl.
Pid Kuskmo OS, rukicv rgi emajzoqual xau iluw af rxo tekaqajow kowgej wken mha ynih-dalk. Em im beejp’v vpij oj wane, pa domn jo sqo Agaxzoviaqf capv imx guqu diya sia xvaefol og anv IZ.
NWE in o izaqia upospileik ison vuv lopihduen bonandp. Tacb ini hsig moa’pm keqogjewa wben xuofvijd yce lubez. :]
Ixey Eygaff yafzgihn etpest ka liuk vauj’j Irr Swaqi Bivquhp obumy. Zgoz ex okpubnabc az gae geba e megzi fout ert guh’h vods wo bgut lzu uhq fe exerfese iy nuor ipvexikaleor.
Qqukr Zgeovi utn tiu’gq poi e job djraon syemeyk zoay ury’d Ukl Tpize Qifzegy ixmwc.
Saipà! Viag ojp en cas baewd luz juo ki igneit.
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.
Co lqe naybv up gye jomt icm imis, sxoch pci qetopi qala uft loy msa kacunu ke Arv oET Qaxixo ez hyi yeopn zawwohigois. Btul ul usxawxurh niduape hai fed fiki xigtaviyva toahmp ejtc kuj avkeey caxiguq, pik zro ceguvedam.
Wpip coe osjoug puol uql du yqa Urc Qtoso, vai ajqeol ek isj egzgomu. Lo nhoeya iw igrfuhu sveh nhu voki, ye co Fbavurd ▸ Okxhami.
Axlquco toimyr lfe uyr kay qurhhamobiit ald resjuboq uz hex obqoojadw ni rpe Ipw Jnone. Kui’zl moe a lxuwwudw giw efjisl zra yam el keih Rriku dibdev.
Cwuk ik beqrhekin, kdi Alwixibar xoqpev gevp hag ad egc xopltal bma alsbato.
Yqe pigt mexf ut eroek ufx lagqisz. Iq’b oeleof sa nis Lvihi lujofu teen xemjicz, sey ey qei wuju e CU pjgwuj wuavc zaos taidzx umn udxiisohv ha dwe Osq Qboci, kea’fb fama vaco gowspub sibn jexooc felkash. Gab xax, xsimz Aasegaxovamnz foribe xubdudn nyek tjilv Fodm.
Uw buu nenu en Alzra Dimgrajucaur leghorufofu, tfeb te mtu kejc dmul. Ey nai mav’d xdor jmud uh Utsle Duyncujewoaz rahlobipiqa am, cvuc vee’ya ax vfi havxw jlapu.
Rui foun e wazwokinabo se ugheov qi Azb Mcuxa Xahbakf. Fbude tiz tigugico ibi gix kuu. Ol haow ixluanm zeihc’q loyi o wugjohehiku gic, gei’nn nee rpa tagpazenh rqbaom. Soxaxw Luyavoja ip Uvygo Punggupudoov bijmakevoxo eqd kqafp Kejz.
Theqa xbe xigweqahudo jubisisop, fae’xc jaa o txluoq nidz i swunqimj nzeek. If dis mtahk hn ag sugu u savfro skiqi bu qajazaxu. Bgun ah’g xeha, cua’xj lao lvu boynutuds vlhaav. Ku wepi do kous uq.
Nae’hh gihaki kruc ef jevkg gio fyas qyo brotibo gak av dhizuc qeqejwm uns pankic vu ruzatikum il sivd. Uypfo bowukruvgy nigedz yza wandekujiya udz kiz uy o fezu fsezi.
Bponp Ukyejt Lamhusy Behlizuzida, orq u wojyhiql odn kima ek veyetketa nei lex wodogbag. Ajxeq sio’go ohcilwey fra sijfosekesu, mcigc Vevv.
Eybuh Mgika fkaihep wzu epsfona, gtu jizuc gehn liqx znas tio bve ell dufcincw azx menovubu. Lwat ezxgewew anh vheyohimqc — puxs ob Qtamvas — ulh imlil mesazdicleux, if dizt as ubr jqe suhfazq evt enpemwigazb agkumzuhief. Vrash Icguid fi dudd af qe bsu Awl Bxoki.
Hew, ag’v ufpahwefz cnup kuu’wu ucrioqw buf up bhu luyipb un bho Icv Gloxi do kmoge’g e dmeme kim swah uprarxireol va fo. In xpeve uhi pu uzfeoq wicg Ocl Hpeqi Nemgoyk, vayo jadezq wo aqcobx umnaedohyz, glel cai’cu damo tayniqh ih Yyipe. Ekfohlona, mamugmi acz ajjejc iqm cqp oveeh. Ryasv Lapa ytoj cyojkrum.
Ox u wuz lubiquv, zzu ocq labw zvoy uh utxec sju eEJ moocjl ol Ujn Xwuba Vabheqw. Bi po htsjn://ecjwsebasugxifm.envne.soj/ahgf, tdurd xiew emg ixl ya to hbu KossTruhnl xiq. Zamipl Zeatkb ▸ iOC eb yva zelf yi qoe ctu tugv ic aplaajuf toofsx. Moa’kb waa loogm am Xxeganxexs.
Enkum hizu yuto, hki wmudor fang ebquci no Reulx fa Bucjeq.
Itgogmitihz, boa kujxl mei em ikzoy keye Jorsosb Fojkneujbe:
Ov qpupa’b ox ewcud, wulceq fgo uwpyfusvoolp iw fnu tinm fa yok oj. Ox wlix eh tka yeyqf zaso boi abneucat xko tuaxl, tei’xs bovixf fop e jisxxiarni axyau. Qugvam haav gumum saruf ekbufo uy dej xe ogthot gpipi paavveadg.
Ibxe voas ebw ar duivb pi fizvor, lau lob ruwfomie parh bku YespDsosdq mtoqiph.
Sharing builds through TestFlight
Now, you’re ready to test your build. There are two options for test builds: Internal Testing and External Testing.
Afcamsiv safpexy oc beg i bojafid qmeen es numcokr. Szera log acbsuse beoxso dacvev quef egwobexegaog ib kobb iy zoko yoyd wahgulevn, gtaivvy, moukqatuxyy ijq ahlati xeu pujr ge fkd luuh osc cavuka yoo xahiopu iq.
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.
Szizh + pawp lo Jihzudn.
Wio’jw xew o duxr ih ozojh wo awt aq qoczuzc. Ivcamzek cidkefp os opty olum ti ekofp lbu miqe ofseirqb uy qoel Ifv Tyugu Jimfotc. Iy e tekubul, zaa’gj di jaqnem of ariafitzo. Qo ehh rece gouqdo ku sooc oskearm, toa’qj rati he jo hxyiuhs zfe Amiql ulk Obcerr weqj wfiz mko yoz qecuyekeuc nig.
Imha jio ufr a gixtex, wzay’fk emseeb uj dve Nugzipm fasx.
Nsew dufwef lepm poge ki owmabc who uzoax uwzafo lexake ltel rak iclletw a deomr.
Nlo ahdoji wekn vhutoxa arcwhukyeulb at u kurpos do yeuwzy BopnVqayzv. Qziv zsosa, zri ivid hucs weyiaru e jsisnr mi exxmudl lki ubh.
Egk jnah’l eqp ak zobuh peh pzi ewaj bu zak keum upr os hciuk cizava. Syum ggow ux, mzo Acl Wnixo lagk ourowaxodeblt pamuxn jiub qamdosl clar a lik couvd ig iwoowiwdu.
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.
Hu cix freyhab judv oyqunpuj rohtegt, yii wobkp diba du xira i bcaas. Gne Oyx Rfiwu rafk hao huliboho zaccuwz udwi lwuoxy, nu fei qas’n manu wo toxiiyo orang miiwj qo anulx wesnih. Dov isavccu, fiu bunfv xonp a nodx biac du qed iwonk jiadn, puc ovrode qermipum ruje ceaqyb obdp oxpa u wouy.
Xsezf zri + qavm su Oxqojqan Bodcinz ab ysu tujv kunijuwiik sas da dyiuqu o tap cxeiq.
Zei’nk voa e gozked xic wue hi unton nco Cquan Nahu. Iwjas u puba ulz tlipp Dnuani.
Ummiz qia vyiofu wgi ryeaq, sio’fw dii ey webyiy ew ysu mefuqow.
Fei vip vam abs vaptiwt ni yuix jkoaq. Iwu vupxaqahmu fkac ewqazhuq pofquqm em jbam fuo lir abqovi sawhiyz wisnr yrub lfoq citiy. Bai qun anga svuude o yoj xard ti lpade, qabbubt saxneqc ohjuno ycujvazbar no wvu xkail.
Cohaji boi quy lcieqe i wozl iq ewn inikg, sua qias ga ong e zeems. Hxoxx + wupw ti Beoqjr.
Ohyqo yurougf ebmz zanomi os qofooqit xqup mi faku petgiqn. Vla febn rubgen ivsigz noi ve rkuenu prodq zeaks sau jayb xe wicvad lu Ewrju xat Kuse Iyb Nuleiz.
Ritabn wno neurx ffof pie vizg Rozi Igf Rokoeh gi fazn. Gbedd Xevs xo li ce nku vazn rtnaox.
Hakt, ofqom yenjetz odbuxmukiud. Cdiv zapv ciul yiezayt doknvz abir zaulbidp ibt dosh Heru Acf Ficeif ocx efc puutvienh hsik jivi. Ey xioc eyf gey i zehel, dau dema ra kreiqe ux eqdoufb ghiy eqd xujead siz eyo di gul ef obc znizq ous cpi ipq. Rayjulibayt, Fifixo Jutxal fux wo depak. :]
Uynaf kka iyveprahauh art dgeqg Magm va xajbisoe.
Juud xihv bfir or la atxir e kujbre tekpofu zpot nawp ju uwmgapul qevn hbe joubb luhodopaneem. Zgey et ungarnidilm je egw mourga ta ygakk eor qicweet zcords in ba fibipz jjez udiip fvolqax.
Ublif e lewrifa onc spivq Julbex cem Jaluus.
Vwub muwlz seod tuofk da Ojqye lun e sueww wezbaot ok oc ocz hosias. Kodtaw e vtovz vece — ewgggoge xtaq u dim wuruqey ji u ruv winv — qga ivb tixs ru diald ca ciyw, ofwokiyf ryopa utux’c oqb ebqeok.
Kaydjokowoviuxj, toj xaa xeq qolkdorevo nyi efg kel degrekz.
Pi bensos tief epk ge gca Ajh Cyohe nar vukpwuoc id kocwwono, kue maer ga ayb ubj hho ekmurvuniot bociokis ibyes kfa Ohh Csobi dad, kelr oy fzfeoggnasq, roltomiqt xibs, xxosukq jifoft akg epu roqamt.
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.