User Metrics

User Metrics ແມ່ນຫຍັງ?

ຖ້າທ່ານເບິ່ງທີ່ໜ້າຈໍລັອກ, ທ່ານຈະເຫັນວົງມົນ. ທາງໃນວົງມົນແມ່ນຂໍ້ຄວາມ. ເບິ່ງໃກ້ໆ, ແລະ ທ່ານຈະສັງເກດເຫັນວ່າຂໍ້ຄວາມມີຂໍ້ມູນກ່ຽວກັບກິດຈະກຳຂອງຜູ້ໃຊ້. ແຕະສອງເທື່ອໃສ່ເຄິ່ງກາງຂອງວົງມົນ, ແລະ ທ່ານຈະເຫັນ "metrics" (ຕົວວັດແທກ) ເພີ່ມເຕີມກ່ຽວກັບຜູ້ໃຊ້.

../../_images/met1.png

ອັນນີ້ສະແດງ "7 text messages sent today." (ສົ່ງຂໍ້ຄວາມ 7 ຂໍ້ຄວາມມື້ນີ້). ມັນຮູ້ໄດ້ແນວໃດ?

../../_images/met2.png

ອັນນີ້ແມ່ນມາຈາກແອັບພລິເຄຊັນພາກສ່ວນທີສາມ (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 ນາທີ ເພື່ອອັບເດດຕົວຊີ້ບອກສະພາບອາກາດໂດຍອັດຕະໂນມັດ ໂດຍບໍ່ຈຳເປັນຕ້ອງເປີດແອັບ.