Esmu pārliecināts, ka esat dzirdējis par svītrām vai ar tām izmantojis lietotni. Bet kādreiz esat domājis, kāpēc svītras ir tik populāras un spēcīgas? Ir skaidrs, ka lietotnes vēlas pievērst pēc iespējas vairāk jūsu uzmanības, taču vai zinājāt, ka tad, kad populārā mācību lietotne Duolingo ieviesa iOS logrīkus, lai parādītu svītras, lietotāju apņemšanās pieauga par 60%. Sešdesmit procenti ir milzīgas izmaiņas uzvedībā un parāda, kā "svītru" modeļus var izmantot, lai palielinātu iesaisti un veicinātu izmantošanu. Visvienkāršākā sērija ir dienu skaits pēc kārtas, kad lietotājs pabeidz noteiktu darbību. Daži cilvēki to definē arī kā “spēlētu” ieradumu vai metriku, kas paredzēta, lai veicinātu konsekventu lietošanu. Taču svītras ir ne tikai rādītājs vai ieraksts lietotnē; tas ir vairāk psiholoģisks. Cilvēka instinktus ir viegli ietekmēt ar pareiziem faktoriem. Apskatiet šos trīs faktorus: progresu, lepnumu un bailes palaist garām (ko parasti sauc par FOMO). Kas tiem visiem kopīgs? Pūles. Jo vairāk pūļu jūs kaut ko pieliekat, jo vairāk tas veido jūsu identitāti, un šādi svītras iekļūst uzvedības psiholoģijas pasaulē. Tagad ar lielu spēku nāk liela atbildība, un tāpēc svītrām ir ēnas puse. Šajā rakstā mēs apskatīsim psiholoģiju, UX un dizaina principus efektīvas sēriju sistēmas izveidei. Mēs apskatīsim (1) kāpēc mūsu smadzenes gandrīz instinktīvi reaģē uz svītru darbību, (2) kā izveidot svītras tā, lai tie patiešām palīdzētu lietotājiem, un (3) tehniskais darbs, kas saistīts ar svītru modeļa izveidi. Psiholoģija aiz svītrām Lai izstrādātu un izveidotu efektīvu svītru sistēmu, mums ir jāsaprot, kā tā sakrīt ar to, kā mūsu smadzenes ir savienotas. Piemēram, kas padara to tik efektīvu, ka mēs jūtam tik lielu centību aizsargāt savas svītras? Ir trīs interesanti, labi dokumentēti psiholoģijas principi, kas atbalsta to, kas padara svītras tik spēcīgas un aizraujošas. Atteikšanās no zaudējumiem Tas, iespējams, ir spēcīgākais spēks aiz svītrām. Es to saku, jo vairumā gadījumu jūs gandrīz nevarat izvairīties no tā dzīvē. Padomājiet par to šādi: ja draugs jums iedos 100 USD, jūs būtu laimīgs. Bet, ja jūs pazaudētu 100 USD no sava maka, tas kaitētu daudz vairāk. Šo situāciju emocionālais svars nav vienāds. Zaudējums sāp vairāk nekā ieguvums jūtas labi. Paskatīsimies tālāk un sakām, ka es jums dodu 100 USD un lūdzu uzspēlēt azartspēli. Pastāv 50% iespēja laimēt vēl $100 un 50% iespēja zaudēt sākotnējos $100. Vai jūs to ņemtu? Es negribētu. Lielākā daļa cilvēku to nedarītu. Tā ir nepatika pret zaudējumiem. Ja tā padomā, tas ir loģiski, saprotami, tas ir cilvēcīgi. Izvairīšanās no zaudējuma jēdziens ir tāds, ka mēs izjūtam sāpes par kaut ko pazaudēšanu divreiz vairāk nekā prieku iegūt kaut ko līdzvērtīgu. Psiholoģiskā ziņā zaudējumi ilgst vairāk nekā ieguvumi. Jūs droši vien redzat, kā tas ir saistīts ar svītrām. Lai izveidotu pamanāmu svītru, ir jāpieliek pūles; sērijai augot, aiz tās esošā motivācija sāk izgaist; vai precīzāk, tas sāk kļūt sekundārs. Lūk, piemērs: Pieņemsim, ka jūsu draugam ir trīs dienu sērija, kas pārtrauc “Move Rings” savā Apple Watch pulkstenī. Viņiem nav gandrīz nekā, ko zaudēt, izņemot vēlmi sasniegt savu mērķi un būt konsekventiem. Tajā pašā laikā jums ir iespaidīga 219 dienu sērija. Pastāv iespēja, ka jūs esat ieslodzīts ar bailēm to zaudēt. Jūs, visticamāk, šobrīd nedomājat par sasniegumu; tas ir vairāk par jūsu ieguldīto pūļu aizsardzību, un tā ir izvairīšanās no zaudējumiem. Duolingo paskaidro, kā nepatika pret zaudējumiem veicina lietotāju nevēlēšanos pārtraukt ilgstošu sēriju pat slinkākajās dienās. Savā ziņā sērija var pārvērsties par ieradumu, kad iestājas nepatika pret zaudējumiem. Fogga uzvedības modelis (B = MAP) Tagad, kad mēs saprotam bailes zaudēt pūles, kas ieguldītas ilgākās sērijās, vēl viens jautājums ir: kas liek mums to darīt pirmo reizi, dienu no dienas, pat pirms sērija kļūst liela? Par to ir Fogg uzvedības modelis. Tas ir salīdzinoši vienkārši. Uzvedība (B) notiek tikai tad, ja trīs faktori — motivācija (M), spēja (A) un uzvedne (P) — sakrīt vienā un tajā pašā brīdī. Tādējādi vienādojums B=MAP. Ja tajā brīdī trūkst kāda no šiem faktoriem, pat viena, uzvedība nenotiks. Tātad, lai svītru sistēma būtu efektīva un atkārtota, ir jābūt visiem trim faktoriem: MotivācijaTas ir trausls, un tas nav pastāvīgi klātesošs. Ir dienas, kad tu esitieksme mācīties spāņu valodu, un dienas, kad tu pat nejūti gribasspēku, lai iemācītos šo valodu. Motivācija ieraduma veidošanai pati par sevi ir neuzticama un zaudēta cīņa jau no pirmās dienas. Spēja Lai kompensētu motivācijas ierobežojumus, spējai ir izšķiroša nozīme. Šajā kontekstā spēja nozīmē darbības vieglumu, t.i., pūles ir tik vieglas, ka ir nereāli teikt, ka tas nav iespējams. Lielākā daļa lietotņu to izmanto apzināti. Apple Fitness jums ir jāstāv kājās vienu minūti stundā, lai atzīmētu savu stenda mērķi. Duolingo nepieciešama tikai viena pabeigta nodarbība. Šie uzdevumi neprasa tik daudz pūļu. Barjera ir tik zema, ka pat savās sliktākajās dienās jūs to varat izdarīt. Taču notiekošās sērijas kopējās pūles ir vieta, kur sākas doma par šīs sērijas zaudēšanu. PromptTas pabeidz vienādojumu. Cilvēki pēc dabas ir aizmāršīgi, tāpēc jā, spējas var mūs sasniegt par 90%. Taču pamudinājums mums atgādina rīkoties. Svītras pēc konstrukcijas ir noturīgas, tāpēc lietotājiem ir pastāvīgi jāatgādina rīkoties. Lai redzētu, cik spēcīga var būt uzvedne, Duolingo veica A/B testu, lai noskaidrotu, vai maza sarkana emblēma uz lietotnes ikonas palielina konsekventu lietošanu. Tas radīja 6% pieaugumu ikdienas aktīvo lietotāju skaitā. Tikai sarkana nozīmīte. Modeļa ierobežojumi Ņemot to vērā, Fogg modelim ir ierobežojumi, proti, kritiķi un mūsdienu pētījumi ir pamanījuši, ka dizains, kas pārāk lielā mērā paļaujas uz uzvednēm, piemēram, agresīviem paziņojumiem, var izraisīt garīgu nogurumu. Pastāvīgi paziņojumi un virsstundas var izraisīt lietotāju apgrūtinājumu. Tātad, uzmanieties no tā. Zeigarnika efekts Kā jūs jūtaties, atstājot projekta uzdevumu puspadarītu? Tas kaitina daudzus cilvēkus, jo nepabeigti uzdevumi aizņem vairāk garīgās vietas nekā lietas, ko mēs pabeidzam. Kad kaut kas ir izdarīts un pagājis, mēs mēdzam to aizmirst. Kad kaut kas paliek nepadarīts, tas mēdz noslogot mūsu prātus. Tieši tāpēc digitālajos produktos tiek izmantoti mākslīgi progresa indikatori, piemēram, Upwork profila pabeigšanas josla, lai informētu lietotāju, ka viņa profils ir tikai “60% pabeigts”. Tas mudina lietotāju pabeigt iesākto.

Apskatīsim citu piemēru. Jums uzdevumu saraksta lietotnē ir pieci uzdevumi, un dienas beigās jūs atzīmējat tikai četrus no tiem kā izpildītus. Daudzi no mums jutīsies nepaveikti šī viena nepabeigtā uzdevuma dēļ. Tas ir Zeigarnika efekts. Zeigarnika efektu demonstrēja psiholoģe Blūma Zeigarnika, kurš aprakstīja, ka mums ir tendence paturēt atmiņā nepabeigtus uzdevumus aktīvus ilgāk nekā izpildītos. UX dizainā tam dabiski pievienojas svītru raksts. Pieņemsim, ka esat mācīšanās cikla 63. dienā. Tajā brīdī jūs atrodaties nepabeigtu darbu shēmā. Jūsu smadzenes reti aizmirst par to, jo tas atrodas jūsu prāta aizmugurē. Šajā brīdī jūsu smadzenes kļūst par tām, kas sūta jums paziņojumus. Kad jūs apvienojat šos psiholoģiskos spēkus, jūs sākat patiesi saprast, kāpēc svītras nav tikai parasta lietotnes funkcija; tie spēj pārveidot cilvēka uzvedību. Bet kaut kur — es nevaru precīzi pateikt, kad, jo tas ir atšķirīgs visiem — lietas sasniedz punktu, kurā sērija pāriet no “jautrās” uz kaut ko tādu, ko, jūsuprāt, nevarat atļauties zaudēt. Jūs taču nevēlaties, lai 58 dienu pūliņi iet velti, vai ne? Tas padara svītru sistēmu efektīvu. Ja tas tiek darīts pareizi, svītras palīdz lietotājiem izveidot pārsteidzošus ieradumus, kas sasniedz mērķi. Tā varētu būt ikdienas lasīšana vai pastāvīga sporta zāles apmeklēšana. Šīs atkārtotās darbības (dažreiz nelielas) laika gaitā saplūst un kļūst acīmredzamas mūsu ikdienas dzīvē. Taču katrai medaļai ir divas puses. Plānā robeža starp ieradumu un piespiešanu Ja esat sekojis līdzi, jūs jau varat pateikt, ka svītru sistēmām ir ēnas puses. Ieraduma veidošanās ir saistīta ar konsekvenci ar atkārtotu mērķi. Tomēr piespiešana ir konsekvence, strādājot pie mērķa, kas vairs nav vajadzīgs, bet tiek turēts baiļu vai spiediena dēļ. Tā ir skuvekļa tieva līnija. Tu katru rītu nedomājot tīri zobus; tā ir automātiska un instinktīva, ar skaidru mērķi nodrošināt labu elpu. Tā ir sērija, kas veido labu ieradumu. Ētiska svītru sistēma lietotājiem dod iespēju elpot. Ja kāda iemesla dēļ jūs netīrāt zobus no rīta, varat tīrīt suku pusdienlaikā. Nepilnība ir pieļaujama, nebaidoties zaudēt ilgstošu piepūli. Piespiešana iet pretējo ceļu, kur sērija liek jums satraukties, jūs jūtaties vainīgs vai pat izsmelts, un dažreiz šķiet, ka jūs neko neesat paveicis, neskatoties uz visu savustrādāt. Jūs rīkojaties nevis tāpēc, ka vēlaties, bet tāpēc, ka jūs zemapziņā baidāties redzēt, ka jūsu progress tiek atiestatīts uz nulli. Kāds to pat lieliski aprakstīja: "Es jutu, ka krāpjos, bet man vienkārši bija vienalga. Es neesmu nekas bez savas kārtas". Tas parāda ārkārtējas noturības svītras, kas var būt indivīdam. Ciktāl lietotāji sāk saistīt savu pašvērtību ar patvaļīgu metriku, nevis sākotnējam mērķim vai iemeslam, ko viņi sāka sēriju. Sērija kļūst par to, kas viņi ir, nevis tikai par to, ko viņi dara. Labi izstrādātai ētiskajai svītrojuma sistēmai ir jājūtas kā lietotāja iedrošinājumam, nevis spiedienam vai pienākumam. Tas attiecas uz iekšējās un ārējās motivācijas līdzsvaru. Ārējā motivācija (ārēja atlīdzība, izvairīšanās no soda) var likt lietotājiem sākt darbu, taču iekšējā motivācija (veicot uzdevumu personīgam mērķim, piemēram, mācīties spāņu valodu, jo jūs patiesi vēlaties sazināties ar mīļoto) ir spēcīgāka ilgtermiņa iesaistei. Labai sistēmai ir jātiecas uz iekšējo motivāciju, rūpīgi izmantojot ārējos elementus, t.i., jāatgādina lietotājiem, cik tālu viņi ir tikuši, nevis jādraud ar to, ko viņi varētu zaudēt. Atkal tā ir smalka līnija. Vienkāršs tests, veidojot svītru sistēmu, ir faktiski aizņemt kādu laiku un padomāt, vai jūsu produkti pelna naudu, pārdodot risinājumus jūsu produkta radītajai trauksmei. Ja jā, pastāv liela iespēja, ka izmantojat lietotājus. Tātad nākamais jautājums ir: Ja es izvēlos izmantot sēriju, kā to izveidot tā, lai tas patiesi palīdzētu lietotājiem sasniegt savus mērķus? Good Streak System Design UX Es uzskatu, ka tieši šeit vairums projektu vai nu izveido efektīvu svītru sistēmu, vai arī to pilnībā izjauc. Apskatīsim dažus labas svītru dizaina UX principus. Saglabājiet to bez piepūles Jūs, iespējams, esat to dzirdējuši jau iepriekš, iespējams, no tādām grāmatām kā Atomic Habits, taču ir vērts pieminēt, ka viens no vienkāršākajiem veidiem, kā ieradumus var veidot, ir padarīt darbību niecīgu un vienkāršu. Tas ir līdzīgs spēju faktoram, par kuru mēs runājām Fogg uzvedības modelī. Jebkuras svītras dizaina pirmajam noteikumam vajadzētu būt vajadzīgās darbības veikšanai pēc iespējas mazākas, vienlaikus panākot progresu. Ja ikdienas darbībai ir nepieciešams gribasspēks, lai to paveiktu, šī darbība nepārsniegs piecas dienas. Kāpēc? Jūs nevarat būt motivēts piecas dienas pēc kārtas. Piemērs: ja izmantojat meditācijas lietotni, jums nav jāliek lietotājiem iziet 20 minūšu sesiju, lai saglabātu sēriju. Tā vietā izmēģiniet vienu minūti, varbūt pat kaut ko tik mazu kā trīsdesmit sekundes. Kā saka, mazas ūdens lāses veido varenu okeānu). Mazas pūles laika gaitā pārtop lielos sasniegumos. Tam vajadzētu būt mērķim: novērst berzi, it īpaši, ja brīdis varētu būt sarežģīts. Kad lietotāji ir saspringti vai pārņemti, dariet viņiem zināmu, ka vienkārša parādīšanās, pat uz dažām sekundēm, tiek uzskatīta par piepūli. Sniedziet skaidru vizuālo atgriezenisko saiti Cilvēki pēc dabas ir vizuāli. Vairumā gadījumu mums ir jāredz kaut kas, lai noticētu; ir nepieciešams vizualizēt lietas, lai tās labāk izprastu un liktu lietas perspektīvā. Tāpēc svītru rakstos bieži tiek izmantoti vizuālie elementi, piemēram, diagrammas, atzīmes, progresa gredzeni un režģi, lai vizualizētu piepūli. Apskatiet GitHub ieguldījumu grafiku. Tā ir vienkārša konsekvences vizualizācija. Tomēr izstrādātāji to ieelpo kā skābekli.

Galvenais ir neļaut svītru sistēmai justies abstraktai. Tam vajadzētu justies īstai un nopelnītai. Piemēram, Duolingo un Apple Fitness aktivitāšu gredzeni izmanto tīru animācijas dizainu, kad tiek pabeigta sērija, un GitHub parāda vēsturiskos datus par lietotāja konsekvenci laika gaitā.

Izmantojiet labu laiku Iepriekš es minēju, ka cilvēki parasti ir aizmāršīgi pēc dabas un ka pamudinājumi var palīdzēt saglabāt virzību uz priekšu. Bez uzvednēm lielākā daļa jauno lietotāju aizmirst turpināt. Dzīve var kļūt aizņemta, motivācija pazūd, un lietas notiek. Pat ilgstoši lietotāji gūst labumu no uzvednēm, lai gan vairumā gadījumu tie jau ir bloķēti ieraduma cilpā. Tomēr pat visievērojamākā persona var nejauši palaist garām dienu. Jūsu sēriju sistēmai noteikti ir nepieciešami atgādinājumi. Visbiežāk izmantotie atgādinājumi ir push paziņojumi. Laiks patiešām ir svarīgs, strādājot ar push paziņojumiem. Svarīgs ir arī lietotnes veids. Paziņojuma nosūtīšana plkst. 9:00, sakot, ka “Jūs šodien neesat trenējies”, mācību lietotnei ir dīvaini, jo daudziem ir lietas, kas jādara dienā, pirms viņi pat domā par nodarbības pabeigšanu. Tomēr, ja mēs runājam par fitnesa lietotni, tasir saprātīgs, un, iespējams, pat paredzēts, ka tas tiks atgādināts dienas sākumā. Push paziņojumi ievērojami atšķiras atkarībā no lietotņu kategorijas. Piemēram, fitnesa lietotnēs tiek nodrošināta lielāka iesaistīšanās ar agriem rīta paziņojumiem (7–8:00), savukārt produktivitātes lietotnes varētu darboties labāk agrā pusdienlaikā. Galvenais ir A/B pārbaudīt lietotnes laiku, pamatojoties uz lietotāju uzvedību, nevis pieņemt, ka lietas ir piemērotas visiem. Tas, kas darbojas meditācijas lietotnē, var nedarboties kodēšanas izsekotājam. Citas uzvednes metodes ir sarkani punkti uz lietotnes ikonas un pat lietotņu logrīki. Pētījumi atšķiras, taču vidusmēra cilvēks atbloķē ierīci 50–150 reizes dienā (PDF). Ja lietotājs redz sarkanu punktu uz lietotnes vai logrīka, kas norāda uz pašreizējo svītru katru reizi, kad viņš atbloķē savu tālruni, tas palielina apņemšanos. Vienkārši nepārcentieties; uzvednei vajadzētu kalpot kā atgādinājumam, nevis ķibelei. Sviniet pagrieziena punktus Sēriju sistēmai ir jācenšas atzīmēt pagrieziena punktus, lai atjaunotu emocijas, īpaši lietotājiem, kuri ir dziļi nonākuši sērijā. Kad lietotājs sasniedz 7., 30., 50., 100., 365. dienu, jums ir jāizdara liela lieta. Atzīstiet sasniegumus — īpaši tiem, kuri lieto ilgstoši.

Kā redzējām iepriekš, Duolingo to izdomāja un ieviesa animētu grafiku, kas atzīmē pagrieziena punktus ar konfeti. Dažas platformas pat piešķir ievērojamas prēmijas, kas apstiprina lietotāju centienus. Un tas var būt noderīgi lietotnēm, jo ​​lietotāji mēdz publiski kopīgot savus atskaites punktus sociālajos medijos. Vēl viens ieguvums ir gaidīšana, kas rodas pirms pavērsienu sasniegšanas. Tas nav tikai sērijas uzturēšana bezgalīgi. lietotājiem ir ko gaidīt. Izmantojiet labvēlības mehānismus Dzīve ir neparedzama. Cilvēki apjucis. Jebkurai labai svītru sistēmai vajadzētu sagaidīt nepilnības. Viens no lielākajiem psiholoģiskajiem draudiem sēriju sistēmai ir stingra atiestatīšana uz nulli pēc vienas nokavētas dienas. “Ētiskajai” svītru sistēmai ir jānodrošina lietotājam zināma atslābināšanās. Pieņemsim, ka jums ir 90 dienu šaha apguves sērija. Jūs esat bijis konsekvents trīs labus mēnešus, un kādu dienu jūsu tālrunis ceļojuma laikā nomirst, un tieši tāpat 90 kļūst par 0 — viss, visas pūles tiek izdzēstas, un progress pazūd. Lietotājs var būt pilnībā izpostīts. Doma par tā atjaunošanu no nulles ir tik demoralizējoša, ka pūles nav tā vērtas. Sliktākajā gadījumā lietotājs var pamest lietotni pēc neveiksmes sajūtas. Apsveriet iespēju savai sēriju sistēmai pievienot “žēlastības” mehānismu:

Streak FreezeĻaujiet lietotājiem apzināti palaist garām dienu bez soda sankcijām. Papildlaiks Pirms atiestatīšanas palaidiet dažas stundas (2–3) pēc parastā termiņa. Samazināšanās modeļi Cietās atiestatīšanas vietā sērija samazinās par nelielu daudzumu, piemēram, 10 dienas tiek atskaitītas no sērijas par katru nokavēto dienu.

Izmantojiet uzmundrinošu signālu Salīdzināsim divus ziņojumus, kas tiek rādīti lietotājiem, kad sērija pārtrūkst.

"Jūs zaudējāt savu 42 dienu sēriju. Sāciet no jauna." "Jūs bijāt 42 dienas pēc kārtas. Tas ir neticams progress! Vai vēlaties vēlreiz izmēģināt?"

Abi sniedz vienu un to pašu informāciju, taču emocionālā ietekme ir atšķirīga. Pirmais ziņojums, visticamāk, liktu lietotājam justies demoralizētam un likt viņam atmest. Otrais ziņojums atzīmē jau sasniegto un maigi mudina lietotāju mēģināt vēlreiz. Streak Systems dizaina izaicinājumi Pirms iedziļināmies svītru sistēmas izveides tehniskajā specifikā, jums jāapzinās problēmas, ar kurām jūs varētu saskarties. Lietas var kļūt sarežģītas, kā jūs varētu gaidīt. Laika joslu apstrāde Ir iemesls, kāpēc laika un datuma apstrāde ir viens no sarežģītākajiem jēdzieniem, ar ko izstrādātāji saskaras. Ir jāņem vērā formatēšana, internacionalizācija un daudz kas cits. Ļaujiet man pajautāt: kas tiek uzskatīta par dienu? Mēs zinām, ka pasaule darbojas dažādās laika joslās, un it kā ar to nepietiek, dažos reģionos ir vasaras laiks (DST), kas notiek divas reizes gadā. Kur jūs vispār sākat izskatīt šīs lietas? Kas skaitās rītdienas “sākums”? Daži izstrādātāji cenšas no tā izvairīties, izmantojot vienu centrālo laika joslu, piemēram, UTC. Dažiem lietotājiem tas dotu pareizus rezultātus, bet dažiem tas varētu pazust par stundu, divām stundām vai vairāk. Šī nekonsekvence sabojā lietotāja pieredzi. Lietotājiem mazāk rūp, kā jūs pavadāt laiku aizkulisēs; viss, ko viņi sagaida, ir tas, ka, ja viņi veic sēriju darbību plkst. 23:40, tad tai ir jāreģistrējas tieši šajā laikā atbilstoši viņu kontekstam. Jums ir jādefinē “viena diena”, pamatojoties uz lietotāja vietējo laika joslu, nevis servera laiku. Protams, jūs varat ņemt vieglākmaršruta un atiestatīšanas svītras globāli visiem lietotājiem pusnaktī UTC, taču jūs ļoti radāt negodīgumu. Kādam Kalifornijā vienmēr ir astoņas papildu stundas, lai paveiktu savu uzdevumu, nekā kādam, kas dzīvo Londonā. Tas ir netaisnīgs dizaina trūkums, kas soda noteiktus lietotājus viņu atrašanās vietas dēļ. Un ko darīt, ja šī persona Londonā tikai apmeklē, pabeidz uzdevumu un pēc tam atgriežas citā laika joslā? Viens efektīvs risinājums visiem šiem gadījumiem ir lūgt lietotājiem skaidri iestatīt savu laika joslu ieslēgšanās laikā (vēlams pēc pirmās autentifikācijas). Ir ieteicams iekļaut smalku piezīmi, ka laika joslas informācijas sniegšana tiek izmantota tikai, lai lietotne varētu precīzi izsekot progresam, nevis izmantot kā personu identificējošus datus. Vēl viena laba ideja ir padarīt to par maināmu iestatījumu. Es iesaku ikvienam izvairīties no tiešas laika joslas loģikas apstrādes lietotnē. Izmantojiet pārbaudītas datumu bibliotēkas, piemēram, Moment.js vai pytz (Python) utt. Nav nepieciešams no jauna izgudrot riteni kaut kam tik sarežģītam kā šis. Missed Days un Edge lietas Vēl viens izaicinājums, par kuru jums vajadzētu uztraukties, ir nekontrolējami malas gadījumi, piemēram, lietotāju pārgulēšana, servera dīkstāve, aizkave, tīkla kļūmes utt. Var palīdzēt ideju par žēlastības mehānismiem, piemēram, tiem, par kuriem mēs runājām iepriekš. Divu stundu labvēlības periods var palīdzēt gan lietotājam, gan izstrādātājam tādā nozīmē, ka lietotāji netiek stingri sodīti par nekontrolējamiem dzīves apstākļiem. Izstrādātājiem labvēlības logi ir noderīgi tajos nekontrolējamos brīžos, kad nakts vidū pazūd serveris. Galvenais, nekad neuzticieties klientam. Vienmēr pārbaudiet servera pusē. Serverim ir jābūt vienam patiesības avotam. Krāpšanās novēršana Es atkal nevaru to pietiekami uzsvērt: noteikti apstipriniet visu servera pusē. Lietotāji ir cilvēki, un cilvēki var krāpties, ja tiek dota iespēja. Tas ir neizbēgami. Jūs varētu mēģināt:

Visas darbības tiek saglabātas ar UTC laika zīmogiem. Klients var nosūtīt savu vietējo laiku, bet serveris var nekavējoties konvertēt to uz UTC un pārbaudīt pret servera laiku. Tādā veidā, ja klienta laikspiedols ir aizdomīgi tālu, sistēma var to noraidīt kā kļūdu, un lietotāja saskarne var attiecīgi reaģēt. Izmantojot uz notikumiem balstītu izsekošanu. Citiem vārdiem sakot, saglabājiet katras darbības ierakstu ar metadatiem, tostarp informāciju, piemēram, lietotāja ID, veiktās darbības veidu, laika zīmogu un laika joslu. Tas palīdz apstiprināt.

Streak sistēmas dzinēja izveide Šī nav koda apmācība, tāpēc es izvairīšos no tā, ka jums nav jāievada kods. Es paturēšu šo praktisko un aprakstīšu, kā parasti darbojas svītru sistēmas dzinējs attiecībā uz arhitektūru, plūsmu un uzticamību. Galvenā arhitektūra Kā jau esmu teicis vairākas reizes, padariet serveri par vienīgo patiesības avotu sēriju datiem. Arhitektūra serverī var būt šāda:

Saglabājiet katra lietotāja datus datu bāzē. Saglabājiet pašreizējo svītru krātuvi (noklusējuma kā 0) kā veselu skaitli. Saglabājiet laika joslas preferences, t.i., IANA laika joslas virkni (vai nu netieši no vietējā laikspiedola, vai tieši, lūdzot lietotājam izvēlēties savu laika joslu). Piemēram, “Amerika/Ņujorka”. Apstrādājiet visu loģiku, lai noteiktu, vai sērija turpinās vai pārtrauc, izmantojot laika joslas pārbaudi, kas ir saistīta ar lietotāja vietējo laika joslu.

Tikmēr no klienta puses:

Parādīt pašreizējo sēriju, kas parasti tiek ielādēta no servera. Nosūtiet uz serveri metadatu veidā veikto darbību, lai pārbaudītu, vai lietotājs patiešām ir pabeidzis kvalificējošu sērijas darbību. Sniedziet vizuālu atgriezenisko saiti, pamatojoties uz servera atbildēm.

Tātad, īsi sakot, smadzenes atrodas serverī, un klients ir paredzēts attēlošanai un notikumu iesniegšanai. Tas ietaupa daudz kļūmju un malu gadījumu, kā arī atvieglo atjauninājumus un labojumus. Loģiskā plūsma Simulēsim, kā veiktu minimāli efektīvas svītru sistēmas dzinējs, kad lietotājs pabeidz kādu darbību.

Lietotājs pabeidz kvalifikācijas sērijas darbību. Klients nosūta notikumu serverim kā metadatus. Tas varētu būt “Lietotājs X pabeidza darbību Y ar laika zīmogu Z”. Serveris saņem šo notikumu un veic pamata validāciju. Vai tas ir īsts lietotājs? Vai tie ir autentificēti? Vai darbība ir derīga? Vai laika josla ir konsekventa? Ja tas izdodas, serveris izgūst lietotāja svītru datus no datu bāzes. Pēc tam konvertējiet saņemto darbības laikspiedolu lietotāja vietējā laika joslā. Ļaujiet serverim salīdzināt kalendāra datumus (nevis laikspiedolus) lietotāja vietējā laika joslā: Ja tā ir tajā pašā dienā, darbība ir lieka un tajā nav izmaiņusvītra. Ja tā ir nākamā diena, sērija pagarinās un palielinās par 1. Ja starpība ir vairāk nekā viena diena, sērija pārtrūkst. Tomēr šeit jūs varat izmantot labvēlības mehāniku. Ja labvēlības mehānisms netiek izmantots, atiestatiet sēriju uz 1.

Ja izvēlaties saglabāt sasniegumu vēsturiskos datus, atjauniniet mainīgos lielumus, piemēram, “garākā sērija” vai “kopējais aktīvo dienu skaits”. Pēc tam serveris atjaunina datu bāzi un atbild klientam. Kaut kas līdzīgs šim:

{ "current_sreak": 48, "garākā_sērija": 50, "total_active_days": 120, "streak_extended": patiess, }

Kā papildu pasākums serverim ir vai nu jāmēģina vēlreiz, vai jānoraida un jāinformē klients, ja procesa laikā kaut kas neizdodas. Ēka izturībai Kā minēts iepriekš, lietotāji zaudē sēriju kļūdu vai servera dīkstāves dēļ ir šausmīgs UX, un lietotāji negaida, ka tas piedzīvos kritumu. Tādējādi jūsu sēriju sistēmai ir jābūt drošības pasākumiem šiem scenārijiem. Ja serveris nedarbojas apkopes dēļ (vai kāda cita iemesla dēļ), apsveriet iespēju atļaut pagaidu papildu stundu periodu, lai to labotu, lai darbības varētu iesniegt ar nokavēšanos un joprojām tiktu ieskaitītas. Varat arī izvēlēties informēt lietotājus, īpaši, ja situācija var ietekmēt notiekošo sēriju. Piezīme. Izveidojiet administratora aizmugures durvis, kur datus var atjaunot manuāli. Kļūdas ir neizbēgamas, un daži lietotāji piezvanīs jūsu lietotnei vai sazināsies, lai atbalstītu, ja viņu sērija pārtrūka iemesla dēļ, kuru viņi nevar kontrolēt. Jums vajadzētu būt iespējai manuāli atjaunot svītras, ja pēc izmeklēšanas lietotājam ir taisnība. Secinājums Viena lieta paliek skaidra: svītras ir patiešām spēcīgas, jo cilvēka psiholoģija darbojas fundamentālā līmenī. Labākā sēriju sistēma ir tā, par kuru lietotāji apzināti nedomā. Tā ir kļuvusi par rutīnu ar tūlītējiem rezultātiem vai redzamu progresu, piemēram, zobu tīrīšana, kas kļūst par regulāru ieradumu. Un es tikai saku: ne visiem produktiem ir nepieciešama svītru sistēma. Vai jums tiešām vajadzētu piespiest konsekvenci tikai tāpēc, ka vēlaties ikdienas aktīvus lietotājus? Atbilde ļoti labi var būt "nē".

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free