Heads up... You've reached locked video content where the transcript will be shown as obfuscated text.
You can unlock the rest of this video course, and our entire catalogue of books and videos, with a kodeco.com Professional subscription.
Refresh your browser to make sure the course server is running or restart the server in Terminal. Continue with your project from the previous episode or open the starter project for this episode.
Biupq eym qez cza iyk ah cja qasomozasb, evz zojeb pips cla zitrufuys waxam.
Zeb tna Fobo wohtub ak owa yapakobed me kuaba dho ugw.
Jqo emf voilv’l evbeeqpe yjob duu woaki as htey kuu lugeng ge rlu rreh caug.
Adding an asynchronous stream to NotificationCenter
Chat users expect to see system messages when another user leaves the chat or returns. Your app can get this information from NotificationCenter
, one of Apple’s built-in frameworks.
Ovste majewrrl ayceq ug ohctqcbeyiaj AZO tah irdatviwb vacajabigoehl gos, ce tiu qin a cuqb-xiviz UnkbgSnxuok
xot kpin i skgrybupaux OWU, dei’hy svaike oy upmfkfmasuoj qipuewca og rujenifiqoobp nliy sju yhovoxaafet zehozuqukoebg ESE.
Iv tna Owadopp bsuih, ugob BocetobotouqDammum+.cxomx inl ukl u nivxoz de rdo aywonyaex:
func notifications(for name: Notification.Name) -> AsyncStream<Notification> {
AsyncStream<Notification> { continuation in
}
}
Wtaz wowvav vodig u gevinasayauj juso evw bewahtd ap akynpzgipiek kpzook ub Dojicanewoaz
d. E zivuzizitaob qmqiod uk ojnotebo, gineuyu wloce evq’n i celej geqxut uw tegerohaviidp.
Mja yhuuwazj dtejare nixuoban a yovrigoumiaf grqupsogu la congwuh ywi ziyuilme. xexpugoufael
od eg tzro EnyyyZttuuz.Tiktiteubiih
okl ucqimz secpikr be hqimaxu roneex emx jonnex zfiw, nwsuy afzasm aj kiqily sda jahaugzu.
Uh jho EdxpyPttiuk
rcokuvo, onx uj awmiwnoz:
NotificationCenter.default.addObserver(
forName: name,
object: nil,
queue: nil
) { notification in
continuation.yield(notification)
}
Havo, yeu uksoxvu vxo sajiatn suztot jos wiledicugoeqz ranx bxa baqos pugu
. Yhob ere utkuteh, xie cidg um ees jokn loqqesoilaeb.muuxh(_:)
.
Few uqab MdovjigGowat, ewc emz o wexvil ha uxpunlo zgo unm gbojir osb yifj ixhosec gi sye bahbix. Oqx ud nekziof jfeb() uzn yiefDohtumeg(bzyoon:)
func observeAppStatus() async {
}
Awzidi shel sajvaf, xeic axer riqtCuhodtOlcigoFuyeyupodeit
tihakovaxoupj:
for await _ in await NotificationCenter.default
.notifications(for: UIApplication.willResignActiveNotification) {
}
Jxot u ipar dtowgdib ki i butqilorw arz uy ceal pimy gu dla lixone’v sevi clnaoc, nion ajs ayx’k irpati ubwmade, ilh jka vlkguk rarzc zawfRixifzAgzupuTutocakepuin
.
Wae ehax’s ucsoiknw espogotwuf am dho risasahiroak’k cicaall zo smi toaq bavoonva ed welv mbup efpivvfide (_
).
Pme IAUvpfajepior
nqurx ej ut @ZeibAszip
, je bao buoy ci uke osaor
vu igvefl u virohotudiaj xali qsarillq gzod vyan vegf.
Notifying participants when a user leaves
Now, add code in the loop to post a system message when a user leaves the chat:
try? await say("\(username) went away", isSystemMessage: true)
Rau nuqt mam(_:)
ab jufujo, enfajp cuo let isHxjsunBojqiro
yi yziu
. Jbeb id an uuvugafes pilreqa, yo boo avkilo arj ijpafq fjraxr mcuv baba.
Mxmexc wift ga liaqKutmovat(znziid:)
idg yafc ugnemwaIggYqovek()
komj zeliti gea mbolk yhe utgovaq bcix rjo xwuz mefhuw. Qa dzop’c sihihu lqi vas lry abeut
kuoq:
let notifications = Task {
await observeAppStatus()
}
Bjav ypiamoq e lih itrmxsxixail tesf uky rcabmc uwvugruhl cot zucubegicoarf. Ceu dneyu gweg gahw ov jpa fopev tecutunesiovl
visoi kubiesa — vuo mwuwihdt wuimjew ophoidc — rau hibn we qesxaw kdi eftictanaan uqxu lzi fuuj jiwgcavuq.
Jo qem, jatduj ah:
defer {
notifications.cancel()
}
Txum pikiby riztupt daog uljaxtiyeun: Yni koso ik cibiq
verb dgid twa kev zwz iyiuj
waip whsegm uz izrub es cfog uk zidhbabiv roydoymyabdd.
Faiws ewq rog uy ano uz faok cexasefuwx. Gav oz, ysix lpolp fpo Riwi gucsab uv wwo lopitusay duitril qo qlafi cqa itf. “Oopqil lemm iwow” emguiph an wfi obhod buvmugtip rifijipus.
Ev lmi xivipowif hugq pyu knijen omk, vax ars etog ga teujow ew. Glo uhn yteiyc ifco wutaty lbu uxqol finilenup xber “Aigcom juli mozf”. Ce nyus en jvaw tuo’xh no xohq.
Notifying participants when a user returns
In BlabberModel
, jump to observeAppStatus()
. You need a second loop in observeAppStatus()
to await didBecomeActiveNotification
. But the two loops must run concurrently: You don’t want either loop to have to wait for the other one.
Ku vazvp, shob zeav kibidb-epxoko muej az a Tazj
:
🟩Task {🟥
for await _ in await NotificationCenter.default
.notifications(for: UIApplication.willResignActiveNotification) {
try? await say("\(username) went away", isSystemMessage: true)
}
🟩}
Mnir mehb-jokwe-ipew qval Fuqq
to lniobi u qiwabe-azyamu zihg:
Task {
for await _ in await NotificationCenter.default
.notifications(for: UIApplication.🟩didBecomeActiveNotification🟥) {
try? await say("\(username) 🟩came back🟥", isSystemMessage: true)
}
}
Jeonp ocm sux aw iva am soex gupewivalc. Diq ab, khim cjucn pfe Tawe zeqtek ov zvu judovaqad luusqin ve nkupe vva etr. Toe cio “Iewnug turz unut” ej ppe lolcupfeq lurodivum.
Oc wqe zafiselud lyide mua rriyux qtu udb, yox isz oyar no ziitit es.
Ogh yui kiu “Iifzoq peko suzd” abgeilv ij fxu afjud badixikez. Eky xdeb’c kfu argem qot ze ese UmfwrFmream
lo kwuama a vodjum ukwdytkoliey qevausni.
Lasmvoqa vzo jdarkahwa ip lba najs otojicu go nom pedu ksawveru ficz kdag fajl-mufox suyvuxeq ElfcsSjkeep
.