User Metrics¶
User Metrics ແມ່ນຫຍັງ?¶
ຖ້າທ່ານເບິ່ງທີ່ໜ້າຈໍລັອກ, ທ່ານຈະເຫັນວົງມົນ. ທາງໃນວົງມົນແມ່ນຂໍ້ຄວາມ. ເບິ່ງໃກ້ໆ, ແລະ ທ່ານຈະສັງເກດເຫັນວ່າຂໍ້ຄວາມມີຂໍ້ມູນກ່ຽວກັບກິດຈະກຳຂອງຜູ້ໃຊ້. ແຕະສອງເທື່ອໃສ່ເຄິ່ງກາງຂອງວົງມົນ, ແລະ ທ່ານຈະເຫັນ "metrics" (ຕົວວັດແທກ) ເພີ່ມເຕີມກ່ຽວກັບຜູ້ໃຊ້.
ອັນນີ້ສະແດງ "7 text messages sent today." (ສົ່ງຂໍ້ຄວາມ 7 ຂໍ້ຄວາມມື້ນີ້). ມັນຮູ້ໄດ້ແນວໃດ?¶
ອັນນີ້ແມ່ນມາຈາກແອັບພລິເຄຊັນພາກສ່ວນທີສາມ (nCounter) ທີ່ໃຊ້ປະໂຫຍດຈາກຄຸນສົມບັດ User Metrics.¶
ສ່ວນຫຼາຍແລ້ວ, ຂໍ້ຄວາມເຫຼົ່ານີ້ລະບຸຢ່າງຊັດເຈນວ່າພວກມັນກຳລັງນັບຫຍັງ, ແລະ ແອັບໃດທີ່ກ່ຽວຂ້ອງ. ແຕ່ metrics ເຫຼົ່ານີ້ມາຈາກໃສ?
ຂ້ອຍສາມາດໃຊ້ User Metrics ໃນແອັບພລິເຄຊັນຂອງຂ້ອຍໄດ້ແນວໃດ?¶
ຂໍ້ມູນຕໍ່ໄປນີ້ທັງໝົດຈະອີງໃສ່ code ສຳລັບ nCounter.
ໄຟລ໌ apparmor ຂອງແອັບທ່ານຕ້ອງລວມເອົາ usermetrics ໃນນະໂຍບາຍ:
{
"policy_groups": [
"usermetrics"
],
"policy_version": 16.04
}
ຕໍ່ໄປ, ທ່ານຈະຕ້ອງ import ໂມດູນໃນໄຟລ໌ QML ທີ່ຈະຈັດການ User Metrics:
import UserMetrics 0.1
(ອາດຈະມີເວີຊັນທີ່ໃໝ່ກວ່ານີ້ ເໜືອກວ່າ 0.1)
ຕໍ່ໄປ, Metric ສະເພາະຕ້ອງຖືກກຳນົດໃນ code ເປັນ object:
Metric { // Define the Metric object.
property string circleMetric // Create a string-type variable called "circleMetric". This is so you can update it later from somewhere else.
id: metric // A name to reference the metric elsewhere in the code. i.e. when updating format values below.
name: "nCounter" // This is a unique ID for storing the user metric data
format: circleMetric // This is the metric/message that will display "today". Again it uses the string variable that we defined above
emptyFormat: i18n.tr("Check nCounter") // This is the metric/message for tomorrow. It will "activate" once the day roles over and replaces "format". Here I have use a simple translatable string instead of a variable because I didn’t need it to change.
domain: "ncounter.joe" // This is the appname, based on what you have in your app settings. Presumably this is how the system lists/ranks the metrics to show on the lock screen.
}
ຕອນນີ້ metric ຖືກສ້າງຂຶ້ນແລ້ວ, ພວກເຮົາສາມາດອັບເດດ "format" ຫຼື "emptyFormat" ເມື່ອມີເຫດການເກີດຂຶ້ນ ໂດຍການອ້າງອີງໃສ່ຕົວປ່ຽນໃນ Metric object.
onButtonPressed: {
metric.circleMetric = "New Metric Message"
metric.update(0)
console.log("Metric updated")
}
ບ່ອນນີ້ພວກເຮົາກຳນົດຄ່າໃໝ່ໃຫ້ກັບຕົວປ່ຽນ string circleMetric ທີ່ຢູ່ຂ້າງໃນ Metric object:
(ຈື່ໄວ້ວ່າ circleMetric ແມ່ນຄ່າຕົວປ່ຽນທີ່ຖືກກຳນົດໃຫ້ກັບ format)
Metric Id [ຈຸດ] ຊື່ຕົວປ່ຽນ [ເທົ່າກັບ] ຂໍ້ມູນຕົວປ່ຽນໃໝ່
metric.circleMetric = "ຂໍ້ຄວາມ Metric ໃໝ່"
ຈາກນັ້ນພວກເຮົາບອກໃຫ້ໜ້າຈໍລັອກອັບເດດ metric.
Metric ID [ຈຸດ] update (ຈຳນວນສະເພາະທີ່ຈະຕັ້ງຄ່າ ຖ້າລວມຢູ່ໃນ format)
metric.update(0)
(ໝາຍເຫດ: ໃນຕົວຢ່າງນີ້, 0 ແມ່ນໃສ່ໄວ້ຊື່ໆ ເນື່ອງຈາກຄ່າ metric ບໍ່ໄດ້ລວມເອົາ counter)
ຕອນນີ້ພວກເຮົາໄດ້ອັບເດດ metric ສຳລັບມື້ນີ້ແລ້ວ. ເມື່ອເວລາປ່ຽນເປັນມື້ອື່ນ, metric ຈະຖືກ reset ເປັນຫຍັງກໍຕາມທີ່ຢູ່ໃນ emptyFormat.
ສຳລັບແອັບສ່ວນໃຫຍ່, ຄ່າເລີ່ມຕົ້ນນີ້ແມ່ນ 0 ການນັບສຳລັບຂໍ້ຄວາມ, ການໂທ, ແລະ ອື່ນໆ.
User Metrics ເຮັດວຽກແນວໃດ?¶
User Metrics ປະກອບດ້ວຍສອງ "formats":
metrics/ຂໍ້ຄວາມ ສຳລັບມື້ນີ້ (
format)metrics/ຂໍ້ຄວາມ ສຳລັບມື້ອື່ນ (
emptyFormat)
ຄ່າຂອງ emptyFormat ແມ່ນສິ່ງທີ່ສະແດງຢູ່ໃນໜ້າຈໍລັອກ ເມື່ອບໍ່ມີຄ່າໃດຖືກເກັບໄວ້ໃນ format. ເພື່ອສະແດງຄ່າໃໝ່ຂອງ format metric ຕ້ອງໄດ້ຮັບການອັບເດດ.
ມີສອງທາງເລືອກສຳລັບການອັບເດດ metric:
ຕັ້ງຄ່າ metric ເປັນຈຳນວນສະເພາະ:
metricID.update(x) (ເຊິ່ງ x ແມ່ນຕົວເລກປະເພດ double ເພື່ອຕັ້ງຄ່າສຳລັບຄ່າ counter). metricID ແມ່ນ id: ທີ່ລະບຸໄວ້ໃນ Metric item. ຄ່າ counter ສາມາດລວມຢູ່ໃນການຕັ້ງຄ່າ format ໂດຍການໃຊ້ %1. ຕົວຢ່າງ: format: "%1 buttons pressed today"
ເພີ່ມ metric ຂຶ້ນ:
metricID.increment(x) (ເຊິ່ງ x ແມ່ນຈຳນວນທີ່ຈະເພີ່ມໃສ່ counter ປັດຈຸບັນ)
Metric ຈະ reset ກັບຄືນເປັນຄ່າທີ່ເກັບໄວ້ໃນ emptyFormat ໃນແຕ່ລະມື້.
ແອັບພລິເຄຊັນໃຊ້ປະໂຫຍດຈາກ User Metrics ໂດຍການຕັ້ງຄ່າ ແລະ ອັບເດດ "formats" ເມື່ອໃດກໍຕາມທີ່ມີເຫດການສະເພາະເກີດຂຶ້ນ. ຕົວຢ່າງ: ເມື່ອທ່ານກົດສົ່ງໃນ Telegram, ຫຼື ເມື່ອທ່ານຮັບສາຍໂທລະສັບ. ແອັບພລິເຄຊັນອາດຈະເກັບຂໍ້ມູນໄວ້ເພື່ອຈັດການ, ແຕ່ໂດຍທົ່ວໄປແລ້ວຂໍ້ມູນຈະຖືກເກັບໄວ້ໃນລະບົບ (/var/lib/usermetrics).
(ເບິ່ງ blog post ນີ້ສຳລັບຕົວຢ່າງງ່າຍໆ)
ຂໍ້ຈຳກັດ ແລະ ສິ່ງທີ່ໜ້າສົນໃຈ¶
ເມື່ອ metric ຖືກລົງທະບຽນແລ້ວ, ມັນຈະຍັງຄົງຢູ່ໃນໜ້າຈໍລັອກ ເຖິງແມ່ນວ່າແອັບຈະຖືກຖອນການຕິດຕັ້ງໄປແລ້ວກໍຕາມ. ໄຟລ໌ຖານຂໍ້ມູນ (db) ຖືກເກັບໄວ້ໃນ /var/lib/usermetrics, ເຊິ່ງສາມາດລຶບໄດ້ໂດຍ root (ແຕ່ບໍ່ແມ່ນດ້ວຍ sudo). ການລຶບໄຟລ໌ນີ້ ແລະ reboot ຈະລຶບ metrics ທີ່ເກັບໄວ້ທັງໝົດ. ສັນນິຖານວ່າ, ໄຟລ໌ db ສາມາດແກ້ໄຂໄດ້ແທນທີ່ຈະລຶບ.
ອີງຕາມວິທີການຕັ້ງຄ່າ "formats", ເບິ່ງຄືວ່າມັນຍາກທີ່ຈະຮັກສາການນັບຕໍ່ເນື່ອງເກີນໜຶ່ງມື້ (ເຖິງແມ່ນວ່າຈະບໍ່ແມ່ນວ່າເປັນໄປບໍ່ໄດ້. ເບິ່ງ FluffyChat).
ໃນກໍລະນີຂອງແອັບ nCounter. ຂ້ອຍຕ້ອງການນັບຈຳນວນມື້, ແຕ່ເນື່ອງຈາກ metric "resets" ໃນແຕ່ລະມື້, ນັ້ນຈຶ່ງເປັນບັນຫາ. ຂ້ອຍໄດ້ສ້າງວິທີແກ້ໄຂບັນຫາສະເພາະໜ້າ ທີ່ອັບເດດ metric ທຸກຄັ້ງທີ່ແອັບພລິເຄຊັນຖືກເປີດ. ດັ່ງນັ້ນ, emptyFormat (ຄ່າເລີ່ມຕົ້ນ) ຈຶ່ງບອກໃຫ້ຜູ້ໃຊ້ເປີດແອັບພລິເຄຊັນ. ແນວໃດກໍຕາມ, ສິ່ງນີ້ເກືອບຈະທຳລາຍຈຸດປະສົງຂອງ metric ໄປເລີຍ, ນອກເໜືອຈາກການມີການແຈ້ງເຕືອນສະຖິຕິທີ່ສວຍງາມສຳລັບມື້ນັ້ນ.
ມັນຕ້ອງມີວິທີໃຫ້ຂະບວນການ (process) ເຮັດວຽກຢ່າງເປັນເອກະລາດໃນພື້ນຫຼັງ (ຕົວຢ່າງ: cron) ເພື່ອດຶງຂໍ້ມູນຈາກ code ຂອງແອັບສະເພາະ. ເບາະແສໜຶ່ງແມ່ນແອັບ Indicator Weather. ອັນນີ້ run process ທຸກໆ X ນາທີ ເພື່ອອັບເດດຕົວຊີ້ບອກສະພາບອາກາດໂດຍອັດຕະໂນມັດ ໂດຍບໍ່ຈຳເປັນຕ້ອງເປີດແອັບ.