Référence des services
Tous les services que la logique d’un widget PlayerVox OverCrow peut appeler, avec ce que chacun exige, le moment où il peut être appelé, ses paramètres et son résultat. Services et permissions explique le fonctionnement des appels, des abonnements, des erreurs et des actions de l’utilisateur ; cette page en est la liste.
if (canRead) {
state.stopwatch = next;
}
},
() => {},
);
}Dans le SDK, un service stopwatch.subscribe est la fonction
stopwatch.subscribe de l’espace de noms stopwatch. Un appel renvoie une
promesse de son résultat ; un abonnement prend un écouteur qui reçoit chaque
mise à jour.
Lire la fiche d’un service
- Nature : un appel, à réponse unique reçoit une seule réponse ; un abonnement livre une valeur immédiatement, puis chaque nouvelle valeur.
- Exige : la permission ou la capability à déclarer dans le manifeste, et que l’utilisateur doit accorder.
- Quand l’appeler : À tout moment, ou Seulement pendant une action de l’utilisateur.
- Paramètres : les membres de l’objet à passer ; un
?marque un membre facultatif. Un type tel que « texte ≤ 128 octets » donne une limite. - Résultat, ou Chaque mise à jour pour un abonnement : ce que répond le service, et les codes d’erreur qui lui sont propres. Tout service peut aussi échouer avec les codes d’erreur généraux.
- Forme : le type du résultat, décrit dans formes de résultat.
Services
storage.get
- Nature : appel, à réponse unique
- Exige : permission
storage - Quand l’appeler : À tout moment
- Paramètres :
key: texte ≤ 128 octets - Résultat : la valeur JSON enregistrée, ou
null - Forme : JSON
storage.set
- Nature : appel, à réponse unique
- Exige : permission
storage - Quand l’appeler : À tout moment
- Paramètres :
key: texte ≤ 128 octets ;value: JSON - Résultat :
null;quota_exceededau-delà de 256 Kio - Forme :
null
storage.remove
- Nature : appel, à réponse unique
- Exige : permission
storage - Quand l’appeler : À tout moment
- Paramètres :
key: texte ≤ 128 octets - Résultat :
null
storage.keys
- Nature : appel, à réponse unique
- Exige : permission
storage - Quand l’appeler : À tout moment
- Paramètres : aucune
- Résultat : la liste des clés
- Forme : liste de textes
http.fetch
- Nature : appel, à réponse unique
- Exige : permission
network - Quand l’appeler : À tout moment
- Paramètres :
url: texte ≤ 2 Kio ;method:GET|POST|PUT|PATCH|DELETE;contentType?:application/json|text/plain;as:json|text|bytes|image - Résultat :
{ status, contentType }avec le corps, d’une taille ≤ aumaxResponseBytesde la règle (1 Mio quand il est absent), ou{ status, asset }à partir d’un corps ≤ 1 Mio - Forme :
HttpResponse
clipboard.writeText
- Nature : appel, à réponse unique
- Exige : permission
clipboardWrite - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
text: texte ≤ 16 Kio - Résultat :
null
gameEvents.subscribe
- Nature : abonnement
- Exige : permission
gameEvents - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ event, at }pour chaque événement déclaré - Forme :
GameEvent
session.subscribe
- Nature : abonnement
- Exige : capability
session.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ elapsedMs, at }compté depuis le démarrage du processus du jeu, ounullsans jeu actif - Forme :
Sessionounull
telemetry.subscribe
- Nature : abonnement
- Exige : capability
telemetry.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ cpu, ram, cpuTemperature, gpuTemperature, sources }, ounullsans jeu actif :cpuest la part du jeu dans toute la machine, en % (0–100),ramsa mémoire résidente en octets, les températures sont en °C ounull,sources{ cpuTemperature, gpuTemperature }dit si l’hôte dispose de chaque capteur - Forme :
Telemetryounull
fps.subscribe
- Nature : abonnement
- Exige : capability
fps.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ fps, stale, status }:fpsest un nombre ounull; l’hôte metstale3 s après la dernière mesure ;statusvautready,waiting,unsupported,permission_denied,ambiguous,events_lostouunavailable - Forme :
Fps
media.subscribe
- Nature : abonnement
- Exige : capability
media.read - Quand l’appeler : À tout moment
- Paramètres :
cover?: booléen - Chaque mise à jour :
nullsans lecteur, ou{ player, title, artists, playing, canPrevious, canPlayPause, canNext, cover }:playerest un ID opaque,artistsune liste,coverun identifiantasset:d’une image de 512 px au plus, ounull - Forme :
Mediaounull
media.previous
- Nature : appel, à réponse unique
- Exige : capability
media.control - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
player?: texte ≤ 128 octets - Résultat :
null;stale_contextquandplayern’est plus le lecteur courant - Forme :
null
media.playPause
- Nature : appel, à réponse unique
- Exige : capability
media.control - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
player?: texte ≤ 128 octets - Résultat :
null;stale_contextquandplayern’est plus le lecteur courant - Forme :
null
media.next
- Nature : appel, à réponse unique
- Exige : capability
media.control - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
player?: texte ≤ 128 octets - Résultat :
null;stale_contextquandplayern’est plus le lecteur courant - Forme :
null
stopwatch.subscribe
- Nature : abonnement
- Exige : capability
stopwatch.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ running, elapsedMs, at, shortcuts }, ounullsans jeu actif ;shortcuts{ toggle, reset, bound }contient les raccourcis clavier, mis en forme par l’hôte - Forme :
Stopwatchounull
stopwatch.toggle
- Nature : appel, à réponse unique
- Exige : capability
stopwatch.control - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres : aucune
- Résultat : le nouvel état, comme dans
stopwatch.subscribe;unavailablequand l’hôte ne peut pas agir - Forme :
Stopwatchounull
stopwatch.reset
- Nature : appel, à réponse unique
- Exige : capability
stopwatch.control - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres : aucune
- Résultat : le nouvel état, comme dans
stopwatch.subscribe;unavailablequand l’hôte ne peut pas agir - Forme :
Stopwatchounull
notes.subscribe
- Nature : abonnement
- Exige : capability
notes.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ active, notes }de l’unique document de notes de l’utilisateur ; chaque note{ id, title, body, items }, chaque entrée{ id, text, checked } - Forme :
Notes
notes.create
- Nature : appel, à réponse unique
- Exige : capability
notes.write - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres : aucune
- Résultat :
{ note }, une nouvelle note vide et active, intituléeNote {n}dans la langue de l’utilisateur ;quota_exceededau-delà de 8 - Forme :
CreatedNote
notes.select
- Nature : appel, à réponse unique
- Exige : capability
notes.write - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
note: texte ≤ 128 octets - Résultat :
null; l’hôte enregistre la note active - Forme :
null
notes.setItem
- Nature : appel, à réponse unique
- Exige : capability
notes.write - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
note: texte ≤ 128 octets ;item: texte ≤ 128 octets ;checked: booléen - Résultat :
null
notes.delete
- Nature : appel, à réponse unique ; l’utilisateur le confirme d’abord, dans une boîte de dialogue dessinée par PlayerVox OverCrow
- Exige : capability
notes.write - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
note: texte ≤ 128 octets - Résultat :
null, oucancelledquand l’utilisateur refuse - Forme :
null
playervox.score.subscribe
- Nature : abonnement
- Exige : capability
playervox.score.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ state, name, score, grade, ratingsCount, criteria }:statevautidle,unsupported,loading,ready,no_ratings,not_foundouunavailable;criteria{ gameplay, art, tech }, chacun de 0 à 100 ounull - Forme :
Score
playervox.rating.subscribe
- Nature : abonnement
- Exige : capability
playervox.rating.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ state, name, offline, rating }:statevautidle,unsupported,loading,readyouunavailable;ratingestnullavant la première note de l’utilisateur, ou{ gameplay, art, tech, review, publishedAt, offsetMinutes }. Rien n’est envoyé tant que le compte PlayerVox est déconnecté, en cours de connexion ou expiré. Une note publiée est renvoyée par l’abonnement. L’hôte remplit les contrôles deplayervox.rating.publishà partir d’elle - Forme :
RatingState
playervox.reviews.subscribe
- Nature : abonnement
- Exige : capability
playervox.reviews.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ state, revision, offline }:statevautidle,unsupportedouready;revisionchange chaque fois que les avis à lire changent (autre jeu, autre compte PlayerVox, avis modifiés sur PlayerVox) : le widget relit alors sa page ;offlinetant que PlayerVox est injoignable. Rien n’est envoyé tant que le compte PlayerVox est déconnecté, en cours de connexion ou expiré. C’est cet abonnement qui maintient en marche la source des avis de l’hôte - Forme :
ReviewsState
playervox.reviews.page
- Nature : appel, à réponse unique
- Exige : capability
playervox.reviews.read - Quand l’appeler : À tout moment
- Paramètres :
page?: entier de 1 à 100000 ;followedOnly?: booléen - Résultat :
{ gameName, items, page, totalPages, count }: trois avis du jeu actif par page, dans la langue de l’interface de l’hôte ; une page au-delà de la fin donne la dernière page ; chaque avis{ id, author, grade, score, text, original, hidden, publishedAt, offsetMinutes },texttraduit quand une traduction existe,originalle texte non traduit d’un avis traduit ounull, tous deux coupés par l’hôte à 16 Kio. Chaque appel lit sa propre page : l’hôte ne garde ni position ni filtre communs à plusieurs widgets - Forme :
ReviewsPage
journal.subscribe
- Nature : abonnement
- Exige : capability
journal.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
nullsans jeu actif, ou{ revision, notice }:revisionchange chaque fois que le journal fusionné du jeu actif change (session enregistrée ou supprimée, sessions du cloud fusionnées, compte PlayerVox ou synchronisation modifiés) : le widget relit alors sa page ;noticevautnull,offline,storage_unavailable,full,expired,busyouunavailable. C’est cet abonnement qui maintient en marche la source du journal de l’hôte - Forme :
JournalStateounull
journal.page
- Nature : appel, à réponse unique
- Exige : capability
journal.read - Quand l’appeler : À tout moment
- Paramètres :
cursor?: texte ≤ 128 octets - Résultat :
{ gameName, items, page, next, previous }: cinq sessions locales et du cloud du jeu actif, fusionnées et dédoublonnées, de la plus récente à la plus ancienne ; sanscursor, la première page ; chaque session{ id, startedAt, offsetMinutes, durationMs, source }; les curseurs sont des identifiants de l’hôte qui restent valables pour le widget quoi que lisent les autres widgets, et un curseur au-delà de la fin donne la dernière page - Forme :
JournalPage
journal.delete
- Nature : appel, à réponse unique ; l’utilisateur le confirme d’abord, dans une boîte de dialogue dessinée par PlayerVox OverCrow
- Exige : capability
journal.delete - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
session: texte ≤ 128 octets - Résultat :
null, oucancelledquand l’utilisateur refuse ;not_connectedpour une session du cloud tant que PlayerVox est déconnecté - Forme :
null
twitch.chat.subscribe
- Nature : abonnement
- Exige : capability
twitch.chat.read - Quand l’appeler : À tout moment
- Paramètres : aucune
- Chaque mise à jour :
{ account, channel, joinState, failure, favorites, canSend, generation, reset, messages, removed, skipped }:accountvautsigned_out,pending,connectedouexpired(la connexion est affichée par l’hôte) ;failureest la catégorie fixe d’une connexion à la chaîne qui a échoué (failed) ; les messages arrivent par différences, au plus une mise à jour par 100 ms, avecresetaprès l’abonnement, un changement de génération ou un retour à l’affichage, et rien tant que le widget est masqué ; un chat plus rapide est échantillonné,skippedcomptant les nouveaux messages laissés de côté ; chaque message{ id, author, color, badges, fragments, reply, deleted, receivedAt }avec au plus 16 fragments, les emotes et les badges étant des identifiantsasset:pour le thème et l’échelle courants - Forme :
TwitchChat
twitch.chat.join
- Nature : appel, à réponse unique
- Exige : capability
twitch.chat.read - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
channel: texte ≤ 25 octets - Résultat :
null; l’hôte retient la chaîne et la rejoint au démarrage du widget - Forme :
null
twitch.chat.leave
- Nature : appel, à réponse unique
- Exige : capability
twitch.chat.read - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres : aucune
- Résultat :
null; l’hôte oublie la chaîne - Forme :
null
twitch.chat.favorite
- Nature : appel, à réponse unique
- Exige : capability
twitch.chat.read - Quand l’appeler : Seulement pendant une action de l’utilisateur
- Paramètres :
channel: texte ≤ 25 octets ;favorite: booléen - Résultat :
null;quota_exceededau-delà de 20 - Forme :
null
Les écritures qui passent par un formulaire
Enregistrer une note, publier la note d’un jeu sur PlayerVox et envoyer un
message de chat ne figurent pas dans cette liste : ce sont des intents d’écriture,
envoyés par un form à partir des valeurs que l’utilisateur a saisies. Voir
les formulaires qui écrivent des données de l’utilisateur.