Interfície d’usuari

Què són les Mètriques d’Usuari?

Si mires a la pantalla de bloqueig, veuràs un cercle. Dins del cercle hi ha text. Mireu més a prop, i notareu que el text conté dades relatives a l’activitat de l’usuari. Doble toc al mig del cercle, i veureu més «mètriques» sobre l’usuari.

../../_images/met1.png

Això mostra «7 missatges de text enviats avui». Com ho sabia?

../../_images/met2.png

Aquesta és d’una aplicació de tercers (.nCounter <https://gitlab.com/joboticon/ncounter/> the) que fa ús de la funció Mètriques d’usuari.

En la seva major part, aquests missatges indiquen clarament el que estan comptant, i quina aplicació està relacionada. Però d’on venen aquestes mètriques?

Com puc utilitzar la Mètrica d’Usuari en la meva aplicació?

Tota la informació següent es basarà en el codi de nCounter.

El fitxer apparmor de la teva app ha d’incloure usermetrics a la política:

{
    "policy_groups": [
        "usermetrics"
    ],
    "policy_version": 16.04
}

A continuació, haureu d’importar el mòdul en el fitxer QML que gestionarà les Mètriques d’usuari:

import UserMetrics 0.1

(Hi pot haver versions actualitzades d’això per sobre de 0.1)

A continuació, la Mètrica específica s’ha de definir en el codi com un objecte:

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.
}

Ara que es crea la mètrica, podem actualitzar el «format» o «buitFormat» quan un esdeveniment té lloc fent referència a les variables de l’objecte Mètric.

onButtonPressed: {
    metric.circleMetric = "New Metric Message"
    metric.update(0)
    console.log("Metric updated")
}

Aquí assignem un nou valor a la variable de cadena circleMetric que es troba dins de l’objecte Metric:

(Recordeu que circleMetric és el valor variable assignat al format)

Id mètric [dot] Nom de la variable [equals] Informació nova de la variable

metric.circleMetric = "Nou missatge de mètrica"

A continuació, li diem a la pantalla de bloqueig que actualitzi la mètrica.

ID mètric [dot] actualització (import específic a establir si s’inclou en el format)

metric.update(0)

(Nota: En aquest exemple, 0 és arbitrari ja que el valor mètric no inclou un comptador)

Ara hem actualitzat la mètrica per avui. Quan el temps passi a demà, la mètrica es restablirà al que estigui a emptyFormat.

Per a la majoria d’aplicacions, aquest valor predeterminat és 0 per als missatges, trucades, etc.

Com funcionen les Mètriques d’Usuari?

Les Mètriques d’Usuari estan formades per dos «formats»:

  • mètriques/missatges per avui (format)

  • mètriques/missatges per a demà (emptyFormat)

El valor de emptyFormat és el que es mostra a la pantalla de bloqueig quan no s’ha emmagatzemat cap valor en format. Per tal de mostrar un valor nou de format, s’ha d’actualitzar la mètrica.

Hi ha dues opcions per actualitzar la mètrica:

  • Estableix la mètrica a una quantitat específica:

metricID.update(x)) (on x és un nombre de tipus double per a establir un valor de comptador). metricID és el id: especificat a l’element Mètric. El valor del comptador es pot incloure a la configuració format utilitzant %1. p. ex. format: "%1 botons premuts avui»

  • Incrementa la mètrica:

metricID.increment(x) (on x és la quantitat a afegir al comptador actual)

La mètrica es restablirà al valor emmagatzemat a emptyFormat cada dia.

Les aplicacions fan ús de la Mètrica d’Usuari mitjançant la configuració i actualització dels «formats» cada vegada que es produeix un esdeveniment determinat. Per exemple, quan premeu envia a Telegram, o quan rebeu una trucada telefònica. L’aplicació pot emmagatzemar les dades per a la seva manipulació, però en general les dades s’emmagatzemen en el sistema ( the/var/lib/usermetrics <https://github.com/ubports/libusermetrics/tree/xenial/doc/pages>).).

(Vegeu aquest bblog post <https://daker.me/2013/11/adding-usermetrics-to-your-app-on-ubuntu-touch.html>) per a un exemple senzill)

Limitacions i meravelles

Un cop registrada una mètrica, es manté a la pantalla de bloqueig fins i tot després que l’aplicació s’hagi desinstal·lat. Un fitxer de base de dades (db) s’emmagatzema a ,/var/lib/usermetrics)., que es pot eliminar per root (però no amb sudo). Si suprimiu aquest fitxer i torneu a arrencar, se suprimiran totes les mètriques emmagatzemades. Presumiblement, el fitxer db es podria editar en lloc d’esborrar.

Basant-se en com es configuren els «formats», sembla que és difícil mantenir un recompte corrent més enllà d’un dia (encara que no impossible. Vegeu FluffyChat).

En el cas de l’app Counter. Volia comptar el nombre de dies, però des que la mètrica es «reinicia» cada dia, això presenta un problema. He creat una solució temporal que actualitza la mètrica cada vegada que s’obre l’aplicació. Per tant, l”,emptyFormat (predeterminat) indica a l’usuari que obri l’aplicació. Això, però, gairebé derrota el propòsit de la mètrica per complet, a part de tenir un recordatori d’estat pur per al dia.

Hi ha d’haver una manera perquè un procés s’executi independentment en segon pla (p. ex. cron) per recuperar dades d’un codi d’aplicació específic. Un exemple és l’aplicació Indicator Weather. Això executa un procés cada X minuts per actualitzar automàticament l’indicador meteorològic sense haver d’obrir l’aplicació.