Blogu

Kuweka Mazungumzo Hai Simu Inapolala

Wakala wa Mythex anaweza kufanya kazi kwa dakika kadhaa kwenye ombi moja, na huenda unamtazama kutoka kwenye simu — ambayo hujifunga, hubadilisha programu na kubadilisha mtandao wakati inafanya kazi. Hitilafu mbili zilisababisha hilo kwenda vibaya. Katika moja, chat ilichukulia kila ishara ya "ukurasa umeonekana tena" kama uthibitisho kwamba muunganisho wake umekufa, na ikazunguka hadi ikakaa kwenye "Inaunganisha…". Katika nyingine, simu iliyolala wakati wa jibu la kwanza la chat mpya ilirudi na vipande vichache tu vya jibu hilo, mpaka ukaonyesha upya ukurasa kwa mkono. Hitilafu zote mbili zimerekebishwa.

Jinsi chat inavyofuata zamu inayoendelea

Wakala anapofanya kazi, chat inashikilia mtiririko wazi kutoka kwenye seva zetu: kila hatua — wazo, wito wa zana, kipande cha jibu — inafika kama tukio. Mtiririko ukikatika, chat inaunganisha upya na seva inarudisha matukio ya hivi karibuni kutoka kwenye bafa inayoshikilia sekunde 120 za mwisho. Zamu ikiisha, chat pia inaomba seva historia iliyohifadhiwa na kulinganisha kile ilichoonyesha na kile kilichohifadhiwa. Hatua hiyo ya mwisho inanasa chochote ambacho mtiririko ulikikosa.

Ili kutofautisha muunganisho hai na uliokufa wakati hakuna kinachotokea, seva inatuma "ping" ndogo kila sekunde 15.

Hitilafu ya 1: kuamka kulimaliza mtiririko mzima

Vivinjari vinamwambia ukurasa unapoonekana tena: baada ya kubadilisha tabo, baada ya skrini kufunguliwa. Tulitumia hilo kama kidokezo cha kukagua muunganisho — na kwa vitendo, kusitisha mtiririko na kuunganisha upya, tukidhani umekufa wakati umefichwa.

Kwenye simu na vivinjari vilivyopachikwa, matukio hayo hutokea mara nyingi zaidi kuliko mtiririko unavyokufa — kila mabadiliko ya tabo, kila kufungua skrini, na kwenye baadhi ya vivinjari vilivyopachikwa kila sekunde chache. Kila moja lilisitisha mtiririko mzima ulio hai. Chat iliunganisha upya, ikarudisha matukio, ikasitishwa tena, na mwishowe ikakaa kwenye "Inaunganisha…". Kisha ikasema zamu imekwisha wakati wakala bado anafanya kazi.

Suluhisho: hukumu mtiririko kwa kuangalia kama unazungumza

Chat sasa inarekodi wakati kila mtiririko wa mradi ulipopokea kitu cha mwisho kabisa — matukio na ping za sekunde 15 vyote. Ishara ya "imeonekana tena" inasitisha mtiririko tu ikiwa umenyamaza kwa sekunde 25: zaidi ya muda wa ping pamoja na msukosuko wa mtandao wa polepole, kwa hiyo mtiririko hai hauwahi kuwa kwenye kundi hilo. Majaribio yanathibitisha kwamba ping inahesabika kama ishara ya uhai, na kwamba mtiririko ambao umepinga hivi punde hauchukuliwi kuwa umekufa.

Kanuni tuliyoipata kutoka hapa: kuonekana kwa ukurasa kunasema kitu kuhusu ukurasa, si kuhusu muunganisho wa mtandao. Uliza muunganisho wenyewe.

Hitilafu ya 2: nusu ya jibu baada ya simu kuamka

Hii tuliweza kuirudia kila mara kwenye iOS simulator:

  1. Anza chat mpya na tuma ombi linalochukua muda.
  2. Acha simu ilale wakati wa build.
  3. Rudi baada ya zamu kuisha na bafa ya kurudia ya dakika mbili kuisha muda wake.

Chat ilionyesha vitalu vichache vya kwanza vya jibu, vikiwa vimewekwa alama kama vimekamilika — na vikabaki hivyo mpaka uonyeshe upya ukurasa.

Kwa nini

Chat mpya haina thread — yaani mazungumzo yaliyohifadhiwa — mpaka ujumbe wa kwanza uunde moja. Hilo hutokea ndani ya kazi ya kutuma, baada ya kutuma kuwa tayari imeshachukua hatua ya kulinganisha, ambayo bado ilifikiri hakuna thread. Kwa hiyo mwishoni mwa zamu ya kwanza kwenye chat mpya, kulinganisha kuliona hakuna thread na kurudi kimya bila kuomba chochote.

Kwa kawaida hakuna aliyegundua, kwa sababu mtiririko ulikuwa umeshaleta zamu nzima hata hivyo. Lakini simu iliyolala wakati wa zamu na kurudi baada ya bafa ya kurudia ya sekunde 120 kuisha haikuweza kupata matukio yaliyokosekana kutoka kwenye mtiririko — na kulinganisha ambako kungejaza pengo hakukuwahi kukimbia.

Suluhisho

  • Kutuma kunamwambia kulinganisha thread zamu inayomilikiwa nayo, kwa hiyo zamu ya kwanza ya chat mpya inalinganishwa kama nyingine yoyote. Ukiwa umefungua chat nyingine kufikia wakati jibu linarudi, matokeo yanatupwa badala ya kuonyeshwa mahali pasipo sahihi.
  • Kulinganisha kulioshindwa kunajaribiwa tena. Simu inayoamka kwenye muunganisho mbaya inaweza kukuta zamu imekwisha kisha ikashindwa kuipata. Hilo sasa linakumbukwa, na chat inauliza tena ukurasa ukionyeshwa tena au mtandao ukirudi.
  • "Ilifanya kazi kwa" ni ya kweli. Kila jibu linaonyesha muda ambao wakala alifanya kazi. Kama kichupo hakikuona ujumbe wa mwisho wa zamu kutoka kwa seva, kilikuwa kikijaza thamani hiyo kutoka saa yake yenyewe — ambayo ilihesabu kuanzia Tuma hadi simu ilipoamka, ikijumuisha muda ambao haukuwa mbele ya skrini. Takwimu hiyo sasa imewekwa alama kama makadirio, na inabadilishwa na muda uliohifadhiwa mara historia inapofika.

Tuliyojifunza

  • Jaribu kwenye kifaa ambacho watu wanakitumia, kwa jinsi wanavyokitumia. Hitilafu zote mbili ziliishi kwenye pengo kati ya "mtiririko unaofanya kazi" na "simu mfukoni".
  • Njia ya kurudi nyuma isiyowahi kukimbia si njia ya kurudi nyuma. Hatua ya kulinganisha ilikuwepo kukamata hali hii hasa, na ilikuwa ikiruka kimya.
  • Rudia pia urejeshaji. Wakati simu inapoamka mara nyingi ndipo muunganisho wake uko katika hali mbaya zaidi.
  • Usionyeshe makadirio kama ukweli. Muda kutoka saa isiyo sahihi ni mbaya kuliko kutokuwa nao kabisa; uweke alama au ubadilishe.

Kazi hiyohiyo pia ilisafisha mambo kadhaa utakayoyaona zamu inapoendeshwa: hatua za shell zinaitwa kwa amri inayofanya kazi halisi badala ya cd, picha za skrini kwenye chat zinahifadhi sehemu ya juu-kushoto ya ukurasa na kutoshea safu, na mradi mpya unapata jina lake lililozalishwa bila kuonyesha upya ukurasa.

Ukijenga programu yako mwenyewe kwa ajili ya simu, miongozo yetu kuhusu kujenga programu ya wavuti rafiki kwa simu na programu asili dhidi ya programu za wavuti zinazoendelea inafunika misingi. Zaidi kuhusu chat yenyewe iko kwenye nyaraka za chat.

Mythex · Pricing · Jenga chochote kwa AI · Violezo vya tovuti na programu · Mythex ikilinganishwa · Kamusi ya istilahi za kujenga programu kwa AI · Zana za bure za kujenga programu kwa AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)