Sunt sigur că ați auzit de dungi sau ați folosit o aplicație cu una. Dar te-ai întrebat vreodată de ce dungile sunt atât de populare și puternice? Ei bine, există cel mai evident că aplicațiile îți doresc cât mai multă atenție, dar în afară de asta, știai că, atunci când populara aplicație de învățare Duolingo a introdus widget-uri iOS pentru a afișa semnale, angajamentul utilizatorului a crescut cu 60%. Șaizeci la sută reprezintă o schimbare masivă a comportamentului și demonstrează modul în care modelele „streak” pot fi folosite pentru a crește implicarea și a stimula utilizarea. Cel mai elementar, o serie este numărul de zile consecutive în care un utilizator finalizează o anumită activitate. Unii oameni îl definesc și ca un obicei „gamificat” sau o măsură concepută pentru a încuraja utilizarea consecventă. Dar liniile transcend dincolo de a fi o valoare sau o înregistrare într-o aplicație; este mai psihologic decât atât. Instinctele umane sunt ușor de influențat cu factorii potriviți. Uită-te la acești trei factori: progres, mândrie și teamă de a pierde (denumit în mod obișnuit FOMO). Ce au toate acestea în comun? Efort. Cu cât depui mai mult efort în ceva, cu atât îți modelează mai mult identitatea și așa intră striații în lumea psihologiei comportamentale. Acum, cu o mare putere vine o mare responsabilitate și, din cauza asta, există o latură întunecată a striurilor. În acest articol, vom intra în psihologie, UX și principiile de proiectare din spatele construirii unui sistem eficient de streak. Ne vom uita la (1) de ce creierul nostru răspund aproape instinctiv la activitatea streak, (2) cum să proiectăm streak-uri în moduri care să-i ajute cu adevărat pe utilizatori și (3) munca tehnică implicată în construirea unui model streak. Psihologia din spatele striurilor Pentru a proiecta și a construi un sistem eficient de streak, trebuie să înțelegem cum se aliniază cu modul în care creierul nostru este conectat. Cum ar fi, ce îl face atât de eficient în măsura în care simțim atât de multă dedicare intensă pentru a ne proteja striații? Există trei principii psihologice interesante, bine documentate, care susțin ceea ce face ca striurile să fie atât de puternice și de dependență. Aversiune la pierdere Aceasta este probabil cea mai puternică forță din spatele striurilor. Spun asta pentru că de cele mai multe ori, aproape că nu poți evita asta în viață. Gândește-te astfel: dacă un prieten îți dă 100 de dolari, ai fi fericit. Dar dacă ai pierde 100 USD din portofel, asta ar răni mult mai mult. Greutatea emoțională a acestor situații nu este egală. Pierderea doare mult mai mult decât câștigul se simte bine. Să mergem mai departe și să spunem că vă dau 100 USD și vă cer să jucați un joc de noroc. Există o șansă de 50% să câștigi încă 100 USD și o șansă de 50% să pierzi cei 100 USD inițiali. L-ai lua? nu aș face-o. Majoritatea oamenilor nu ar face-o. Aceasta este aversiunea de pierdere. Dacă te gândești bine, este logic, este de înțeles, este uman. Conceptul din spatele aversiunii de pierdere este că simțim durerea de a pierde ceva de două ori mai mult decât plăcerea de a câștiga ceva de valoare egală. În termeni psihologici, pierderea persistă mai mult decât câștigurile. Probabil vezi cum se leagă asta cu dungile. Pentru a construi o serie vizibilă, este nevoie de efort; pe măsură ce o serie crește, motivația din spatele acesteia începe să se estompeze; sau mai exact, începe să devină secundar. Iată un exemplu: să presupunem că prietenul tău are o serie de trei zile și își închide „Inelele de mișcare” pe Apple Watch. Nu au aproape nimic de pierdut în afară de dorința de a-și atinge scopul și de a fi consecvenți. În același timp, aveți o serie impresionantă de 219 de zile. Sunt șanse să fii prins de frica de a-l pierde. Cel mai probabil nu te gândești la realizare în acest moment; este mai mult despre protejarea efortului investit, iar aceasta este aversiunea la pierdere. Duolingo explică modul în care aversiunea la pierdere contribuie la reticența unui utilizator de a întrerupe o serie lungă, chiar și în zilele lor cele mai leneșe. Într-un fel, o serie se poate transforma într-un obicei atunci când se instalează aversiunea la pierdere. Modelul comportamentului Fogg (B = MAP) Acum că înțelegem teama de a pierde efortul investit în strie mai lungi, o altă întrebare este: Ce ne face să facem lucrul în primul rând, zi de zi, chiar înainte ca streak-ul să devină mare? Despre asta este modelul de comportament Fogg. Este relativ simplu. Un comportament (B) apare numai atunci când trei factori - Motivația (M), Abilitatea (A) și Prompt (P) - se aliniază în același moment. Astfel, ecuația B=MAP. Dacă oricare dintre acești factori, chiar și unul, lipsește în acel moment, comportamentul nu se va întâmpla. Deci, pentru ca un sistem de streak să fie eficient și recurent, toți cei trei factori trebuie să fie prezenți: Motivație Acesta este fragil și nu este ceva care este prezent constant. Sunt zile în care eștiemotionat sa inveti spaniola si zile in care nu simti nici macar un pic de vointa pentru a invata limba. Motivația în sine de a construi un obicei este nesigură și o luptă pierdută din prima zi. Abilitatea Pentru a compensa limitările motivației, abilitatea este esențială. În acest context, abilitatea înseamnă ușurința în acțiune, adică efortul este atât de ușor încât este nerealist să spui că nu este posibil. Majoritatea aplicațiilor folosesc acest lucru în mod intenționat. Apple Fitness are nevoie doar să stai în picioare un minut într-o oră pentru a câștiga o bifă în direcția obiectivului tău Stand. Duolingo are nevoie doar de o lecție finalizată. Aceste sarcini nu necesită atât de mult efort. Bariera este atât de scăzută încât chiar și în cele mai proaste zile ale tale, poți să o faci. Dar efortul combinat al unei serie în curs este locul în care începe ideea de a pierde acea serie. Prompt Acesta este ceea ce completează ecuația. Oamenii sunt în mod natural uituci, așa că da, abilitatea ne poate duce în proporție de 90%. Dar un prompt ne amintește să acționăm. Urmele sunt persistente prin design, așa că utilizatorilor trebuie să li se reamintească în mod constant să acționeze. Pentru a vedea cât de puternic poate fi un prompt, Duolingo a făcut un test A/B pentru a vedea dacă o mică insignă roșie pe pictograma aplicației a sporit utilizarea constantă. A produs o creștere cu 6% a utilizatorilor activi zilnic. Doar o insignă roșie. Limitări ale modelului Acestea fiind spuse, există o limitare a modelului Fogg prin care criticii și cercetările moderne au observat că un design care se bazează prea mult pe solicitări, cum ar fi notificările agresive, riscă să creeze oboseală mentală. Notificările constante și orele suplimentare ar putea face utilizatorii să se retragă. Deci, ai grijă la asta. Efectul Zeigarnik Cum te simți când lași o sarcină de proiect pe jumătate terminată? Asta irită pe mulți oameni, deoarece sarcinile neterminate ocupă mai mult spațiu mental decât lucrurile pe care le îndeplinim. Când ceva este făcut și dispare, avem tendința de a-l uita. Când ceva este lăsat nefăcut, tinde să ne cântărească mintea. Acesta este motivul pentru care produsele digitale folosesc indicatori artificiali de progres, cum ar fi bara de completare a profilului Upwork, pentru a-i anunța utilizatorului că profilul său este doar „60% complet”. Îl determină pe utilizator să termine ceea ce a început.
Să ne uităm la un alt exemplu. Aveți cinci sarcini într-o aplicație pentru lista de activități și, la sfârșitul zilei, verificați doar patru dintre ele ca fiind finalizate. Mulți dintre noi se vor simți neîmpliniți din cauza acelei sarcini neterminate. Acesta, chiar acolo, este efectul Zeigarnik. Efectul Zeigarnik a fost demonstrat de psihologul Bluma Zeigarnik, care a descris că avem tendința de a menține sarcinile incomplete active în memoria noastră mai mult decât sarcinile finalizate. Un model de dungi se folosește în mod natural de acest lucru în designul UX. Să presupunem că vă aflați în ziua 63 a unui ciclu de învățare. În acel moment, vă aflați într-un tipar continuu de afaceri neterminate. Creierul tău ar uita rareori de asta, deoarece se află în spatele minții tale. În acest moment, creierul tău devine cel care îți trimite notificări. Când puneți laolaltă aceste forțe psihologice, începeți să înțelegeți cu adevărat de ce liniile nu sunt doar o caracteristică obișnuită a aplicației; sunt capabili să remodeleze comportamentul uman. Dar undeva de-a lungul liniilor – nu pot spune exact când, deoarece diferă pentru toată lumea – lucrurile ajung într-un punct în care o serie trece de la „distracție” la ceva pe care simți că nu-ți poți permite să pierzi. Nu vrei ca 58 de zile de efort să fie irosite, nu-i așa? Acesta este ceea ce face un sistem de streak eficient. Dacă sunt făcute corect, liniile îi ajută pe utilizatori să-și dezvolte obiceiuri uimitoare care să atingă un obiectiv. Ar putea fi să citești zilnic sau să mergi constant la sală. Aceste acțiuni repetate (uneori mici) se compun în timp și devin evidente în viața noastră de zi cu zi. Dar fiecare monedă are două fețe. Linia subțire dintre obișnuință și constrângere Dacă ați urmărit, puteți deja să vă dați seama că există o latură întunecată a sistemelor de streak. Formarea obiceiurilor se referă la consecvența cu un scop repetat. Constrângerea, totuși, este consecvența de a lucra la un obiectiv care nu mai este necesar, dar ținut de frică sau presiune. Este o linie subțire ca brici. Te speli pe dinți în fiecare dimineață fără să stai pe gânduri; este automată și instinctivă, cu scopul clar de a avea o respirație bună. Aceasta este o serie care formează un obicei bun. Un sistem de strie etice oferă utilizatorilor spațiu pentru a respira. Dacă, dintr-un motiv oarecare, nu vă periați dimineața, puteți să vă periați la prânz. Imperfecțiunea este permisă fără teama de a pierde un efort lung. Compulsia ia calea opusă, prin care o serie te face să fii anxios, te simți vinovat sau chiar epuizat și, uneori, ai impresia că nu ai realizat nimic, în ciuda tuturorlucru. Acționați nu pentru că doriți, ci pentru că sunteți îngrozit în mod subconștient să vă vedeți progresul revenit la zero. Cineva chiar a descris perfect acest lucru: "Am simțit că trișez, dar pur și simplu nu i-a păsat. Nu sunt nimic fără stria mea". Acest lucru arată striațiile extreme pe care o pot avea asupra unui individ. În măsura în care utilizatorii încep să-și lege valoarea de sine de o valoare arbitrară, mai degrabă decât de obiectivul sau motivul inițial pentru care au început să se întâmple. Seria devine cine sunt ei, nu doar ceea ce fac. Un sistem etic bine conceput ar trebui să fie o încurajare pentru utilizator, nu o presiune sau o obligație. Aceasta se referă la echilibrul dintre motivația intrinsecă și extrinsecă. Motivația extrinsecă (recompense externe, evitarea pedepselor) ar putea face utilizatorii să înceapă, dar motivația intrinsecă (a îndeplini sarcina pentru un scop personal, cum ar fi învățarea spaniolă, deoarece doriți cu adevărat să comunicați cu o persoană dragă) este mai puternică pentru angajamentul pe termen lung. Un sistem bun ar trebui să graviteze spre motivația intrinsecă, cu utilizarea atentă a elementelor extrinseci, adică să reamintească utilizatorilor cât de departe au ajuns, nu să-i amenințe cu ceea ce ar putea pierde. Din nou, este o linie fină. Un test simplu atunci când proiectați un sistem de streak este să luați ceva timp și să vă gândiți dacă produsele dvs. câștigă bani vânzând soluții pentru anxietatea creată de produsul dvs. Dacă da, există șanse mari să exploatezi utilizatorii. Așadar, următoarea întrebare este: Dacă aleg să folosesc streak, cum îl proiectez într-un mod care să-i ajute cu adevărat pe utilizatori să-și atingă obiectivele? UX-ul Good Streak System Design Cred că aici este locul în care majoritatea proiectelor fie realizează un sistem eficient de strigări, fie îl încurcă complet. Să trecem prin câteva principii UX ale unui design bun de streak. Păstrați-l fără efort Probabil ați mai auzit asta înainte, poate din cărți precum Atomic Habits, dar merită menționat că una dintre cele mai ușoare moduri prin care se pot forma obiceiurile este făcând acțiunea mică și ușoară. Acesta este similar cu factorul de capacitate pe care l-am discutat din modelul de comportament Fogg. Prima regulă a oricărui design de streak ar trebui să fie ca acțiunea necesară să fie cât mai mică posibil din punct de vedere uman, realizând în același timp progrese. Dacă o acțiune zilnică necesită voință pentru a fi finalizată, acțiunea respectivă nu va trece de cinci zile. De ce? Nu poți fi motivat cinci zile la rând. Un exemplu: dacă rulați o aplicație de meditație, nu trebuie să-i faceți pe utilizatori să treacă printr-o sesiune de 20 de minute doar pentru a menține succesul. Încearcă un singur minut, poate chiar ceva de cât treizeci de secunde, în schimb. După cum se spune, picăturile mici de apă fac marele ocean). Eforturile mici se acumulează în realizări mari în timp. Acesta ar trebui să fie scopul: eliminarea frecării, mai ales atunci când momentul ar putea fi dificil. Când utilizatorii sunt stresați sau copleșiți, spuneți-le că simpla apariție, chiar și pentru câteva secunde, contează ca efort. Oferiți feedback vizual clar Oamenii sunt vizuali prin natura lor. De cele mai multe ori, trebuie să vedem ceva în care să credem; există această nevoie de a vizualiza lucrurile pentru a le înțelege mai bine și a pune lucrurile în perspectivă. Acesta este motivul pentru care modelele de dungi folosesc adesea elemente vizuale, cum ar fi grafice, bifă, inele de progres și grile, pentru a vizualiza efortul. Priviți graficul contribuției GitHub. Este o simplă vizualizare a consistenței. Cu toate acestea, dezvoltatorii îl inspiră ca oxigenul.
Cheia este să nu faci un sistem de streak să pară abstract. Ar trebui să se simtă real și câștigat. De exemplu, inelele de activitate de fitness de la Duolingo și Apple folosesc modele de animație curate la finalizarea unei serie, iar GitHub arată date istorice ale consistenței unui utilizator de-a lungul timpului.
Folosiți un timp bun Am menționat mai devreme că oamenii sunt în general uituci din fire și că îndemnurile pot ajuta la menținerea impulsului înainte. Fără solicitări, majoritatea utilizatorilor noi uită să continue. Viața poate deveni ocupată, motivația dispare și lucrurile se întâmplă. Chiar și utilizatorii de lungă durată beneficiază de solicitări, deși de cele mai multe ori sunt deja blocați în bucla obiceiurilor. Cu toate acestea, chiar și cea mai angajată persoană poate pierde din greșeală o zi. Sistemul dvs. de streak are cu siguranță nevoie de mementouri. Cele mai utilizate mementouri prompte sunt notificările push. Timpul contează cu adevărat atunci când lucrați cu notificări push. Contează și tipul de aplicație. Trimiterea unei notificări la ora 9 a.m. care spune „Nu ați exersat azi” este pur și simplu ciudat pentru o aplicație de învățare, deoarece mulți au lucruri de făcut cu o zi înainte de a se gândi să termine o lecție. Dacă vorbim despre o aplicație de fitness, totuși, aceastaeste rezonabil și poate chiar de așteptat să fie reamintit mai devreme în cursul zilei. Notificările push variază semnificativ în funcție de categoria de aplicație. Aplicațiile de fitness, de exemplu, văd o interacțiune mai mare cu notificările de dimineață devreme (7–8 AM), în timp ce aplicațiile de productivitate ar putea funcționa mai bine la amiaza devreme. Cheia este să testați A/B sincronizarea aplicației dvs. pe baza comportamentului utilizatorilor, mai degrabă decât să presupuneți că lucrurile sunt unice. Ceea ce funcționează pentru o aplicație de meditație ar putea să nu funcționeze pentru un tracker de codare. Alte metode prompte sunt punctele roșii pe pictograma aplicației și chiar widget-urile aplicației. Studiile variază, dar o persoană obișnuită își deblochează dispozitivul de 50-150 de ori pe zi (PDF). Dacă un utilizator vede un punct roșu pe o aplicație sau un widget care indică o serie curentă de fiecare dată când își deblochează telefonul, acesta crește angajamentul. Doar nu exagera; promptul ar trebui să servească drept reamintire, nu ca sâcâială. Sărbătorește reperele Un sistem de streak ar trebui să încerce să sărbătorească etapele de referință pentru a reaprinde emoțiile, în special pentru utilizatorii adânciți într-o serie. Când un utilizator atinge Ziua 7, Ziua 30, Ziua 50, Ziua 100, Ziua 365, ar trebui să faci o mare problemă. Recunoaște realizările – în special pentru utilizatorii de lungă durată.
După cum am văzut mai devreme, Duolingo și-a dat seama și a implementat o grafică animată care sărbătorește reperele cu confetti. Unele platforme oferă chiar recompense substanțiale bonus care validează eforturile utilizatorilor. Și acest lucru poate fi benefic pentru aplicații, astfel încât utilizatorii tind să-și împărtășească reperele în mod public pe rețelele sociale. Un alt beneficiu este anticiparea care vine înainte de atingerea reperelor. Nu este doar menținerea în viață la nesfârșit; utilizatorii au ceva de așteptat. Utilizați mecanismele de grație Viața este imprevizibilă. Oamenii sunt distrași. Orice sistem bun de streak ar trebui să se aștepte la imperfecțiune. Una dintre cele mai mari amenințări psihologice la adresa unui sistem de streak este resetarea completă la zero după doar o singură zi ratată. Un sistem „etic” ar trebui să ofere utilizatorului o oarecare slăbiciune. Să presupunem că aveți o serie de învățare a șahului de 90 de zile. Ai fost consecvent timp de trei luni bune și într-o zi, telefonul tău moare în timp ce călătorești și, exact așa, 90 devine 0 - totul, tot efortul, este șters și progresul dispare. Utilizatorul ar putea fi complet devastat. Gândul de a-l reconstrui de la zero este atât de demoralizant încât efortul nu merită. În cel mai rău caz, un utilizator ar putea abandona aplicația după ce se simte ca un eșec. Luați în considerare adăugarea unui mecanism de „grație” sistemului dvs. de streak:
Streak Freeze Permite utilizatorilor să rateze în mod intenționat o zi fără penalități. Timp suplimentar Alocați câteva ore (2–3) după termenul limită obișnuit înainte de a declanșa o resetare. Modele de decădere În loc de o resetare completă, seria scade cu o cantitate mică, de exemplu, 10 zile sunt deduse din seria pe zi ratată.
Utilizați un ton încurajator Să comparăm două mesaje afișate utilizatorilor atunci când se întrerupe o serie:
"Ți-ai pierdut seria de 42 de zile. Începe de la capăt." "Ai apărut timp de 42 de zile consecutiv. Este un progres incredibil! Vrei să mai încerci?"
Ambele transmit aceleași informații, dar impactul emoțional este diferit. Primul mesaj ar face cel mai probabil un utilizator să se simtă demoralizat și să-l facă să renunțe. Al doilea mesaj celebrează ceea ce a fost deja realizat și încurajează ușor utilizatorul să încerce din nou. Provocări de proiectare a sistemelor Streak Înainte de a intra în detaliile tehnice ale construirii unui sistem de streak, ar trebui să fiți conștienți de provocările cu care vă puteți confrunta. Lucrurile se pot complica, așa cum v-ați aștepta. Gestionarea fusurilor orare Există un motiv pentru care gestionarea timpului și a datei este printre cele mai dificile concepte cu care se confruntă dezvoltatorii. Există formatare, internaționalizare și multe altele de luat în considerare. Permiteți-mi să vă întreb asta: ce contează ca o zi? Știm că lumea rulează pe diferite fusuri orare și, ca și cum acest lucru nu ar fi suficient, unele regiuni au ora de vară (DST) care se întâmplă de două ori pe an. De unde începeți să vă ocupați de aceste cazuri de margine? Ce contează drept „începutul” zilei de mâine? Unii dezvoltatori încearcă să evite acest lucru folosind un singur fus orar central, cum ar fi UTC. Pentru unii utilizatori, acest lucru ar da rezultate corecte, dar pentru unii, ar putea fi oprit cu o oră, două ore sau mai mult. Această inconsecvență ruinează experiența utilizatorului. Utilizatorilor le pasă mai puțin cum gestionați timpul din culise; tot ce se așteaptă este ca, dacă efectuează o acțiune de streak la ora 23:40, atunci ar trebui să se înregistreze exact la acea oră, în contextul lor. Ar trebui să definiți „o zi” în funcție de fusul orar local al utilizatorului, nu de ora serverului. Sigur, poți lua ușorrutați și resetați liniile la nivel global pentru toți utilizatorii la miezul nopții UTC, dar creați foarte mult nedreptate. Cineva din California are întotdeauna opt ore în plus pentru a-și îndeplini sarcina decât cineva care locuiește la Londra. Acesta este un defect de design nedrept care pedepsește anumiți utilizatori din cauza locației lor. Și ce se întâmplă dacă acea persoană din Londra este doar în vizită, încheie o sarcină, apoi revine la alt fus orar? O soluție eficientă pentru toate acestea este să le ceri utilizatorilor să își stabilească în mod explicit fusul orar în timpul integrării (de preferință după prima autentificare). Este o idee bună să includeți o notă subtilă că furnizarea de informații despre fusul orar este folosită numai pentru aplicația pentru a urmări cu exactitate progresul, mai degrabă decât să fie folosită ca date de identificare personală. Și este o altă idee bună să faci din asta o setare schimbătoare. Sugerez ca oricine să evite gestionarea directă a logicii fusului orar într-o aplicație. Utilizați biblioteci de date testate și adevărate, cum ar fi Moment.js sau pytz (Python), etc. Nu este nevoie să reinventați roata pentru ceva atât de complex ca acesta. Zile pierdute și cazuri Edge O altă provocare pentru care ar trebui să vă faceți griji sunt cazurile marginale incontrolabile, cum ar fi somnul excesiv al utilizatorilor, timpul de întrerupere a serverului, întârzierea, defecțiunile rețelei și așa mai departe. Utilizarea ideii de mecanisme de grație, precum cele pe care le-am discutat mai devreme, poate ajuta. O fereastră de grație de două ore ar putea ajuta atât utilizatorul, cât și dezvoltatorul, în sensul că utilizatorii nu sunt pedepsiți rigid pentru circumstanțe de viață incontrolabile. Pentru dezvoltatori, ferestrele de grație sunt utile în acele momente de necontrolat când serverul se defectează în miezul nopții. Mai presus de toate, nu ai niciodată încredere în client. Validați întotdeauna pe partea serverului. Serverul ar trebui să fie singura sursă de adevăr. Prevenirea înșelăciunii Din nou, nu pot sublinia suficient acest lucru: asigurați-vă că validați totul pe partea de server. Utilizatorii sunt oameni, iar oamenii ar putea înșela dacă li se oferă ocazia. Este inevitabil. S-ar putea să încerci:
Stocarea tuturor acțiunilor cu marcaje de timp UTC. Clientul își poate trimite ora locală, dar serverul o poate converti imediat în UTC și poate valida în raport cu ora serverului. În acest fel, dacă marca temporală a clientului este suspect de departe, sistemul o poate respinge ca eroare, iar UI poate răspunde în consecință. Folosind urmărirea bazată pe evenimente. Cu alte cuvinte, stocați o înregistrare a fiecărei acțiuni cu metadate, inclusiv informații precum ID-ul utilizatorului, tipul de acțiune efectuată și marcajul de timp și fusul orar. Acest lucru ajută la validare.
Construirea unui motor de sistem Streak Acesta nu este un tutorial de cod, așa că voi evita să vă arunc o grămadă de coduri. Voi păstra acest lucru practic și voi descrie modul în care lucrurile funcționează în general cu un motor de sistem streak în ceea ce privește arhitectura, fluxul și fiabilitatea. Arhitectura de bază Așa cum am spus de mai multe ori, faceți din server o singură sursă de adevăr pentru datele streak. Arhitectura poate merge cam așa pe server:
Stocați datele fiecărui utilizator într-o bază de date. Stocați stocul de serie curent (implicit ca 0) ca număr întreg. Stocați preferința fusului orar, adică șirul fusului orar IANA (fie implicit din marcajul orar local, fie în mod explicit solicitând utilizatorului să-și selecteze fusul orar). De exemplu, „America/New_York”. Gestionați toată logica pentru a determina dacă șirul continuă sau se întrerupe, cu o verificare a fusului orar care este relativ la fusul orar local al utilizatorului.
Între timp, din partea clientului:
Afișează șirul curent, preluat în mod normal de pe server. Trimiteți acțiunea efectuată sub formă de metadate către server pentru a valida dacă utilizatorul a finalizat efectiv o acțiune de calificare. Oferiți feedback vizual pe baza răspunsurilor serverului.
Deci, pe scurt, creierul este pe server, iar clientul este pentru a afișa și transmite evenimente. Acest lucru vă scutește de o mulțime de erori și cazuri de margine, plus ușurează actualizările și remedierea. Fluxul logic Să simulăm o prezentare a modului în care ar funcționa un motor de sistem de streak minim eficient atunci când un utilizator finalizează o acțiune:
Utilizatorul finalizează o acțiune de calificare. Clientul trimite un eveniment către server ca metadate. Aceasta ar putea fi „Utilizatorul X a finalizat acțiunea Y la marcajul de timp Z”. Serverul primește acest eveniment și efectuează validarea de bază. Este acesta un utilizator real? Sunt autentificate? Acțiunea este valabilă? Este consecvent fusul orar? Dacă aceasta trece, serverul preia datele de serie ale utilizatorului din baza de date. Apoi, convertiți marca temporală a acțiunii primite în fusul orar local al utilizatorului. Lăsați serverul să compare datele calendarului (nu marcajele de timp) din fusul orar local al utilizatorului: Dacă este aceeași zi, atunci acțiunea este redundantă și nu există nicio modificare îndâră. Dacă este a doua zi, atunci seria se extinde și crește cu 1. Dacă există un decalaj de mai mult de o zi, stria se întrerupe. Totuși, aici ați putea aplica mecanica grație. Dacă mecanismul de grație este ratat, apoi resetați seria la 1.
Dacă alegeți să salvați datele istorice pentru realizările etapelor de referință, apoi actualizați variabile precum „cea mai lungă serie” sau „total de zile active”. Serverul actualizează apoi baza de date și răspunde clientului. Ceva de genul asta:
{ „current_streak”: 48, „cea mai lungă serie”: 50, „total_active_days”: 120, „streak_extended”: adevărat, }
Ca o măsură suplimentară, serverul ar trebui fie să reîncerce, fie să respingă și să notifice clientul când ceva eșuează în timpul procesului. Construire pentru rezistență După cum am menționat mai devreme, utilizatorii care pierd o serie din cauza erorilor sau a timpului de nefuncționare a serverului este un UX teribil, iar utilizatorii nu se așteaptă să-și ia decizia. Astfel, sistemul dvs. de streak ar trebui să aibă garanții pentru acele scenarii. Dacă serverul este oprit pentru întreținere (sau orice motiv), luați în considerare posibilitatea de a permite o fereastră temporară de ore suplimentare pentru a-l remedia, astfel încât acțiunile să poată fi trimise cu întârziere și să conteze în continuare. De asemenea, puteți alege să notificați utilizatorii, mai ales dacă situația este capabilă să afecteze o serie în curs de desfășurare. Notă: stabiliți o ușă din spate de administrare unde datele pot fi restaurate manual. Bug-urile sunt inevitabile, iar unii utilizatori ar apela la aplicația dvs. sau v-ar contacta pentru a susține că șirul lor s-a rupt dintr-un motiv pe care nu l-au putut controla. Ar trebui să puteți restabili manual dungile dacă, după investigare, utilizatorul are dreptate. Concluzie Un lucru rămâne clar: liniile sunt cu adevărat puternice datorită modului în care psihologia umană funcționează la un nivel fundamental. Cel mai bun sistem de streak de acolo este cel la care utilizatorii nu se gândesc în mod conștient. A devenit o rutină a rezultatelor imediate sau a progreselor vizibile, precum spălatul pe dinți, care devine un obicei obișnuit. Și o voi spune doar: nu toate produsele au nevoie de un sistem de streak. Chiar ar trebui să forțați consecvența doar pentru că doriți utilizatori activi zilnic? Răspunsul poate fi foarte bine „nu”.