Olen kindel, et olete triipudest kuulnud või kasutanud nendega rakendust. Kuid olete kunagi mõelnud, miks on triibud nii populaarsed ja võimsad? Noh, on ilmne, et rakendused tahavad teie tähelepanu võimalikult palju, kuid peale selle, kas teadsite, et kui populaarne õpperakendus Duolingo tutvustas iOS-i vidinaid triipude kuvamiseks, kasvas kasutajate pühendumus 60%. Kuuskümmend protsenti on tohutu muutus käitumises ja näitab, kuidas "triibu" mustreid saab kasutada seotuse suurendamiseks ja kasutuse suurendamiseks. Põhimõtteliselt on jada järjestikuste päevade arv, mille jooksul kasutaja konkreetse tegevuse lõpetab. Mõned inimesed määratlevad seda ka kui "mängulist" harjumust või mõõdikut, mille eesmärk on julgustada järjepidevat kasutamist. Kuid triibud ulatuvad kaugemale kui mõõdik või rekord rakenduses; see on rohkem psühholoogiline kui see. Inimese instinkte on õigete teguritega lihtne mõjutada. Vaadake neid kolme tegurit: progress, uhkus ja hirm ilma jääda (tavaliselt nimetatakse seda FOMO-ks). Mis on neil kõigil ühist? Pingutus. Mida rohkem pingutad millegi nimel, seda rohkem kujundab see sinu identiteeti ja nii ristuvadki triibud käitumispsühholoogia maailma. Nüüd kaasneb suure jõuga suur vastutus ja seetõttu on triibudel ka varjukülg. Selles artiklis käsitleme psühholoogia, kasutajakogemuse ja kujunduspõhimõtteid, mis tagavad tõhusa jaotamissüsteemi loomise. Vaatleme (1) miks meie aju reageerib peaaegu instinktiivselt triibude aktiivsusele, (2) kuidas kujundada triipe viisil, mis kasutajaid tõeliselt aitaks, ja (3) triibumustri loomisega seotud tehnilist tööd. Vöötide taga olev psühholoogia Tõhusa triibusüsteemi kavandamiseks ja ehitamiseks peame mõistma, kuidas see ühtib meie aju juhtmestikuga. Näiteks, mis teeb selle nii tõhusaks, et tunneme nii suurt pühendumust oma triipe kaitsta? Seal on kolm huvitavat, hästi dokumenteeritud psühholoogia põhimõtet, mis toetavad seda, mis muudab triibud nii võimsaks ja sõltuvust tekitavaks. Kaotuse vastumeelsus See on ilmselt tugevaim jõud triibude taga. Ma ütlen seda seetõttu, et enamasti ei saa te seda elus vältida. Mõelge sellele järgmiselt: kui sõber annab teile 100 dollarit, oleksite õnnelik. Aga kui kaotaksite oma rahakotist 100 dollarit, oleks see palju rohkem valus. Nende olukordade emotsionaalne kaal ei ole võrdne. Kaotus teeb rohkem haiget kui võit tundub hea. Võtame asja edasi ja ütleme, et annan teile 100 dollarit ja palun teil mängida hasartmängu. 50% tõenäosusega võidate veel 100 dollarit ja 50% tõenäosusega kaotate algse 100 dollari. Kas sa võtaksid selle? ma ei teeks. Enamik inimesi ei teeks. See on kaotuse vastumeelsus. Kui järele mõelda, siis see on loogiline, arusaadav, see on inimlik. Kaotuse vastumeelsuse kontseptsioon seisneb selles, et tunneme millegi kaotamise valu kaks korda rohkem kui naudingut millegi samaväärse saamisest. Psühholoogilises mõttes kestab kaotus rohkem kui kasu. Tõenäoliselt näete, kuidas see on seotud triipudega. Märkimisväärse triibu loomine nõuab pingutust; triibu kasvades hakkab selle taga peituv motivatsioon hääbuma; või täpsemalt, hakkab teisejärguliseks muutuma. Siin on näide. Oletagem, et teie sõbral on kolmepäevane jada, mis sulgeb oma Apple Watchis "Move Rings". Neil pole peaaegu midagi kaotada peale soovi saavutada oma eesmärk ja olla järjekindel. Samal ajal on teil käimas muljetavaldav 219-päevane jada. Tõenäoliselt on teid lõksus hirm selle kaotamise ees. Tõenäoliselt ei mõtle te praegu saavutustele; see on rohkem teie investeeritud jõupingutuste kaitsmine ja see on kaotuse vältimine. Duolingo selgitab, kuidas kaotuse vastumeelsus aitab kaasa sellele, et kasutaja ei soovi isegi kõige laisematel päevadel pikka jada katkestada. Teatud mõttes võib kaotuse vastumeelsus muutuda harjumuseks. Foggi käitumismudel (B = MAP) Nüüd, kui me mõistame hirmu kaotada pikematesse seeriatesse investeeritud jõupingutused, on veel üks küsimus: mis sunnib meid päevast päeva seda asja tegema, isegi enne, kui seeria suureks läheb? Seda Foggi käitumismudelis käsitletakse. See on suhteliselt lihtne. Käitumine (B) ilmneb ainult siis, kui kolm tegurit – motivatsioon (M), võime (A) ja soovitus (P) – ühtivad samal hetkel. Seega võrrand B=MAP. Kui mõni neist teguritest, kasvõi üks, sel hetkel puudub, siis seda käitumist ei juhtu. Seega, et triibusüsteem oleks tõhus ja korduv, peavad olemas olema kõik kolm tegurit: Motivatsioon See on habras ja mitte midagi, mis on pidevalt olemas. On päevi, mil sa oledpumbatakse hispaania keelt õppima ja päevadel ei tunne te isegi tahtejõudu keele õppimiseks. Motivatsioon harjumuse kujundamiseks iseenesest on ebausaldusväärne ja kaotab lahing esimesest päevast peale. Võime Motivatsioonipiirangute kompenseerimiseks on võime kriitilise tähtsusega. Selles kontekstis tähendab võime tegutsemise lihtsust, st pingutus on nii lihtne, et on ebareaalne väita, et see pole võimalik. Enamik rakendusi kasutab seda tahtlikult. Apple Fitness vajab vaid ühe minuti tunnis seismist, et teenida linnuke oma seista eesmärgi poole. Duolingo vajab ainult ühte lõpetatud õppetundi. Need ülesanded ei nõua nii palju pingutusi. Barjäär on nii madal, et isegi oma halvimatel päevadel saate sellega hakkama. Kuid käimasoleva seeria kombineeritud jõupingutused on koht, kus lööb sisse idee sellest jada kaotamisest. PromptSee on see, mis võrrandi lõpetab. Inimesed on loomult unustavad, nii et jah, võime viib meid 90% sinna. Kuid vihje tuletab meile meelde, et tegutseksime. Triibud on disainilt püsivad, seega tuleb kasutajatele pidevalt tegutsemist meelde tuletada. Et näha, kui võimas võib viipa olla, tegi Duolingo A/B-testi, et näha, kas väike punane märk rakenduse ikoonil suurendas järjepidevat kasutamist. See suurendas igapäevaste aktiivsete kasutajate arvu 6%. Lihtsalt punane märk. Mudeli piirangud Seda kõike arvestades on Foggi mudelil piirang, mille kohaselt kriitikud ja kaasaegsed uuringud on märganud, et disain, mis tugineb liiga palju viipadele, nagu agressiivsed teated, võib põhjustada vaimset väsimust. Pidevad teavitused ja ületunnitöö võivad põhjustada kasutajate segadust. Niisiis, olge sellega ettevaatlik. Zeigarniku efekt Mis tunne teil on, kui jätate projekti pooleli? See ärritab paljusid inimesi, sest lõpetamata ülesanded võtavad rohkem vaimset ruumi kui asjad, mida me lõpetame. Kui midagi on tehtud ja läinud, kipume selle unustama. Kui midagi jääb tegemata, kipub see meie mõtteid painama. Just seetõttu kasutavad digitaalsed tooted kunstlikke edenemisnäitajaid, nagu Upworki profiili täitmise riba, et anda kasutajale teada, et tema profiil on ainult "60% valmis". See sunnib kasutajat alustatu lõpetama.
Vaatame teist näidet. Teil on ülesannete loendi rakenduses viis ülesannet ja päeva lõpus kontrollite neist ainult nelja täitmist. Paljud meist tunnevad end selle ühe lõpetamata ülesande tõttu täitmata. See on Zeigarniku efekt. Zeigarniku efekti demonstreeris psühholoog Bluma Zeigarnik, kes kirjeldas, et kipume mittetäielikke ülesandeid oma mälus aktiivsena hoidma kauem kui lõpetatud ülesandeid. UX-disainis puudutab seda loomulikult triibuline muster. Oletame, et teil on õppimise seeria 63. päev. Sel hetkel on teil pooleliolevate asjade muster. Teie aju unustab selle harva, kuna see asub teie mõistuse tagaosas. Sel hetkel hakkab teie aju teile teatisi saatma. Kui panete need psühholoogilised jõud kokku, hakkate tõeliselt mõistma, miks triibud pole lihtsalt tavaline rakenduse funktsioon; nad on võimelised inimkäitumist ümber kujundama. Kuid kuskil – ma ei oska täpselt öelda, millal, kuna see on igaühe puhul erinev – jõuavad asjad punkti, kus seeria nihkub „lõbust” millekski, mille kaotamist ei saa endale lubada. Kas te ei taha, et 58 päeva pingutus raisku läheks? See teebki triibusüsteemi tõhusaks. Kui see on õigesti tehtud, aitavad triibud kasutajatel luua hämmastavaid harjumusi, mis saavutavad eesmärgi. See võib olla igapäevane lugemine või järjepidev jõusaalis käimine. Need korduvad toimingud (mõnikord väikesed) ühenduvad aja jooksul ja muutuvad meie igapäevaelus ilmseks. Kuid igal mündil on kaks külge. Õhuke piir harjumuse ja sunni vahel Kui olete seda jälginud, võite juba öelda, et triibusüsteemidel on varjukülg. Harjumuse kujundamine seisneb järjepidevuses korduva eesmärgiga. Sund on aga järjekindlus eesmärgi nimel, mida enam ei vajata, kuid mida hoitakse hirmust või survest kinni. See on žileti õhuke joon. Sa pesed hambaid igal hommikul mõtlemata; see on automaatne ja instinktiivne ning selge eesmärgiga hea hingeõhk. See on triip, mis moodustab hea harjumuse. Eetiline triibusüsteem annab kasutajatele hingamisruumi. Kui te mingil põhjusel hommikul ei pese, võite harjata keskpäeval. Ebatäiuslikkus on lubatud, kartmata pikka pingutust kaotada. Sund liigub vastupidist teed, mille käigus tunnete end ärevaks, tunnete end süüdi või isegi kurnatuna ning mõnikord tundub, et te pole midagi saavutanud, vaatamata kõigele omatööd. Te ei tegutse mitte sellepärast, et soovite, vaid sellepärast, et kardate alateadlikult oma edusammude nulli viimist. Keegi isegi kirjeldas seda suurepäraselt: "Ma tundsin, et ma petan, kuid lihtsalt ei hoolinud. Ma pole midagi ilma oma löögita". See näitab, millised äärmuslikud hoiatustriibud võivad inimesel olla. Sel määral, mil kasutajad hakkavad oma enesehinnangut siduma suvalise mõõdikuga, mitte algse eesmärgi või põhjusega, mille tõttu nad seeriat alustasid. Seeriast saab see, kes nad on, mitte ainult see, mida nad teevad. Hästi läbimõeldud eetiline süsteem peaks tunduma kasutajale julgustuse, mitte surve või kohustusena. See on seotud sisemise ja välise motivatsiooni tasakaaluga. Väline motivatsioon (välised hüved, karistuse vältimine) võib kasutajaid käivitada, kuid sisemine motivatsioon (ülesanne isikliku eesmärgi nimel, näiteks hispaania keele õppimine, kuna soovite siiralt suhelda kallimaga) on pikaajaliseks suhtlemiseks tugevam. Hea süsteem peaks liikuma sisemise motivatsiooni poole, kasutades väliseid elemente hoolikalt, st tuletama kasutajatele meelde, kui kaugele nad on jõudnud, mitte ähvardama neid sellega, mida nad võivad kaotada. Jällegi on see peen joon. Lihtne test triibusüsteemi kujundamisel on võtta veidi aega ja mõelda, kas teie tooted teenivad raha, müües lahendusi teie toote tekitatud ärevusele. Kui jah, siis on suur tõenäosus, et kasutate kasutajaid ära. Seega on järgmine küsimus: kui ma otsustan kasutada triibu, siis kuidas kujundada see nii, et see aitaks kasutajatel oma eesmärke tõeliselt saavutada? Hea Streak System Designi kasutajakogemus Usun, et see on koht, kus enamik projekte loob tõhusa triibusüsteemi või ajab selle täiesti sassi. Vaatame läbi mõned hea triibu kujundamise UX põhimõtted. Hoidke seda pingutuseta Tõenäoliselt olete seda varem kuulnud, võib-olla sellistest raamatutest nagu Atomic Habits, kuid tasub mainida, et üks lihtsamaid viise harjumuste kujundamiseks on muuta tegevus väikeseks ja lihtsaks. See on sarnane võimeteguriga, mida arutasime Foggi käitumismudelist. Iga triibu kujundamise esimene reegel peaks olema nõutud toimingu tegemine nii väikeseks kui inimlikult võimalik, saavutades samal ajal edu. Kui igapäevane tegevus nõuab tahtejõudu, ei ületa see tegevus viit päeva. Miks? Te ei saa olla motiveeritud viis päeva järjest. Näide: kui kasutate meditatsioonirakendust, ei pea te kasutajaid sundima 20-minutilist seanssi lihtsalt selleks, et säilitada seeria. Proovige selle asemel üks minut, võib-olla isegi midagi nii väikest kui kolmkümmend sekundit. Nagu öeldakse, väikesed veepiisad teevad võimsa ookeani). Väikestest pingutustest saavad ajaga suured saavutused. See peaks olema eesmärk: eemaldada hõõrdumine, eriti kui hetk võib olla raske. Kui kasutajad on stressis või ülekoormatud, andke neile teada, et lihtsalt kohale ilmumine, kasvõi mõneks sekundiks, loetakse pingutuseks. Andke selget visuaalset tagasisidet Inimene on loomult visuaalne. Enamasti peame midagi nägema, et uskuda; on vaja asju visualiseerida, et neid paremini mõista ja perspektiivi panna. Seetõttu kasutavad triibumustrid pingutuse visualiseerimiseks sageli visuaalseid elemente, nagu graafikud, linnukesed, edenemisrõngad ja ruudud. Vaadake GitHubi panuse graafikut. See on järjepidevuse lihtne visualiseerimine. Kuid arendajad hingavad seda sisse nagu hapnikku.
Peaasi, et triibusüsteem ei tunduks abstraktne. See peaks tunduma tõeline ja teenitud. Näiteks Duolingo ja Apple'i treeningrõngad kasutavad rea lõppemisel puhtaid animatsioonikujundusi ja GitHub näitab ajaloolisi andmeid kasutaja järjepidevuse kohta aja jooksul.
Kasutage head ajastust Mainisin varem, et inimesed on oma olemuselt üldiselt unustavad ja vihjed võivad aidata säilitada hoogu. Ilma viipadeta unustab enamik uusi kasutajaid jätkata. Elu võib muutuda kiireks, motivatsioon kaob ja asju juhtub. Isegi kauaaegsed kasutajad saavad viipadest kasu, kuigi enamasti on need juba harjumuste ahelasse lukustatud. Sellest hoolimata võib isegi kõige pühendunumal inimene kogemata päeva vahele jätta. Teie seeriasüsteem vajab kindlasti meeldetuletusi. Kõige sagedamini kasutatavad meeldetuletused on tõukemärguanded. Tõukemärguannetega töötamisel on ajastus tõesti oluline. Samuti on oluline rakenduse tüüp. Kell 9 teatise saatmine teatega „Te pole täna harjutanud” on õpperakenduse jaoks lihtsalt imelik, sest paljudel on asju teha päev enne, kui nad isegi mõtlevad tunni lõpetamisele. Kui me räägime fitnessirakendusest, siis seeon mõistlik ja võib-olla isegi oodatakse, et seda meenutatakse päeva jooksul varem. Tõukemärguanded varieeruvad olenevalt rakendusekategooriast oluliselt. Näiteks treeningrakendused näevad varahommikuste märguannetega (7–8:00) suuremat seotust, samas kui produktiivsusrakendused võivad varakeskpäeval paremini toimida. Peaasi on testida oma rakenduse ajastust A/B-testiga, lähtudes kasutajate käitumisest, selle asemel, et eeldada, et asjad sobivad kõigile. See, mis töötab meditatsioonirakenduse jaoks, ei pruugi kodeerimise jälgija jaoks töötada. Teised viipameetodid on punased punktid rakenduse ikoonil ja isegi rakenduse vidinad. Uuringud on erinevad, kuid keskmine inimene avab oma seadme 50–150 korda päevas (PDF). Kui kasutaja näeb rakendusel või vidinal punast punkti, mis näitab jooksvat triipu iga kord, kui ta telefoni avab, suurendab see pühendumust. Lihtsalt ärge üle pingutage; viip peaks olema meeldetuletus, mitte näägutamine. Tähistage verstaposte Vöötade süsteem peaks püüdma tähistada verstaposte, et emotsioone uuesti esile kutsuda, eriti nende kasutajate puhul, kes on sügaval jadas. Kui kasutaja jõuab 7., 30., 50., 100., 365. päevani, peaksite sellest suure numbri tegema. Tunnustage saavutusi – eriti pikaajaliste kasutajate puhul.
Nagu varem nägime, mõtles Duolingo selle välja ja rakendas animeeritud graafika, mis tähistab verstaposte konfettidega. Mõned platvormid pakuvad isegi olulisi boonuseid, mis kinnitavad kasutajate pingutusi. Ja see võib olla kasulik rakendustele, nii et kasutajad kipuvad oma verstaposte sotsiaalmeedias avalikult jagama. Teine eelis on ootusärevus, mis tuleb enne verstapostide saavutamist. See ei ole ainult seeria lõputu elus hoidmine; kasutajatel on, mida oodata. Kasutage armumehhanisme Elu on ettearvamatu. Inimesed hajuvad. Iga hea triibusüsteem peaks eeldama ebatäiuslikkust. Üks suurimaid psühholoogilisi ohte triibusüsteemile on nulli lähtestamine pärast ühte vahelejäänud päeva. "Eetiline" triibusüsteem peaks pakkuma kasutajale mõningast lõtvust. Oletame, et teil on 90-päevane maleõppimise seeria. Olete olnud kolm head kuud järjekindel ja ühel päeval sureb su telefon reisil olles välja ja nii saab 90-st 0 — kõik, kogu see pingutus, kustutatakse ja progress kaob. Kasutaja võib olla täiesti laastatud. Mõte selle nullist ülesehitamisest on nii demoraliseeriv, et pingutus pole seda väärt. Halvimal juhul võib kasutaja pärast ebaõnnestumist tundes rakendusest loobuda. Kaaluge "armu" mehhanismi lisamist oma seeriasüsteemile:
Streak Freeze Võimaldab kasutajatel tahtlikult ühe päeva vahele jätta ilma karistusteta. Lisaaeg Enne lähtestamise käivitamist lubage tavalisest tähtajast mööduda mõni tund (2–3). Lagunemismudelid Kõva lähtestamise asemel väheneb seeria veidi, nt iga vahelejäänud päeva kohta arvestatakse jadast maha 10 päeva.
Kasutage julgustavat tooni Võrdleme kahte sõnumit, mis kuvatakse kasutajatele, kui seeria katkeb:
"Kaotasite oma 42-päevase seeria. Alustage otsast." "Olete kohal 42 päeva järjest. See on uskumatu edasiminek! Kas soovite veel proovida?"
Mõlemad edastavad sama teavet, kuid emotsionaalne mõju on erinev. Esimene sõnum paneks kasutaja tõenäoliselt end demoraliseerituna tundma ja lõpetaks. Teine sõnum tähistab juba saavutatut ja julgustab kasutajat õrnalt uuesti proovima. Streak Systemsi disaini väljakutsed Enne kui läheme triibusüsteemi ehitamise tehnilistesse eripäradesse, peaksite olema teadlik väljakutsetest, millega võite kokku puutuda. Asjad võivad muutuda keeruliseks, nagu arvata võis. Ajavööndite käsitlemine On põhjust, miks kellaaja ja kuupäeva käsitlemine on üks keerulisemaid kontseptsioone, millega arendajad tegelevad. Kaaluda tuleb vormindamist, rahvusvahelistumist ja palju muud. Lubage mul küsida teilt järgmist: mida loetakse päevaks? Teame, et maailm töötab erinevates ajavööndites ja nagu sellest ei piisa, on mõnes piirkonnas suveaeg (DST), mis toimub kaks korda aastas. Kust te üldse alustate nende servajuhtumite käsitlemist? Mida loetakse homse päeva "alguseks"? Mõned arendajad püüavad seda vältida, kasutades ühte keskset ajavööndit, näiteks UTC. Mõne kasutaja jaoks annaks see õigeid tulemusi, kuid mõne kasutaja jaoks võib see tund, kaks tundi või rohkem aeguda. See ebakõla rikub kasutajakogemust. Kasutajad hoolivad vähem sellest, kuidas te kulisside taga aega käsitlete; nad ootavad vaid seda, et kui nad sooritavad seeriatoimingu kell 23:40, peaks see nende kontekstis täpselt sel ajal registreerima. Peaksite määratlema "ühe päeva" kasutaja kohaliku ajavööndi, mitte serveri aja järgi. Muidugi, võite võtta lihtsamaltmarsruudi ja lähtestatakse kõigi kasutajate jaoks globaalselt keskööl UTC, kuid te loote palju ebaõiglust. Kellelgi Californias on oma ülesande täitmiseks alati kaheksa lisatundi kui Londonis elaval inimesel. See on ebaõiglane disainiviga, mis karistab teatud kasutajaid nende asukoha tõttu. Ja mis siis, kui see inimene Londonis on ainult külas, täidab ülesande ja naaseb siis teise ajavööndisse? Üks tõhus lahendus sellele kõigele on paluda kasutajatel seadistamise ajal (eelistatavalt pärast esimest autentimist) selgesõnaliselt oma ajavöönd määrata. Hea mõte on lisada peen märkus, et ajavööndi teabe esitamist kasutatakse rakenduse jaoks ainult edenemise täpseks jälgimiseks, mitte ei kasutata seda isikut tuvastavate andmetena. Ja see on veel üks hea mõte muuta see muudetavaks seadeks. Soovitan kõigil vältida ajavööndiloogika otsest käsitlemist rakenduses. Kasutage läbiproovitud kuupäevateeke, nagu Moment.js või pytz (Python) jne. Nii keerulise asja jaoks pole vaja jalgratast uuesti leiutada. Vahelejäänud päevade ja servade juhtumid Teine probleem, mille pärast peaksite muretsema, on kontrollimatud servajuhtumid, nagu kasutajate üle magamine, serveri seisakud, viivitus, võrgurikked jne. Armumehhanismide idee kasutamine, nagu need, millest me varem rääkisime, võib aidata. Kahetunnine ajapikendus võib aidata nii kasutajat kui ka arendajat selles mõttes, et kasutajaid ei karistata jäigalt kontrollimatute eluolude eest. Arendusaknad on arendajatele abiks nendel kontrollimatutel hetkedel, kui server keset ööd alla läheb. Eelkõige ärge kunagi usaldage klienti. Kontrollige alati serveri poolel. Server peaks olema ainus tõeallikas. Petmise ennetamine Jällegi, ma ei saa seda piisavalt rõhutada: veenduge, et valideeriksite kõik serveripoolsed. Kasutajad on inimesed ja inimesed võivad võimaluse korral petta. See on vältimatu. Võite proovida:
Kõigi toimingute salvestamine UTC ajatemplitega. Klient saab saata oma kohaliku aja, kuid server saab selle kohe UTC-ks teisendada ja serveri aja suhtes valideerida. Nii saab süsteem, kui kliendi ajatempel on kahtlaselt kaugel, selle veana tagasi lükata ja kasutajaliides sellele vastavalt reageerida. Sündmuspõhise jälgimise kasutamine. Teisisõnu salvestage iga toimingu kirje koos metaandmetega, sealhulgas sellise teabega nagu kasutaja ID, sooritatud toimingu tüüp ning ajatempel ja ajavöönd. See aitab kinnitada.
Streak Systemi mootori ehitamine See ei ole koodiõpetus, seega väldin teile hulga koodide lisamist. Jätan selle praktiliseks ja kirjeldan, kuidas asjad üldiselt töötavad vöötsüsteemi mootoril arhitektuuri, voo ja töökindluse osas. Põhiarhitektuur Nagu ma olen mitu korda öelnud, tehke serverist vöötandmete ainus tõeallikas. Arhitektuur võib serveris olla umbes selline:
Salvestage iga kasutaja andmed andmebaasis. Salvestage praegune triipude salvestamine (vaikimisi 0) täisarvuna. Salvestage ajavööndi eelistus, st IANA ajavööndi string (kas kaudselt kohalikust ajatemplist või otseselt, paludes kasutajal oma ajavöönd valida). Näiteks „Ameerika/New_York”. Käsitsege kogu loogikat, et teha kindlaks, kas jada jätkub või katkeb, kontrollides ajavööndit, mis on kasutaja kohaliku ajavööndi suhtes.
Samal ajal kliendi poolel:
Kuvatakse praegune jada, mis tavaliselt tuuakse serverist. Saatke metaandmete kujul tehtud toiming serverisse, et kontrollida, kas kasutaja sooritas kvalifitseeruva jadatoimingu. Andke serveri vastuste põhjal visuaalset tagasisidet.
Lühidalt öeldes on aju serveris ja klient on kuvamise ja sündmuste edastamise eesmärgil. See säästab palju tõrkeid ja äärejuhtumeid ning muudab värskenduste ja paranduste tegemise lihtsamaks. Loogiline voog Simuleerime ülevaadet selle kohta, kuidas toimiks minimaalselt tõhusa triibusüsteemi mootor, kui kasutaja toimingu lõpetab.
Kasutaja sooritab kvalifitseeruva seeria toimingu. Klient saadab sündmuse serverisse metaandmetena. See võib olla "Kasutaja X lõpetas toimingu Y ajatemplil Z". Server võtab selle sündmuse vastu ja teeb põhikontrolli. Kas see on päris kasutaja? Kas need on autentitud? Kas tegevus on kehtiv? Kas ajavöönd on ühtlane? Kui see möödub, hangib server andmebaasist kasutaja vöötandmed. Seejärel teisendage saadud toimingu ajatempel kasutaja kohalikuks ajavööndiks. Laske serveril võrrelda kalendri kuupäevi (mitte ajatempleid) kasutaja kohalikus ajavööndis: Kui see on samal päeval, on toiming üleliigne ja muudatusi ei toimutriip. Kui see on järgmisel päeval, siis seeria pikeneb ja suureneb 1 võrra. Kui vahe on rohkem kui üks päev, siis seeria katkeb. Kuid siin võite rakendada armumehaanikat. Kui armumehhanism jääb kasutamata, lähtestage jada väärtusele 1.
Kui otsustate salvestada ajaloolised andmed verstaposti saavutuste jaoks, värskendage muutujaid, nagu „pikim jada” või „aktiivsete päevade koguarv”. Seejärel värskendab server andmebaasi ja vastab kliendile. Midagi sellist:
{ "current_streak": 48, "pikim_jada": 50, "total_active_days": 120, "streak_extended": tõsi, }
Täiendava meetmena peaks server kas uuesti proovima või tagasi lükkama ja teavitama klienti, kui protsessi käigus miski ebaõnnestub. Ehitamine vastupidavuse tagamiseks Nagu varem mainitud, on vigade või serveri seisakute tõttu jada kaotamine kohutav kasutuskogemus ja kasutajad ei oota, et see langeks. Seega peaksid teie seeriasüsteemil olema nende stsenaariumide jaoks kaitsemeetmed. Kui server on hoolduse tõttu (või mõnel muul põhjusel) maas, kaaluge selle parandamiseks ajutise lisatundide pikkuse lubamist, et toiminguid saaks esitada hilinemisega ja need siiski loetakse. Samuti saate kasutajaid teavitada, eriti kui olukord võib käimasolevat jada mõjutada. Märkus. Looge administraatori tagauks, kus andmeid saab käsitsi taastada. Vead on vältimatud ja mõned kasutajad helistavad teie rakendusele või pöörduvad abi saamiseks, et nende jada katkes põhjusel, mida nad ei saa kontrollida. Kui kasutajal on pärast uurimist õigus, peaksite saama triibud käsitsi taastada. Järeldus Üks asi jääb selgeks: triibud on tõesti võimsad, kuna inimpsühholoogia töötab fundamentaalsel tasandil. Kõige parem on see süsteem, millele kasutajad teadlikult ei mõtle. Sellest on saanud vahetute tulemuste või nähtavate edusammude rutiin, nagu hammaste harjamine, millest saab tavaline harjumus. Ja ma lihtsalt ütlen seda: mitte kõik tooted ei vaja triibusüsteemi. Kas peaksite tõesti sundima järjepidevust lihtsalt sellepärast, et soovite igapäevaseid aktiivseid kasutajaid? Vastus võib väga hästi olla "ei".