Saya pasti anda pernah mendengar tentang coretan atau menggunakan apl dengannya. Tetapi pernah terfikir mengapa coretan begitu popular dan berkuasa? Nah, ada satu perkara yang jelas bahawa aplikasi mahukan perhatian anda sebanyak mungkin, tetapi selain itu, adakah anda tahu bahawa apabila aplikasi pembelajaran popular Duolingo memperkenalkan widget iOS untuk memaparkan coretan, komitmen pengguna melonjak sebanyak 60%. Enam puluh peratus ialah perubahan besar dalam tingkah laku dan menunjukkan cara corak "coretan" boleh digunakan untuk meningkatkan penglibatan dan mendorong penggunaan. Pada asasnya, coretan ialah bilangan hari berturut-turut pengguna melengkapkan aktiviti tertentu. Sesetengah orang juga mentakrifkannya sebagai tabiat "gamified" atau metrik yang direka untuk menggalakkan penggunaan yang konsisten. Tetapi coretan melangkaui metrik atau rekod dalam apl; ia lebih psikologi daripada itu. Naluri manusia mudah dipengaruhi dengan faktor yang betul. Lihatlah tiga faktor ini: kemajuan, kebanggaan, dan ketakutan untuk terlepas (biasa dipanggil FOMO). Apakah persamaan semua ini? usaha. Lebih banyak usaha yang anda lakukan untuk sesuatu, lebih banyak ia membentuk identiti anda, dan itulah cara coretan melintasi dunia psikologi tingkah laku. Kini, dengan kuasa yang besar datang tanggungjawab yang besar, dan kerana itu, terdapat sisi gelap untuk coretan. Dalam artikel ini, kita akan membincangkan psikologi, UX dan prinsip reka bentuk di sebalik membina sistem coretan yang berkesan. Kita akan melihat (1) sebab otak kita hampir secara naluri bertindak balas terhadap aktiviti coretan, (2) cara mereka bentuk coretan dengan cara yang benar-benar membantu pengguna, dan (3) kerja teknikal yang terlibat dalam membina corak coretan. Psikologi di sebalik coretan Untuk mereka bentuk dan membina sistem coretan yang berkesan, kita perlu memahami cara ia sejajar dengan cara otak kita disambungkan. Seperti, apakah yang menjadikannya begitu berkesan sehingga kita merasakan dedikasi yang sangat kuat untuk melindungi coretan kita? Terdapat tiga prinsip psikologi yang menarik dan didokumentasikan dengan baik yang menyokong perkara yang menjadikan coretan begitu kuat dan ketagihan. Keengganan Kehilangan Ini mungkin kuasa terkuat di sebalik coretan. Saya mengatakan ini kerana kebanyakan masa, anda hampir tidak dapat mengelakkan ini dalam hidup. Fikirkan seperti ini: Jika rakan memberi anda $100, anda pasti gembira. Tetapi jika anda kehilangan $100 daripada dompet anda, itu akan lebih menyakitkan. Berat emosi bagi situasi tersebut tidak sama. Kehilangan lebih menyakitkan daripada keuntungan yang dirasakan baik. Mari kita lanjutkan dan katakan bahawa saya memberi anda $100 dan meminta anda bermain perjudian. Terdapat 50% peluang anda memenangi $100 lagi dan 50% peluang anda kehilangan $100 asal. Adakah anda akan mengambilnya? saya tidak akan. Kebanyakan orang tidak akan. Itulah keengganan kerugian. Jika difikirkan, ia adalah logik, ia boleh difahami, ia adalah manusia. Konsep di sebalik keengganan kerugian ialah kita merasakan kesakitan kehilangan sesuatu dua kali lebih banyak daripada keseronokan memperoleh sesuatu yang sama nilainya. Dari segi psikologi, kerugian lebih lama daripada keuntungan. Anda mungkin melihat bagaimana ini berkaitan dengan coretan. Untuk membina coretan yang ketara, ia memerlukan usaha; apabila coretan tumbuh, motivasi di belakangnya mula pudar; atau lebih tepat, ia mula menjadi sekunder. Berikut ialah contoh: Katakan rakan anda mempunyai tiga hari berturut-turut menutup "Getaran Bergerak" mereka pada Apple Watch mereka. Mereka hampir tiada apa-apa kerugian selain daripada ingin mencapai matlamat mereka dan konsisten. Pada masa yang sama, anda mempunyai rentetan 219 hari yang mengagumkan. Kemungkinan anda terperangkap oleh ketakutan kehilangannya. Anda berkemungkinan besar tidak memikirkan pencapaian pada ketika ini; ia lebih kepada melindungi usaha anda yang dilaburkan, dan itu adalah mengelakkan kerugian. Duolingo menerangkan cara keengganan kehilangan menyumbang kepada keengganan pengguna untuk memecahkan rentetan yang panjang, walaupun pada hari paling malas mereka. Dalam satu cara, coretan boleh berubah menjadi kebiasaan apabila keengganan kehilangan mereda. Model Gelagat Fogg (B = MAP) Sekarang setelah kita memahami ketakutan kehilangan usaha yang dilaburkan dalam coretan yang lebih panjang, soalan lain ialah: Apa yang membuatkan kita melakukan perkara itu di tempat pertama, hari demi hari, walaupun sebelum coretan itu menjadi besar? Itulah maksud Model Gelagat Fogg. Ia agak mudah. Tingkah laku (B) hanya berlaku apabila tiga faktor — Motivasi (M), Keupayaan (A), dan Prompt (P) — sejajar pada masa yang sama. Oleh itu, persamaan B=MAP. Jika mana-mana faktor ini, walaupun satu, tiada pada masa itu, tingkah laku itu tidak akan berlaku. Jadi, untuk sistem coretan menjadi cekap dan berulang, ketiga-tiga faktor mesti ada: MotivasiIni rapuh dan bukan sesuatu yang sentiasa ada. Terdapat hari apabila andabersemangat untuk belajar bahasa Sepanyol, dan hari-hari anda tidak merasakan sedikit pun kemahuan untuk mempelajari bahasa itu. Motivasi dengan sendirinya untuk membina tabiat tidak boleh dipercayai dan perjuangan yang kalah sejak hari pertama. KeupayaanUntuk mengimbangi batasan motivasi, keupayaan adalah kritikal. Dalam konteks ini, kebolehan bermaksud kemudahan tindakan, iaitu, usaha itu sangat mudah sehingga tidak realistik untuk mengatakan ia tidak mungkin. Kebanyakan apl sengaja menggunakan ini. Apple Fitness hanya memerlukan anda berdiri selama satu minit dalam sejam untuk mendapatkan tanda ke arah matlamat Stand anda. Duolingo hanya memerlukan satu pelajaran yang lengkap. Tugas-tugas ini tidak memerlukan banyak usaha. Halangannya sangat rendah sehinggakan walaupun pada hari-hari terburuk anda, anda boleh melakukannya. Tetapi gabungan usaha rentetan yang berterusan adalah di mana idea kehilangan rentetan itu bermula. PromptInilah yang melengkapkan persamaan. Manusia secara semula jadi pelupa, jadi ya, keupayaan boleh membawa kita 90% di sana. Tetapi gesaan mengingatkan kita untuk bertindak. Coretan berterusan mengikut reka bentuk, jadi pengguna perlu sentiasa diingatkan untuk bertindak. Untuk melihat betapa kuatnya gesaan, Duolingo melakukan ujian A/B untuk melihat sama ada lencana merah kecil pada ikon apl meningkatkan penggunaan yang konsisten. Ia menghasilkan peningkatan 6% dalam pengguna aktif harian. Hanya lencana merah. Had Model Semua ini dikatakan, terdapat had kepada model Fogg di mana pengkritik dan penyelidikan moden telah menyedari bahawa reka bentuk yang terlalu bergantung pada gesaan, seperti pemberitahuan agresif, berisiko menimbulkan keletihan mental. Pemberitahuan berterusan dan lebih masa boleh menyebabkan pengguna terkedu. Jadi, berhati-hati untuk itu. Kesan Zeigarnik Apakah perasaan anda apabila anda meninggalkan tugasan projek separuh siap? Itu menjengkelkan ramai orang kerana tugas yang belum selesai menduduki lebih banyak ruang mental daripada perkara yang kita selesaikan. Apabila sesuatu selesai dan hilang, kita cenderung melupakannya. Apabila sesuatu dibiarkan, ia akan membebankan fikiran kita. Inilah sebabnya mengapa produk digital menggunakan penunjuk kemajuan buatan, seperti bar penyelesaian profil Upwork, untuk memberitahu pengguna bahawa profil mereka hanya "60% siap". Ia mendorong pengguna untuk menyelesaikan apa yang mereka mulakan.

Mari lihat contoh lain. Anda mempunyai lima tugasan dalam apl senarai tugasan, dan pada penghujung hari, anda hanya menyemak empat tugasan sebagai selesai. Ramai di antara kita akan berasa tidak berjaya kerana satu tugas yang belum selesai itu. Itu, di sana, adalah kesan Zeigarnik. Kesan Zeigarnik telah ditunjukkan oleh ahli psikologi Bluma Zeigarnik, yang menggambarkan bahawa kita cenderung untuk mengekalkan tugas yang tidak lengkap aktif dalam ingatan kita lebih lama daripada tugas yang telah selesai. Corak coretan secara semula jadi memanfaatkan ini dalam reka bentuk UX. Katakan anda berada pada hari ke-63 pembelajaran berturut-turut. Pada ketika itu, anda berada dalam corak perniagaan yang belum selesai yang berterusan. Otak anda jarang melupakannya kerana ia berada di belakang fikiran anda. Pada ketika ini, otak anda menjadi yang menghantar pemberitahuan kepada anda. Apabila anda menggabungkan kuasa psikologi ini, anda mula benar-benar memahami mengapa coretan bukan sekadar ciri aplikasi biasa; mereka mampu membentuk semula tingkah laku manusia. Tetapi di suatu tempat di sepanjang baris - saya tidak dapat menyatakan dengan tepat bila, kerana ia berbeza untuk semua orang - perkara mencapai tahap di mana coretan beralih daripada "seronok" kepada sesuatu yang anda rasa anda tidak mampu untuk kehilangan. Anda tidak mahu usaha selama 58 hari menjadi sia-sia, bukan? Itulah yang menjadikan sistem coretan berkesan. Jika dilakukan dengan betul, coretan membantu pengguna membina tabiat menakjubkan yang mencapai matlamat. Ia boleh membaca setiap hari atau memukul gim secara konsisten. Tindakan berulang ini (kadang-kadang kecil) digabungkan dari masa ke masa dan menjadi jelas dalam kehidupan seharian kita. Tetapi terdapat dua sisi untuk setiap syiling. Garis Nipis Antara Tabiat Dan Paksaan Jika anda telah mengikutinya, anda sudah boleh mengetahui bahawa terdapat sisi gelap pada sistem coretan. Pembentukan tabiat adalah mengenai konsistensi dengan matlamat yang berulang. Keterpaksaan, bagaimanapun, adalah ketekalan bekerja pada matlamat yang tidak lagi diperlukan tetapi dipegang kerana ketakutan atau tekanan. Ia adalah garis nipis pisau cukur. Anda memberus gigi setiap pagi tanpa berfikir; ia adalah automatik dan naluri, dengan matlamat yang jelas untuk mempunyai nafas yang baik. Itulah coretan yang membentuk tabiat yang baik. Sistem coretan beretika memberi ruang kepada pengguna untuk bernafas. Jika, atas sebab tertentu, anda tidak berus pada waktu pagi, anda boleh memberus pada waktu tengah hari. Ketidaksempurnaan dibenarkan tanpa rasa takut kehilangan usaha yang panjang. Paksaan mengambil jalan yang bertentangan, di mana rentetan membuat anda cemas, anda berasa bersalah atau bahkan keletihan, dan kadang-kadang, anda berasa seperti anda tidak mencapai apa-apa, walaupun andakerja. Anda bertindak bukan kerana anda mahu, tetapi kerana anda secara tidak sedar takut melihat kemajuan anda ditetapkan semula kepada sifar. Seseorang bahkan menyifatkan ini dengan sempurna, "Saya merasakan bahawa saya menipu, tetapi langsung tidak peduli. Saya bukan apa-apa tanpa coretan saya". Ini menunjukkan coretan penahanan melampau boleh berlaku pada individu. Sehingga tahap pengguna mula mengikat nilai diri mereka pada metrik sewenang-wenangnya dan bukannya matlamat atau sebab asal mereka memulakan rentetan itu di tempat pertama. Corak itu menjadi siapa mereka, bukan hanya apa yang mereka lakukan. Sistem coretan beretika yang direka dengan baik harus berasa seperti galakan kepada pengguna, bukan tekanan atau kewajipan. Ini berkaitan dengan keseimbangan motivasi intrinsik dan ekstrinsik. Motivasi ekstrinsik (ganjaran luaran, mengelakkan hukuman) mungkin membuatkan pengguna bermula, tetapi motivasi intrinsik (melakukan tugas untuk matlamat peribadi seperti belajar bahasa Sepanyol kerana anda benar-benar ingin berkomunikasi dengan orang tersayang) adalah lebih kuat untuk penglibatan jangka panjang. Sistem yang baik harus menjurus kepada motivasi intrinsik dengan penggunaan elemen ekstrinsik yang berhati-hati, iaitu, mengingatkan pengguna tentang sejauh mana mereka telah datang, bukan mengancam mereka dengan apa yang mereka mungkin hilang. Sekali lagi, ia adalah garis halus. Ujian mudah apabila mereka bentuk sistem coretan adalah untuk mengambil sedikit masa dan memikirkan sama ada produk anda menghasilkan wang dengan menjual penyelesaian kepada kebimbangan yang dihasilkan oleh produk anda. Jika ya, terdapat kemungkinan besar anda mengeksploitasi pengguna. Jadi soalan seterusnya ialah, Jika saya memilih untuk menggunakan coretan, bagaimanakah saya mereka bentuknya dengan cara yang benar-benar membantu pengguna mencapai matlamat mereka? UX Reka Bentuk Sistem Streak Baik Saya percaya di sinilah kebanyakan projek sama ada memaku sistem coretan yang berkesan atau mengacaukannya sepenuhnya. Mari kita lihat beberapa prinsip UX bagi reka bentuk coretan yang baik. Pastikan Ia Mudah Anda mungkin pernah mendengar perkara ini sebelum ini, mungkin daripada buku seperti Atomic Habits, tetapi perlu dinyatakan bahawa salah satu cara paling mudah untuk membentuk tabiat adalah dengan menjadikan tindakan itu kecil dan mudah. Ini sama dengan faktor keupayaan yang kita bincangkan daripada Model Tingkah Laku Fogg. Peraturan pertama bagi mana-mana reka bentuk coretan hendaklah membuat tindakan yang diperlukan sekecil mungkin secara manusia sementara masih mencapai kemajuan. Jika tindakan harian memerlukan kemahuan untuk diselesaikan, tindakan itu tidak akan melepasi lima hari. kenapa? Anda tidak boleh bermotivasi lima hari berturut-turut. Contoh contoh: Jika anda menjalankan apl meditasi, anda tidak perlu membuat pengguna melalui sesi 20 minit hanya untuk mengekalkan coretan. Cuba satu minit, malah mungkin sesuatu yang sekecil tiga puluh saat, sebaliknya. Bak kata pepatah, titisan air yang kecil menjadikan lautan luas). Usaha kecil disusun menjadi pencapaian besar dengan masa. Itu sepatutnya menjadi matlamat: menghilangkan geseran, terutamanya apabila masa itu mungkin sukar. Apabila pengguna tertekan atau terharu, beritahu mereka bahawa hanya muncul, walaupun untuk beberapa saat, dikira sebagai usaha. Berikan Maklum Balas Visual yang Jelas Manusia adalah visual secara semula jadi. Selalunya, kita perlu melihat sesuatu untuk dipercayai; terdapat keperluan untuk memvisualisasikan sesuatu untuk memahaminya dengan lebih baik dan meletakkan sesuatu dalam perspektif. Inilah sebabnya mengapa corak coretan sering menggunakan elemen visual, seperti graf, tanda semak, gelang kemajuan dan grid, untuk menggambarkan usaha. Lihat graf sumbangan GitHub. Ia adalah visualisasi mudah konsistensi. Namun pemaju menghirupnya seperti oksigen.

Kuncinya adalah untuk tidak membuat sistem coretan terasa abstrak. Ia sepatutnya berasa nyata dan diperolehi. Sebagai contoh, gelang aktiviti Duolingo dan Kecergasan Apple menggunakan reka bentuk animasi yang bersih apabila selesai coretan, dan GitHub menunjukkan data sejarah konsistensi pengguna dari semasa ke semasa.

Gunakan Masa yang Baik Saya telah menyatakan sebelum ini bahawa manusia pada umumnya bersifat pelupa, dan gesaan itu boleh membantu mengekalkan momentum ke hadapan. Tanpa gesaan, kebanyakan pengguna baharu terlupa untuk meneruskan. Kehidupan boleh menjadi sibuk, motivasi hilang, dan perkara berlaku. Malah pengguna lama mendapat manfaat daripada gesaan, walaupun kebanyakan masa, mereka sudah terkunci di dalam gelung tabiat. Walau bagaimanapun, walaupun orang yang paling komited boleh terlepas satu hari secara tidak sengaja. Sistem coretan anda pastinya memerlukan peringatan. Peringatan segera yang paling banyak digunakan ialah pemberitahuan tolak. Masa sangat penting apabila bekerja dengan pemberitahuan tolak. Jenis apl juga penting. Menghantar pemberitahuan pada pukul 9 pagi yang mengatakan "Anda belum berlatih hari ini" adalah sesuatu yang pelik untuk aplikasi pembelajaran kerana ramai yang mempunyai perkara untuk dilakukan pada hari sebelum mereka berfikir untuk menyelesaikan pelajaran. Jika kita bercakap tentang apl kecergasan, iaadalah munasabah dan mungkin juga dijangka diingatkan pada awal hari. Pemberitahuan tolak berbeza dengan ketara mengikut kategori apl. Apl kecergasan, contohnya, melihat penglibatan yang lebih tinggi dengan pemberitahuan awal pagi (7–8 PG), manakala apl produktiviti mungkin berprestasi lebih baik pada awal tengah hari. Perkara utama ialah A/B menguji pemasaan apl anda berdasarkan gelagat pengguna anda dan bukannya mengandaikan sesuatu adalah satu saiz untuk semua. Perkara yang berfungsi untuk apl meditasi mungkin tidak berfungsi untuk penjejak pengekodan. Kaedah gesaan lain ialah titik merah pada ikon aplikasi dan juga widget aplikasi. Kajian berbeza-beza, tetapi rata-rata orang membuka kunci peranti mereka antara 50-150 kali sehari (PDF). Jika pengguna melihat titik merah pada apl atau widget yang menunjukkan coretan semasa setiap kali mereka membuka kunci telefon mereka, ini meningkatkan komitmen. Cuma jangan keterlaluan; gesaan harus berfungsi sebagai peringatan, bukan omelan. Raikan Pencapaian Sistem coretan harus cuba meraikan peristiwa penting untuk menyalakan semula emosi, terutamanya untuk pengguna jauh ke dalam coretan. Apabila pengguna mencecah Hari 7, Hari 30, Hari 50, Hari 100, Hari 365, anda harus membuat perkara yang besar daripadanya. Akui pencapaian — terutamanya untuk pengguna lama.

Seperti yang kita lihat sebelum ini, Duolingo memikirkan perkara ini dan melaksanakan grafik animasi yang meraikan peristiwa penting dengan konfeti. Sesetengah platform juga memberikan ganjaran bonus yang besar yang mengesahkan usaha pengguna. Dan ini boleh memberi manfaat kepada apl, supaya pengguna cenderung untuk berkongsi pencapaian mereka secara terbuka di media sosial. Manfaat lain ialah jangkaan yang datang sebelum mencapai pencapaian. Ia bukan sekadar mengekalkan coretan itu hidup tanpa henti; pengguna mempunyai sesuatu yang ditunggu-tunggu. Gunakan Mekanisme Rahmat Kehidupan tidak dapat diramalkan. Orang ramai terganggu. Mana-mana sistem coretan yang baik harus mengharapkan ketidaksempurnaan. Salah satu ancaman psikologi terbesar kepada sistem coretan ialah tetapan semula keras kepada sifar selepas hanya satu hari terlepas. Sistem coretan "etika" harus memberikan pengguna sedikit kelonggaran. Katakan anda mempunyai pembelajaran catur selama 90 hari berturut-turut. Anda telah konsisten selama tiga bulan yang baik, dan pada suatu hari, telefon anda mati semasa dalam perjalanan, dan begitu sahaja, 90 menjadi 0 — segala-galanya, semua usaha itu, dipadamkan dan kemajuan lenyap. Pengguna mungkin hancur sepenuhnya. Pemikiran untuk membina semula dari awal sangat melemahkan semangat bahawa usaha itu tidak berbaloi. Paling teruk, pengguna mungkin meninggalkan apl selepas berasa seperti gagal. Pertimbangkan untuk menambah mekanisme "rahmat" pada sistem coretan anda:

Streak FreezeBenarkan pengguna sengaja terlepas hari tanpa penalti. Masa Tambahan Biarkan beberapa jam (2–3) melepasi tarikh akhir biasa sebelum mencetuskan tetapan semula. Model Pereputan Daripada tetapan semula keras, coretan berkurangan dengan jumlah yang kecil, cth., 10 hari ditolak daripada coretan setiap hari terlepas.

Gunakan Nada Menggalakkan Mari bandingkan dua mesej yang ditunjukkan kepada pengguna apabila coretan terputus:

"Anda kehilangan rentak 42 hari anda. Mulakan semula." "Anda muncul selama 42 hari berturut-turut. Itu kemajuan yang luar biasa! Ingin mencuba sekali lagi?"

Kedua-duanya menyampaikan maklumat yang sama, tetapi kesan emosinya berbeza. Mesej pertama kemungkinan besar akan membuatkan pengguna berasa lemah semangat dan menyebabkan mereka berhenti. Mesej kedua meraikan apa yang telah dicapai dan perlahan-lahan menggalakkan pengguna untuk mencuba lagi. Cabaran Reka Bentuk Sistem Streak Sebelum kita pergi ke spesifikasi teknikal membina sistem coretan, anda harus sedar tentang cabaran yang mungkin anda hadapi. Perkara boleh menjadi rumit, seperti yang anda jangkakan. Mengendalikan Zon Waktu Terdapat sebab mengapa pengendalian masa dan tarikh adalah antara konsep yang paling sukar ditangani oleh pembangun. Terdapat pemformatan, pengantarabangsaan dan banyak lagi untuk dipertimbangkan. Biar saya tanya anda ini: Apa yang dikira sebagai hari? Kita tahu dunia berjalan pada zon waktu yang berbeza, dan seolah-olah itu tidak mencukupi, sesetengah wilayah mempunyai Waktu Penjimatan Siang (DST) yang berlaku dua kali setahun. Di manakah anda mula mengendalikan kes-kes tepi ini? Apa yang dikira sebagai "permulaan" esok? Sesetengah pembangun cuba mengelakkan perkara ini dengan menggunakan satu zon waktu pusat, seperti UTC. Bagi sesetengah pengguna, ini akan menghasilkan hasil yang betul, tetapi bagi sesetengah pengguna, ia boleh dimatikan selama sejam, dua jam atau lebih. Ketidakkonsistenan ini merosakkan pengalaman pengguna. Pengguna kurang mengambil berat cara anda mengendalikan masa di belakang tabir; apa yang mereka harapkan ialah jika mereka melakukan tindakan berturut-turut pada 11:40 malam, maka tindakan itu harus didaftarkan pada masa yang tepat itu, dalam konteks mereka. Anda harus menentukan "satu hari" berdasarkan zon waktu setempat pengguna, bukan masa pelayan. Sudah tentu, anda boleh mengambil mudahlaluan dan tetapkan semula coretan secara global untuk semua pengguna pada tengah malam UTC, tetapi anda banyak mencipta ketidakadilan. Seseorang di California sentiasa mempunyai lapan jam tambahan untuk menyelesaikan tugas mereka daripada seseorang yang tinggal di London. Itu adalah kecacatan reka bentuk yang tidak adil yang menghukum pengguna tertentu kerana lokasi mereka. Dan bagaimana jika orang itu di London hanya melawat, menyelesaikan tugas, kemudian kembali ke zon waktu lain? Satu penyelesaian yang berkesan untuk semua ini ialah meminta pengguna menetapkan zon waktu mereka secara eksplisit semasa onboarding (sebaik-baiknya selepas pengesahan pertama). Adalah idea yang baik untuk memasukkan nota halus bahawa menyediakan maklumat zon waktu hanya digunakan untuk apl menjejak kemajuan dengan tepat, dan bukannya digunakan sebagai data yang boleh dikenal pasti secara peribadi. Dan satu lagi idea yang bagus untuk menjadikannya tetapan yang boleh diubah. Saya mencadangkan agar sesiapa sahaja mengelak daripada mengendalikan logik zon waktu secara langsung dalam apl. Gunakan pustaka tarikh yang telah dicuba dan benar, seperti Moment.js atau pytz (Python), dll. Tidak perlu mencipta semula roda untuk sesuatu yang rumit seperti ini. Hari Terlepas Dan Kes Edge Cabaran lain yang perlu anda risaukan ialah kes tepi yang tidak terkawal seperti pengguna tidur berlebihan, masa henti pelayan, ketinggalan, kegagalan rangkaian dan sebagainya. Menggunakan idea mekanisme rahmat, seperti yang kita bincangkan sebelum ini, boleh membantu. Tetingkap tangguh selama dua jam mungkin membantu kedua-dua pengguna dan pembangun, dalam erti kata bahawa pengguna tidak dihukum dengan tegas kerana keadaan hidup yang tidak terkawal. Bagi pembangun, tetingkap rahmat membantu dalam detik-detik yang tidak terkawal apabila pelayan terputus pada tengah malam. Di atas segalanya, jangan sesekali mempercayai pelanggan. Sentiasa sahkan di bahagian pelayan. Pelayan harus menjadi satu-satunya sumber kebenaran. Pencegahan Penipuan Sekali lagi, saya tidak boleh cukup menekankan perkara ini: Pastikan untuk mengesahkan semua bahagian pelayan. Pengguna adalah manusia, dan manusia mungkin menipu jika diberi peluang. Ia tidak dapat dielakkan. Anda boleh cuba:

Menyimpan semua tindakan dengan cap masa UTC. Pelanggan boleh menghantar waktu tempatan mereka, tetapi pelayan boleh menukarnya dengan segera kepada UTC dan mengesahkan terhadap masa pelayan. Dengan cara itu, jika cap masa pelanggan jauh mencurigakan, sistem boleh menolaknya sebagai ralat dan UI boleh bertindak balas dengan sewajarnya. Menggunakan penjejakan berasaskan peristiwa. Dengan kata lain, simpan rekod setiap tindakan dengan metadata termasuk maklumat seperti ID pengguna, jenis tindakan yang dilakukan dan cap waktu dan zon waktu. Ini membantu dengan pengesahan.

Membina Enjin Sistem Streak Ini bukan tutorial kod, jadi saya akan mengelak daripada membuang banyak kod pada anda. Saya akan memastikan perkara ini praktikal dan menerangkan cara sesuatu biasanya mengendalikan enjin sistem coretan sejauh seni bina, aliran dan kebolehpercayaan. Seni Bina Teras Seperti yang telah saya katakan beberapa kali, jadikan pelayan sebagai sumber kebenaran tunggal untuk data coretan. Seni bina boleh menjadi seperti ini pada pelayan:

Simpan setiap data pengguna dalam pangkalan data. Simpan stor coretan semasa (lalai sebagai 0) sebagai integer. Simpan keutamaan zon waktu, iaitu rentetan Zon Waktu IANA (sama ada secara tersirat daripada cap waktu tempatan atau secara eksplisit dengan meminta pengguna memilih zon waktu mereka). Contohnya, "America/New_York". Kendalikan semua logik untuk menentukan sama ada coretan itu berterusan atau terputus, dengan semakan zon waktu yang relatif kepada zon waktu setempat pengguna.

Sementara itu, dari segi pelanggan:

Paparkan coretan semasa, biasanya diambil daripada pelayan. Hantar tindakan yang dilakukan dalam bentuk metadata kepada pelayan untuk mengesahkan sama ada pengguna benar-benar menyelesaikan tindakan berturut-turut yang layak. Berikan maklum balas visual berdasarkan respons pelayan.

Jadi, secara ringkasnya, otak berada di pelayan, dan pelanggan adalah untuk tujuan paparan dan menghantar acara. Ini menjimatkan banyak kegagalan dan kes kelebihan anda, serta memudahkan kemas kini dan pembetulan. Aliran Logik Mari kita simulasi panduan tentang cara enjin sistem coretan yang cekap minimum akan berfungsi apabila pengguna menyelesaikan tindakan:

Pengguna melengkapkan tindakan berturut-turut kelayakan. Pelanggan menghantar acara ke pelayan sebagai metadata. Ini boleh jadi "Pengguna X menyelesaikan tindakan Y pada cap masa Z". Pelayan menerima acara ini dan melakukan pengesahan asas. Adakah ini pengguna sebenar? Adakah mereka disahkan? Adakah tindakan itu sah? Adakah zon waktu konsisten? Jika ini berlalu, pelayan mendapatkan semula data coretan pengguna daripada pangkalan data. Kemudian, tukarkan cap masa tindakan yang diterima kepada zon waktu setempat pengguna. Biarkan pelayan membandingkan tarikh kalendar (bukan cap waktu) dalam zon waktu setempat pengguna: Jika hari yang sama, maka tindakan itu berlebihan dan tidak ada perubahan dalamcoretan. Jika ia adalah hari berikutnya, maka coretan itu memanjang dan bertambah sebanyak 1. Jika terdapat jurang lebih daripada satu hari, coretan itu terputus. Walau bagaimanapun, di sinilah anda mungkin menggunakan mekanik rahmat. Jika mekanisme rahmat terlepas, kemudian tetapkan semula coretan kepada 1.

Jika anda memilih untuk menyimpan data sejarah untuk pencapaian penting, kemudian kemas kini pembolehubah seperti "coretan paling lama" atau "jumlah hari aktif". Pelayan kemudian mengemas kini pangkalan data dan bertindak balas kepada klien. Sesuatu seperti ini:

{ "current_streak": 48, "streak_panjang": 50, "total_active_days": 120, "streak_extended": benar, }

Sebagai langkah selanjutnya, pelayan harus sama ada mencuba semula atau menolak dan memberitahu klien apabila ada yang gagal semasa proses. Membina Untuk Ketahanan Seperti yang dinyatakan sebelum ini, pengguna kehilangan coretan disebabkan pepijat atau masa henti pelayan adalah UX yang teruk, dan pengguna tidak menjangkakan akan mengambil bahagian untuk itu. Oleh itu, sistem coretan anda harus mempunyai perlindungan untuk senario tersebut. Jika pelayan tidak berfungsi untuk penyelenggaraan (atau apa-apa sebab), pertimbangkan untuk membenarkan tetingkap sementara waktu tambahan untuk membetulkannya supaya tindakan boleh diserahkan lewat dan masih dikira. Anda juga boleh memilih untuk memberitahu pengguna, terutamanya jika keadaan itu mampu menjejaskan rentetan yang berterusan. Nota: Wujudkan pintu belakang pentadbir di mana data boleh dipulihkan secara manual. Pepijat tidak dapat dielakkan, dan sesetengah pengguna akan menghubungi apl anda atau menghubungi untuk menyokong bahawa coretan mereka terputus atas sebab yang tidak dapat mereka kawal. Anda sepatutnya boleh memulihkan coretan secara manual jika, selepas penyiasatan, pengguna betul. Kesimpulan Satu perkara yang masih jelas: Streak benar-benar berkuasa kerana cara psikologi manusia berfungsi pada tahap asas. Sistem coretan terbaik di luar sana ialah sistem yang pengguna tidak fikirkan secara sedar. Ia telah menjadi rutin hasil segera atau kemajuan yang boleh dilihat, seperti memberus gigi, yang menjadi tabiat biasa. Dan saya hanya akan mengatakannya: Tidak semua produk memerlukan sistem coretan. Sekiranya anda benar-benar memaksa konsistensi hanya kerana anda mahukan pengguna aktif setiap hari? Jawapannya mungkin "tidak".

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