Olen varma, että olet kuullut juovista tai käyttänyt sovellusta sellaisen kanssa. Mutta oletko koskaan miettinyt, miksi raidat ovat niin suosittuja ja tehokkaita? On selvää, että sovellukset haluavat saada mahdollisimman paljon huomiotasi, mutta sen lisäksi, tiesitkö, että kun suosittu oppimissovellus Duolingo esitteli iOS-widgetit näyttämään juovia, käyttäjien sitoutuminen kasvoi 60 %. 60 prosenttia on valtava muutos käyttäytymisessä ja osoittaa, kuinka "putki"-malleja voidaan käyttää lisäämään sitoutumista ja lisäämään käyttöä. Pohjimmiltaan putki on peräkkäisten päivien lukumäärä, jonka käyttäjä suorittaa tietyn toiminnon. Jotkut ihmiset määrittelevät sen myös "pelillistetyksi" tapaksi tai mittariksi, joka on suunniteltu kannustamaan johdonmukaista käyttöä. Mutta juovat eivät ole sovelluksen mittareita tai tietueita. se on enemmän psykologista. Ihmisen vaistoihin on helppo vaikuttaa oikeilla tekijöillä. Katso näitä kolmea tekijää: edistystä, ylpeyttä ja menettämisen pelkoa (yleisesti kutsuttu FOMO). Mitä yhteistä näillä kaikilla on? Vaivaa. Mitä enemmän ponnistelet johonkin, sitä enemmän se muokkaa identiteettiäsi, ja näin juovat risteytyvät käyttäytymispsykologian maailmaan. Nyt suurella voimalla tulee suuri vastuu, ja sen vuoksi sarjoilla on pimeä puoli. Tässä artikkelissa käsittelemme psykologiaa, käyttökokemusta ja suunnittelun periaatteita tehokkaan sarjajärjestelmän rakentamisen takana. Tarkastelemme (1) miksi aivomme reagoivat lähes vaistomaisesti putkitoimintaan, (2) kuinka suunnitella raitoja tavoilla, jotka aidosti auttavat käyttäjiä, ja (3) viivakuvion rakentamiseen liittyvää teknistä työtä. Psykologia juovien takana Jotta voimme suunnitella ja rakentaa tehokkaan putkijärjestelmän, meidän on ymmärrettävä, kuinka se sopii yhteen aivomme johdotuksen kanssa. Esimerkiksi, mikä tekee siitä niin tehokkaan, että tunnemme niin paljon intensiivistä omistautumista suojellaksemme sarjojamme? On olemassa kolme mielenkiintoista, hyvin dokumentoitua psykologian periaatetta, jotka tukevat sitä, mikä tekee juovista niin voimakkaita ja koukuttavia. Tappion vastustaminen Tämä on luultavasti vahvin voima sarjojen takana. Sanon tämän, koska useimmiten et voi välttää tätä elämässä. Ajattele asiaa näin: Jos ystäväsi antaa sinulle 100 dollaria, olisit onnellinen. Mutta jos menetät 100 dollaria lompakostasi, se satuttaisi paljon enemmän. Näiden tilanteiden emotionaalinen painoarvo ei ole sama. Tappio satuttaa enemmän kuin voitto tuntuu hyvältä. Mennään pidemmälle ja sanotaan, että annan sinulle 100 dollaria ja pyydän sinua pelaamaan uhkapeliä. On 50 % todennäköisyys, että voitat toiset 100 dollaria ja 50 % todennäköisyys, että menetät alkuperäisen 100 dollaria. Ottaisitko sen? En haluaisi. Useimmat ihmiset eivät. Se on menetysvastaisuutta. Jos ajattelee sitä, se on loogista, ymmärrettävää, se on inhimillistä. Tappiota vastenmielisyyden taustalla oleva käsite on, että tunnemme tuskaa jonkin menettämisestä kaksi kertaa enemmän kuin iloa saada jotain saman arvoista. Psykologisesti tappiot viipyvät enemmän kuin voitot. Luultavasti huomaat, kuinka tämä liittyy juoviin. Huomattavan sarjan rakentaminen vaatii vaivaa; sarjan kasvaessa sen takana oleva motivaatio alkaa hiipua; tai tarkemmin sanottuna se alkaa muuttua toissijaiseksi. Tässä on esimerkki: Oletetaan, että ystävälläsi on kolmen päivän jakso, joka sulkee "Move Rings" -merkin Apple Watchissaan. Heillä ei ole juuri mitään menetettävää sen lisäksi, että he haluavat saavuttaa tavoitteensa ja olla johdonmukaisia. Samaan aikaan sinulla on käynnissä vaikuttava 219 päivän mittainen sarja. On mahdollista, että olet sen menettämisen pelon loukussa. Et todennäköisesti ajattele saavutusta tässä vaiheessa; Kyse on enemmän panostettujen ponnistelujen suojelemisesta, ja se on tappioiden välttämistä. Duolingo selittää, kuinka tappioiden karttaminen lisää käyttäjien haluttomuutta katkaista pitkää sarjaa jopa laiskoina päivinä. Tavallaan putki voi muuttua tottumukseksi, kun tappiota vastenmielisyys asettuu. Fogg Behavior Model (B = MAP) Nyt kun ymmärrämme pidempiin sarjoihin panostetun ponnistelun menettämisen pelon, toinen kysymys kuuluu: Mikä saa meidät toimimaan päivästä toiseen, jopa ennen kuin sarja kasvaa suureksi? Siitä Foggin käyttäytymismallissa on kyse. Se on suhteellisen yksinkertainen. Käyttäytyminen (B) tapahtuu vain, kun kolme tekijää - motivaatio (M), kyky (A) ja kehotus (P) - ovat linjassa samalla hetkellä. Siten yhtälö B=MAP. Jos jokin näistä tekijöistä, edes yksi, puuttuu sillä hetkellä, käyttäytymistä ei tapahdu. Jotta putkijärjestelmä olisi tehokas ja toistuva, kaikkien kolmen tekijän on oltava läsnä: MotivaatioTämä on hauras, eikä se ole jatkuvasti läsnä. On päiviä, jolloin oletespanjan kielen oppimiseen, ja päivinä et tunne edes hiukkasta tahdonvoimaa kielen oppimiseen. Motivaatio sellaisenaan tavan rakentamiseen on epäluotettavaa ja häviötä taistelua ensimmäisestä päivästä lähtien. Kyky Motivaatiorajoitusten kompensoimiseksi kyky on kriittinen. Kyky tarkoittaa tässä yhteydessä toiminnan helppoutta, eli ponnistus on niin helppoa, että on epärealistista väittää, ettei se ole mahdollista. Useimmat sovellukset käyttävät tätä tarkoituksella. Apple Fitness tarvitsee vain seisomisen minuutin tunnissa ansaitaksesi rastin kohti Stand-tavoitettasi. Duolingo tarvitsee vain yhden suoritetun oppitunnin. Nämä tehtävät eivät vaadi paljoa vaivaa. Este on niin matala, että voit tehdä sen jopa pahimpana päivinäsi. Mutta jatkuvan sarjan yhdistetty ponnistus on se paikka, jossa ajatus putkesta häviää. PromptTämä täydentää yhtälön. Ihminen on luonnostaan ​​unohtavainen, joten kyllä, kyky voi saada meidät sinne 90-prosenttisesti. Mutta kehotus muistuttaa meitä toimimaan. Viivat ovat rakenteeltaan pysyviä, joten käyttäjiä on jatkuvasti muistutettava toimimaan. Duolingo teki A/B-testin nähdäkseen, kuinka tehokas kehote voi olla, katsoakseen, lisäsikö pieni punainen merkki sovelluksen kuvakkeessa jatkuvaa käyttöä. Päivittäisten aktiivisten käyttäjien määrä kasvoi 6 %. Vain punainen merkki. Mallin rajoitukset Kaikesta tästä huolimatta Foggin mallilla on rajoituksensa, jonka mukaan kriitikot ja moderni tutkimus ovat havainneet, että liian voimakkaasti kehotteisiin, kuten aggressiivisiin ilmoituksiin, perustuva suunnittelu saattaa aiheuttaa henkistä väsymystä. Jatkuvat ilmoitukset ja ylityöt voivat aiheuttaa käyttäjien vaimentumisen. Joten varo sitä. Zeigarnik-efekti Miltä sinusta tuntuu, kun jätät projektitehtävän puoliksi valmiiksi? Se ärsyttää monia ihmisiä, koska keskeneräiset tehtävät vievät enemmän henkistä tilaa kuin tekemämme asiat. Kun jotain on tehty ja mennyt, meillä on tapana unohtaa se. Kun jokin jätetään tekemättä, se painaa mieltämme. Juuri tästä syystä digitaaliset tuotteet käyttävät keinotekoisia edistymisosoittimia, kuten Upworkin profiilin valmistumispalkkia, ilmoittamaan käyttäjälle, että hänen profiilinsa on vain "60% valmis". Se kannustaa käyttäjää lopettamaan aloittamansa.

Katsotaanpa toista esimerkkiä. Sinulla on viisi tehtävää tehtävälistasovelluksessa, ja päivän päätteeksi tarkistat vain neljä niistä suoritetuiksi. Monet meistä tuntevat itsensä saavuttamattomiksi tuon yhden keskeneräisen tehtävän takia. Tuossa on Zeigarnik-efekti. Zeigarnik-efektin osoitti psykologi Bluma Zeigarnik, joka kuvaili, että meillä on taipumus pitää keskeneräiset tehtävät aktiivisena muistissamme pidempään kuin valmiit tehtävät. Viivakuvio osuu tähän luonnollisesti UX-designissa. Oletetaan, että olet oppimisputken 63. päivänä. Siinä vaiheessa olet jatkuvassa keskeneräisissä asioissa. Aivosi harvoin unohtaisivat sen, kun se istuu mielesi takaosassa. Tässä vaiheessa aivoistasi tulee se, joka lähettää sinulle ilmoituksia. Kun yhdistät nämä psykologiset voimat, alat todella ymmärtää, miksi raidat eivät ole vain tavallinen sovellusominaisuus. ne pystyvät muokkaamaan ihmisten käyttäytymistä. Mutta jossain linjassa – en voi sanoa tarkalleen milloin, koska se vaihtelee kaikille – asiat saavuttavat pisteen, jossa sarja siirtyy "hauskasta" johonkin, jota ei tunne, että sinulla ei ole varaa hävitä. Etkö halua, että 58 päivää vaivannäköä menee hukkaan? Tämä tekee putkijärjestelmästä tehokkaan. Jos se tehdään oikein, juovat auttavat käyttäjiä rakentamaan hämmästyttäviä tapoja saavuttaa tavoitteensa. Se voi olla päivittäistä lukemista tai jatkuvaa kuntosalilla käymistä. Nämä toistuvat toimet (joskus pienet) yhdistyvät ajan myötä ja tulevat ilmeisiksi jokapäiväisessä elämässämme. Mutta jokaisella kolikolla on kaksi puolta. Ohut raja tottumuksen ja pakotuksen välillä Jos olet seurannut mukana, voit jo kertoa, että putkijärjestelmillä on pimeä puoli. Tottumusten muodostuksessa on kyse johdonmukaisuudesta toistuvan tavoitteen kanssa. Pakko on kuitenkin johdonmukaista työtä sellaisen tavoitteen eteen, jota ei enää tarvita, mutta jota pidetään kiinni pelosta tai paineesta. Se on veitsen ohut viiva. Harjaat hampaasi joka aamu ajattelematta; se on automaattista ja vaistomaista, ja sillä on selkeä tavoite hyvä hengitys. Se on putki, joka muodostaa hyvän tavan. Eettinen putkijärjestelmä antaa käyttäjille tilaa hengittää. Jos et jostain syystä harjaa aamulla, voit harjata keskipäivällä. Epätäydellisyys on sallittua ilman pelkoa pitkän työn menettämisestä. Pakko kulkee päinvastaista reittiä, jolloin putki saa sinut ahdistuneeksi, tunnet syyllisyyttä tai jopa uupuneita, ja joskus tuntuu, että et ole saavuttanut mitään, kaikesta huolimattatyötä. Et toimi siksi, että haluat, vaan koska olet alitajuisesti peloissasi näkeväsi edistymisesi nollaavan. Joku jopa kuvaili tätä täydellisesti: "Tunsin, että petin, mutta en yksinkertaisesti välittänyt. En ole mitään ilman sarjaani". Tämä osoittaa, kuinka äärimmäiset pitoviivat voivat olla yksilössä. Siinä määrin, että käyttäjät alkavat sitoa itsearvoaan mielivaltaiseen mittariin alkuperäisen tavoitteen tai syyn sijaan. Sarjasta tulee sitä, mitä he ovat, ei vain sitä, mitä he tekevät. Hyvin suunnitellun eettisen putkijärjestelmän tulisi tuntua käyttäjälle rohkaisuna, ei painostukselta tai velvoitteelta. Tämä liittyy sisäisen ja ulkoisen motivaation tasapainoon. Ulkoinen motivaatio (ulkoiset palkinnot, rangaistuksen välttäminen) saattaa saada käyttäjät alkuun, mutta sisäinen motivaatio (tehtävän suorittaminen henkilökohtaisen tavoitteen vuoksi, kuten espanjan kielen oppiminen, koska todella haluat kommunikoida rakkaansa kanssa) on vahvempi pitkäaikaisessa sitoutumisessa. Hyvän järjestelmän tulisi pyrkiä kohti sisäistä motivaatiota ulkoisten elementtien huolellisella käytöllä, eli muistuttamaan käyttäjiä siitä, kuinka pitkälle he ovat päässeet, ei uhkailla heitä sillä, mitä he saattavat menettää. Jälleen, se on hieno viiva. Yksinkertainen testi putkijärjestelmää suunniteltaessa on todellakin kestää jonkin aikaa ja miettiä, ansaitsevatko tuotteesi rahaa myymällä ratkaisuja tuotteesi aiheuttamaan ahdistukseen. Jos kyllä, on suuri mahdollisuus, että hyödynnät käyttäjiä. Joten seuraava kysymys on: Jos päätän käyttää sarjaa, miten suunnittelen sen tavalla, joka aidosti auttaa käyttäjiä saavuttamaan tavoitteensa? Good Streak System Designin käyttöliittymä Uskon, että tässä useimmat projektit joko naulaavat tehokkaan putkijärjestelmän tai sotkevat sen kokonaan. Käydään läpi joitain hyvän putkisuunnittelun UX-periaatteita. Pidä se vaivattomana Olet luultavasti kuullut tämän ennenkin, ehkä kirjoista, kuten Atomic Habits, mutta on syytä mainita, että yksi helpoimmista tavoista luoda tottumuksia on tehdä toiminnasta pieni ja helppo. Tämä on samanlainen kuin kykytekijä, josta keskustelimme Foggin käyttäytymismallissa. Kaikkien putkien suunnittelun ensimmäisen säännön tulisi olla vaaditun toiminnan tekeminen mahdollisimman pieneksi inhimillisesti mahdollista samalla, kun edistystä saavutetaan. Jos päivittäisen toiminnan suorittaminen vaatii tahdonvoimaa, se ei kestä viittä päivää. Miksi? Et voi olla motivoitunut viitenä päivänä peräkkäin. Esimerkki: Jos käytät meditaatiosovellusta, sinun ei tarvitse pakottaa käyttäjiä käymään läpi 20 minuutin istuntoa vain säilyttääksesi sarjan. Yritä sen sijaan minuuttia, ehkä jopa niinkin pientä kuin kolmekymmentä sekuntia. Kuten sanonta kuuluu, pienet vesipisarat tekevät mahtavan valtameren). Pienistä ponnisteluista tulee ajan kanssa suuria saavutuksia. Sen pitäisi olla tavoite: kitkan poistaminen, varsinkin kun hetki saattaa olla vaikea. Kun käyttäjät ovat stressaantuneita tai ylikuormituneita, kerro heille, että pelkkä ilmestyminen, jopa muutaman sekunnin ajaksi, lasketaan vaivannäöksi. Anna selkeää visuaalista palautetta Ihminen on luonnostaan visuaalinen. Useimmiten meidän täytyy nähdä jotain uskoaksemme; on tarpeen visualisoida asiat ymmärtääksesi niitä paremmin ja laittaaksesi asiat perspektiiviin. Tästä syystä viivakuvioissa käytetään usein visuaalisia elementtejä, kuten kaavioita, valintamerkkejä, etenemisrenkaita ja ruudukoita, visualisoimaan vaivaa. Katso GitHubin panoskaavio. Se on yksinkertainen visualisointi johdonmukaisuudesta. Silti kehittäjät hengittävät sitä sisään kuin happea.

Tärkeintä ei ole saada putkijärjestelmästä tuntumaan abstraktilta. Sen pitäisi tuntua todelliselta ja ansaitulta. Esimerkiksi Duolingo ja Applen Fitness-harjoitusrenkaat käyttävät puhdasta animaatiota sarjan päätyttyä, ja GitHub näyttää historiallisia tietoja käyttäjän johdonmukaisuudesta ajan mittaan.

Käytä hyvää ajoitusta Mainitsin aiemmin, että ihmiset ovat yleensä luonteeltaan unohtavia ja että kehotukset voivat auttaa ylläpitämään vauhtia eteenpäin. Ilman kehotteita useimmat uudet käyttäjät unohtavat jatkaa. Elämästä voi tulla kiireistä, motivaatio katoaa ja asioita tapahtuu. Jopa pitkäaikaiset käyttäjät hyötyvät kehotteista, vaikka useimmiten ne on jo lukittu tottumussilmukan sisään. Siitä huolimatta jopa sitoutunein ihminen voi vahingossa jättää päivän väliin. Putkijärjestelmäsi tarvitsee ehdottomasti muistutuksia. Eniten käytetyt kehotteet ovat push-ilmoitukset. Ajoitus on todella tärkeä, kun työskentelet push-ilmoitusten kanssa. Sovelluksen tyypillä on myös väliä. Ilmoituksen lähettäminen kello 9, jossa sanotaan "Et ole harjoitellut tänään" on vain outoa oppimissovellukselle, koska monilla on asioita tehtävänä päivänä ennen kuin he edes ajattelevat oppitunnin suorittamista. Jos puhumme kuitenkin kuntosovelluksesta, seon kohtuullinen ja ehkä jopa odotetaan muistuttavan aikaisemmin päivällä. Push-ilmoitukset vaihtelevat huomattavasti sovellusluokittain. Esimerkiksi kuntosovellukset näkevät enemmän sitoutumista varhain aamulla (7–8.00), kun taas tuottavuussovellukset saattavat toimia paremmin aikaisin keskipäivällä. Tärkeintä on A/B-testaa sovelluksesi ajoitus käyttäjien käyttäytymisen perusteella sen sijaan, että oletat asioiden olevan yksi koko. Se, mikä toimii meditaatiosovelluksessa, ei välttämättä toimi koodausseurantaohjelmassa. Muita kehotusmenetelmiä ovat punaiset pisteet sovelluskuvakkeessa ja jopa sovelluswidgetit. Tutkimukset vaihtelevat, mutta keskivertoihminen avaa laitteensa lukituksen 50-150 kertaa päivässä (PDF). Jos käyttäjä näkee sovelluksessa tai widgetissä punaisen pisteen, joka ilmaisee virtaviivan joka kerta, kun hän avaa puhelimensa lukituksen, se lisää sitoutumista. Älä vain liioittele sitä; kehotteen tulee toimia muistutuksena, ei nalkutuksena. Juhli virstanpylväitä Putkijärjestelmän tulisi pyrkiä juhlimaan virstanpylväitä herättääkseen tunteita uudelleen, erityisesti käyttäjillä, jotka ovat syvällä sarjassa. Kun käyttäjä saavuttaa 7., 30., 50., 100., 365. päivän, sinun pitäisi tehdä siitä iso juttu. Tunnustele saavutuksia – erityisesti pitkäaikaisille käyttäjille.

Kuten näimme aiemmin, Duolingo keksi tämän ja toteutti animoidun grafiikan, joka juhlii virstanpylväitä konfetilla. Jotkut alustat tarjoavat jopa merkittäviä bonuspalkkioita, jotka vahvistavat käyttäjien ponnistelut. Tämä voi olla hyödyllistä sovelluksille, joten käyttäjät yleensä jakavat virstanpylväänsä julkisesti sosiaalisessa mediassa. Toinen etu on ennakointi, joka tulee ennen virstanpylväiden saavuttamista. Se ei ole vain sarjan pitämistä hengissä loputtomasti; käyttäjillä on jotain mitä odottaa. Käytä armon mekanismeja Elämä on arvaamatonta. Ihmiset hajallaan. Jokaisen hyvän putkijärjestelmän pitäisi odottaa epätäydellisyyttä. Yksi suurimmista psykologisista uhkista putkijärjestelmälle on kova nollaus vain yhden ohitetun päivän jälkeen. "Eettisen" putkijärjestelmän pitäisi tarjota käyttäjälle löysyyttä. Oletetaan, että sinulla on 90 päivän shakkioppimisjakso. Olet ollut johdonmukainen kolme hyvää kuukautta, ja eräänä päivänä puhelimesi kuolee matkan aikana, ja juuri niin 90 muuttuu 0:ksi – kaikki, kaikki se vaiva, pyyhitään pois ja edistys katoaa. Käyttäjä voi olla täysin tuhoutunut. Ajatus sen rakentamisesta uudelleen tyhjästä on niin masentavaa, että vaivannäkö ei ole sen arvoista. Pahimmillaan käyttäjä saattaa hylätä sovelluksen, kun hän tuntee itsensä epäonnistuneeksi. Harkitse armomekanismin lisäämistä sarjajärjestelmääsi:

Streak FreezeAnna käyttäjien tarkoituksella jättää päivän väliin ilman rangaistuksia. LisäaikaAnna muutama tunti (2–3) normaalin määräajan jälkeen ennen nollauksen käynnistämistä. Decay-mallit Hard resetin sijaan putki pienenee pienellä määrällä, esim. 10 päivää vähennetään putkesta per jäänyt päivä.

Käytä rohkaisevaa sävyä Verrataan kahta käyttäjille näkyvää viestiä, kun putki katkeaa:

"Hävisit 42 päivän sarjasi. Aloita alusta." "Olet paikalla 42 päivää putkeen. Se on uskomatonta edistystä! Haluatko kokeilla sitä uudelleen?"

Molemmat välittävät samaa tietoa, mutta emotionaalinen vaikutus on erilainen. Ensimmäinen viesti todennäköisimmin saisi käyttäjän tuntemaan itsensä masentuneeksi ja saattaisi hänet lopettamaan. Toinen viesti juhlistaa jo saavutettua ja kannustaa käyttäjää hellästi yrittämään uudelleen. Streak Systemsin suunnitteluhaasteet Ennen kuin siirrymme putkijärjestelmän rakentamisen teknisiin yksityiskohtiin, sinun tulee olla tietoinen haasteista, joita saatat kohdata. Asiat voivat olla monimutkaisia, kuten arvata saattaa. Aikavyöhykkeiden käsittely On syytä, miksi ajan ja päivämäärän käsittely on yksi vaikeimmista käsitteistä, joita kehittäjät käsittelevät. Pohdittavaa on muotoilua, kansainvälistymistä ja paljon muuta. Saanen kysyä sinulta tätä: Mikä lasketaan päiväksi? Tiedämme, että maailma toimii eri aikavyöhykkeillä, ja ikään kuin se ei olisi tarpeeksi, joillakin alueilla on kesäaika (DST), joka tapahtuu kahdesti vuodessa. Mistä edes aloitat näiden reunatapausten käsittelyn? Mikä lasketaan huomisen "alkuksi"? Jotkut kehittäjät yrittävät välttää tämän käyttämällä yhtä keskitettyä aikavyöhykettä, kuten UTC. Joillekin käyttäjille tämä antaisi oikeat tulokset, mutta joillekin se voi poiketa tunnilla, kahdella tunnilla tai enemmän. Tämä epäjohdonmukaisuus pilaa käyttökokemuksen. Käyttäjät eivät välitä siitä, miten käsittelet aikaa kulissien takana. he odottavat vain, että jos he suorittavat sarjatoiminnon klo 23.40, sen pitäisi rekisteröityä juuri tuohon aikaan heidän kontekstissaan. Sinun tulisi määrittää "yksi päivä" käyttäjän paikallisen aikavyöhykkeen perusteella, ei palvelimen ajan. Toki voit ottaa helpollareititä ja nollaa sarjat maailmanlaajuisesti kaikille käyttäjille keskiyöllä UTC, mutta luot erittäin paljon epäoikeudenmukaisuutta. Kalifornialaisella on aina kahdeksan ylimääräistä tuntia tehtävänsä suorittamiseen kuin Lontoossa asuvalla. Se on epäoikeudenmukainen suunnitteluvirhe, joka rankaisee tiettyjä käyttäjiä heidän sijainnistaan. Entä jos kyseinen henkilö Lontoossa vain vierailee, suorittaa tehtävän ja palaa sitten toiselle aikavyöhykkeelle? Yksi tehokas ratkaisu näihin kaikkiin on pyytää käyttäjiä asettamaan aikavyöhykkeensä nimenomaisesti käyttöönoton aikana (mieluiten ensimmäisen todennuksen jälkeen). On hyvä mainita, että aikavyöhyketietojen antamista käytetään vain sovelluksen edistymisen tarkkaan seurantaan sen sijaan, että niitä käytettäisiin henkilökohtaisina tunnistetietoina. Ja se on toinen hyvä idea tehdä siitä muuttuva asetus. Ehdotan, että kukaan välttää aikavyöhykelogiikan suoraa käsittelyä sovelluksessa. Käytä hyväksi havaittuja päivämääräkirjastoja, kuten Moment.js tai pytz (Python) jne. Näin monimutkaisen asian pyörää ei tarvitse keksiä uudelleen. Missed Days and Edge -kotelot Toinen haaste, josta sinun pitäisi huolehtia, ovat hallitsemattomat reunatapaukset, kuten käyttäjien ylinukkuminen, palvelimen seisokit, viiveet, verkkohäiriöt ja niin edelleen. Armomekanismien ajatuksen käyttäminen, kuten ne, joista keskustelimme aiemmin, voi auttaa. Kahden tunnin armonaika saattaa auttaa sekä käyttäjää että kehittäjää siinä mielessä, että käyttäjiä ei rangaista tiukasti hallitsemattomista elämänolosuhteista. Kehittäjälle armoikkunat ovat hyödyllisiä hallitsemattomina hetkinä, kun palvelin kaatuu keskellä yötä. Ennen kaikkea älä koskaan luota asiakkaaseen. Vahvista aina palvelinpuolella. Palvelimen pitäisi olla ainoa totuuden lähde. Huijaamisen ehkäisy Jälleen, en voi korostaa tätä tarpeeksi: Varmista, että validoit kaiken palvelinpuolen. Käyttäjät ovat ihmisiä, ja ihmiset saattavat huijata, jos heille annetaan mahdollisuus. Se on väistämätöntä. Voit kokeilla:

Kaikkien toimintojen tallentaminen UTC-aikaleimoilla. Asiakas voi lähettää paikallisen aikansa, mutta palvelin voi välittömästi muuntaa sen UTC:ksi ja vahvistaa palvelimen aikaa vastaan. Tällä tavalla, jos asiakkaan aikaleima on epäilyttävän kaukana, järjestelmä voi hylätä sen virheenä ja käyttöliittymä voi vastata vastaavasti. Tapahtumapohjaisen seurannan käyttäminen. Toisin sanoen tallenna jokaisesta toiminnosta tietue metatiedon kera, mukaan lukien tiedot, kuten käyttäjätunnus, suoritetun toiminnon tyyppi sekä aikaleima ja aikavyöhyke. Tämä auttaa validoinnissa.

Streak System -moottorin rakentaminen Tämä ei ole koodin opetusohjelma, joten vältän koodijoukon pudottamista sinuun. Pidän tämän käytännöllisenä ja kuvailen, kuinka asiat yleensä käyttävät putkijärjestelmän moottoria arkkitehtuurin, virtauksen ja luotettavuuden osalta. Ydinarkkitehtuuri Kuten olen useaan otteeseen sanonut, tee palvelimesta ainoa totuuden lähde putkitiedoille. Arkkitehtuuri voi mennä palvelimella näin:

Tallenna jokaisen käyttäjän tiedot tietokantaan. Tallenna nykyinen juovavarasto (oletusarvo 0) kokonaislukuna. Tallenna aikavyöhykeasetus, eli IANA-aikavyöhykemerkkijono (joko epäsuorasti paikallisesta aikaleimasta tai nimenomaisesti pyytämällä käyttäjää valitsemaan aikavyöhyke). Esimerkiksi "Amerikka/New_York". Käsittele kaikkea logiikkaa määrittääksesi, jatkuuko vai katkeaako aikavyöhyketarkistus, joka on suhteessa käyttäjän paikalliseen aikavyöhykkeeseen.

Sillä välin asiakaspuolella:

Näytä nykyinen sarja, joka yleensä haetaan palvelimelta. Lähetä metatietojen muodossa tehty toiminto palvelimelle varmistaaksesi, suorittiko käyttäjä todella pätevän sarjatoiminnon. Anna visuaalista palautetta palvelimen vastausten perusteella.

Lyhyesti sanottuna aivot ovat palvelimella ja asiakas on näyttötarkoituksiin ja tapahtumien lähettämiseen. Tämä säästää paljon vikoja ja reunatapauksia sekä helpottaa päivityksiä ja korjauksia. Looginen virtaus Simuloillaan esittelyä siitä, kuinka minimaalisen tehokkaan viivajärjestelmän moottori toimisi, kun käyttäjä suorittaa toiminnon:

Käyttäjä suorittaa kelvollisen sarjatoiminnon. Asiakas lähettää tapahtuman palvelimelle metatietona. Tämä voisi olla "Käyttäjä X suoritti toiminnon Y aikaleimalla Z". Palvelin vastaanottaa tämän tapahtuman ja suorittaa perustarkistuksen. Onko tämä oikea käyttäjä? Onko ne todennettu? Onko toimenpide pätevä? Onko aikavyöhyke johdonmukainen? Jos tämä menee ohi, palvelin hakee käyttäjän nauhatiedot tietokannasta. Muunna sitten vastaanotettu toimintoaikaleima käyttäjän paikalliseksi aikavyöhykkeeksi. Anna palvelimen verrata kalenteripäiviä (ei aikaleimoja) käyttäjän paikallisella aikavyöhykkeellä: Jos se on sama päivä, toiminto on tarpeeton, eikä siinä ole muutoksiaputki. Jos se on seuraavana päivänä, putki pitenee ja kasvaa yhdellä. Jos taukoa on enemmän kuin yksi päivä, putki katkeaa. Tässä voit kuitenkin soveltaa armomekaniikkaa. Jos lisätoimintoa ei käytetä, palauta putki arvoon 1.

Jos päätät tallentaa virstanpylvässaavutuksia koskevat historialliset tiedot, päivitä muuttujat, kuten "pisin sarja" tai "aktiivisten päivien kokonaismäärä". Tämän jälkeen palvelin päivittää tietokannan ja vastaa asiakkaalle. Jotain tällaista:

{ "current_streak": 48, "pisin_putki": 50, "total_active_days": 120, "streak_extended": totta, }

Lisätoimenpiteenä palvelimen tulee joko yrittää uudelleen tai hylätä ja ilmoittaa asiakkaalle, jos jokin epäonnistuu prosessin aikana. Rakennus joustavuutta varten Kuten aiemmin mainittiin, bugien tai palvelimen seisokkien takia putken menetys on kauhea käyttökokemus, eivätkä käyttäjät odota jäävänsä siihen. Näin ollen putkijärjestelmässäsi pitäisi olla suojakeinoja näitä skenaarioita varten. Jos palvelin on pois käytöstä huollon vuoksi (tai mistä tahansa syystä), harkitse tilapäisen lisätuntien sallimista sen korjaamiseksi, jotta toiminnot voidaan lähettää myöhässä ja silti ottaa huomioon. Voit myös ilmoittaa käyttäjille, varsinkin jos tilanne voi vaikuttaa meneillään olevaan sarjaan. Huomautus: Luo järjestelmänvalvojan takaovi, jossa tiedot voidaan palauttaa manuaalisesti. Virheet ovat väistämättömiä, ja jotkut käyttäjät soittavat sovelluksellesi tai pyytävät tukea, jos heidän sarjansa katkesi syystä, jota he eivät voi hallita. Sinun pitäisi pystyä palauttamaan juovat manuaalisesti, jos käyttäjä on tutkimuksen jälkeen oikeassa. Johtopäätös Yksi asia on selvä: juovat ovat todella voimakkaita, koska ihmisen psykologia toimii perustasolla. Paras putkijärjestelmä on se, jota käyttäjät eivät ajattele tietoisesti. Siitä on tullut välittömien tulosten tai näkyvän edistyksen rutiini, kuten hampaiden harjaus, josta tulee säännöllinen tapa. Ja sanon vain sen: Kaikki tuotteet eivät tarvitse viivajärjestelmää. Pitäisikö sinun todella pakottaa johdonmukaisuutta vain siksi, että haluat päivittäisiä aktiivisia käyttäjiä? Vastaus voi hyvinkin olla "ei".

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