Bonnes pratiques concernant les activités utilisateurUser Activities best practices

Ce guide décrit les pratiques recommandées pour la création et la mise à jour des activités des utilisateurs.This guide outlines the recommended practices for creating and updating User Activities. Pour obtenir une vue d’ensemble de la fonctionnalité d’activités utilisateur sur Windows, consultez poursuivre l’activité des utilisateurs, même sur plusieurs appareils.For an overview of the User Activities feature on Windows, see Continue user activity, even across devices. Ou consultez la section activités de l’utilisateur de Project Rome pour les implémentations d’activités sur d’autres plateformes de développement.Or, see the User Activities section of Project Rome for the implementations of Activities on other development platforms.

Quand créer ou mettre à jour des activités de l’utilisateurWhen to create or update User Activities

Étant donné que chaque application est différente, il revient à chaque développeur de déterminer la meilleure façon de mapper les actions au sein de l’application aux activités de l’utilisateur.Because every app is different, it's up to each developer to determine the best way to map actions within the app to User Activities. Vos activités utilisateur seront présentées dans Cortana et chronologie, qui se concentrent sur l’amélioration de la productivité et de l’efficacité des utilisateurs en leur aidant à revenir au contenu qu’ils ont consulté dans le passé.Your User Activities will be showcased in Cortana and Timeline, which are focused on increasing users' productivity and efficiency by helping them get back to content they visited in the past.

Recommandations généralesGeneral guidelines

  • Enregistrez une activité unique pour un groupe d’actions utilisateur associées.Record a single activity for a group of related user actions. Cela s’applique particulièrement aux sélections musicales ou aux émissions TV : une seule activité peut être mise à jour à intervalles réguliers pour refléter la progression de l’utilisateur.This is especially relevant for music playlists or TV Shows: a single Activity can be updated at regular intervals to reflect the user's progress. Dans ce cas, vous aurez une seule activité utilisateur avec plusieurs éléments d’historique représentant des périodes d’engagement sur plusieurs jours ou semaines.In this case, you will have a single User Activity with multiple History Items representing periods of engagement across multiple days or weeks. Il en va de même pour les activités basées sur les documents sur lesquelles l’utilisateur effectue une progression progressive dans votre application.The same applies to document-based activities on which the user makes gradual progress within your app.
  • Stocker les données utilisateur dans le Cloud.Store user data in the cloud. Si vous souhaitez prendre en charge des activités inter-appareils, vous devez vous assurer que le contenu requis pour réactiver cette activité est stocké dans un emplacement du Cloud.If you want to support cross-device Activities, you'll need to make sure the content required to re-engage this Activity is stored to a cloud location. Les activités spécifiques à l’appareil s’affichent dans la chronologie de l’appareil sur lequel l’activité a été créée, mais elles peuvent ne pas s’afficher sur d’autres appareils.Device-specific Activities will appear on Timeline on the device where the activity was created but may not appear on other devices.
  • Ne créez pas d’activités pour les actions que les utilisateurs n’auront pas besoin de reprendre.Do not create Activities for actions that users will not need to resume. Si votre application est utilisée pour effectuer des opérations ponctuelles simples qui ne persistent pas, vous n’avez probablement pas besoin de créer une activité utilisateur.If your application is used to complete simple, one-time operations that do not persist status, you probably do not need to create a User Activity.
  • Ne créez pas d’activités pour les actions effectuées par d’autres utilisateurs.Do not create Activities for actions completed by other users. Si un compte externe envoie un message à l’utilisateur ou @-mentions à l’intérieur de votre application, vous ne devez pas créer d’activité pour ce.If an external account sends the user a message or @-mentions them within your app, you should not create an Activity for this. Ce type d’action est mieux servi par les notifications du centre de notifications.This type of action is better served by Action Center Notifications.
    • Les scénarios de collaboration sont une exception : si plusieurs utilisateurs travaillent simultanément sur la même activité (par exemple, un document Word), il y aura des cas où un autre utilisateur aura apporté des modifications après votre utilisateur.Collaboration scenarios are an exception: If multiple users are working on the same activity together (such as a Word document), there will be cases in which another user has made changes after your user. Dans ce cas, vous souhaiterez peut-être mettre à jour l’activité existante pour refléter les modifications apportées au document.In this case, you may want to update the existing Activity to reflect changes that were made to the document. Cela implique la mise à jour des données de contenu de l’activité de l’utilisateur existant sans créer un nouvel élément d’historique.This would involve updating the existing User Activity content data without creating a new History Item.

Instructions pour des types spécifiques d’applicationsGuidelines for specific types of apps

Même si chaque application est différente, la plupart des applications sont classées dans l’un des modèles d’interaction suivants.While every app is different, most apps will fall into one of the following interaction patterns.

  • Applications basées sur un document : créez une activité par document, avec un ou plusieurs éléments d’historique reflétant les périodes d’utilisation.Document-based apps — Create one Activity per document, with one or more History Items reflecting periods of use. Il est important de mettre à jour votre activité au fur et à mesure que des modifications sont apportées au document.It is important to update your Activity as changes are made to the document.
  • Jeux : créez une activité pour chaque jeu enregistré ou monde.Games — Create one Activity for each game save or world. Si votre jeu ne prend en charge qu’une seule séquence de niveaux, vous pouvez republier la même activité dans le temps, bien que vous souhaitiez mettre à jour les données de contenu pour afficher la progression ou les réalisations les plus récentes.If your game supports only a single sequence of levels, you can re-publish the same Activity over time, although you may wish to update the content data to show the latest progress or achievements.
  • Applications Utilitaires : s’il n’y a rien dans votre application que les utilisateurs doivent quitter et reprendre, vous n’avez pas besoin d’utiliser les activités de l’utilisateur.Utility apps — If there is nothing within your app that users would need to leave and resume, you do not need to use User Activities. Un bon exemple est une application simple comme Calculator.A good example is a simple app like Calculator.
  • Applications métier : de nombreuses applications existent pour gérer des tâches ou des flux de travail simples.Line-of-business apps — Many apps exist for managing simple tasks or workflows. Créez une activité pour chaque Workflow distinct accessible par le biais de votre application (par exemple, les notes de frais seraient chacune une activité distincte, afin que l’utilisateur puisse cliquer sur une activité pour voir si un rapport particulier a été approuvé).Create one activity for each separate workflow accessed through your app (for example, expense reports would each be a separate Activity, so that the user could then click an Activity to see if a particular report was approved).
  • Applications de lecture multimédia : créez une activité par regroupement logique de contenu (par exemple, une sélection, un programme ou du contenu autonome).Media playback apps — Create one Activity per logical grouping of content (such as a playlist, program, or standalone content). La question sous-jacente pour les développeurs d’applications est de savoir si une partie de contenu (épisode TV, chanson) est comptabilisée comme contenu autonome ou comme partie d’une collection.The underlying question for app developers is whether a each piece of content (TV episode, song) counts as standalone content or part of a collection. En règle générale, si l’utilisateur choisit de lire une collection ou un contenu séquentiel, la collection est l’ensemble de l’activité.As a general rule, if the user opts to play a collection or sequential content, the collection as a whole is the activity. S’ils choisissent de lire un seul élément de contenu, il s’agit de l’activité.If they opt to play a single piece of content, then that one piece of content is the activity. Consultez les instructions plus spécifiques ci-dessous.See more specific guidelines below.
    • Musique : album/artiste/genre : si l’utilisateur sélectionne un album, un artiste ou un genre et atteint la lecture, cette collection est l’activité ; n’écrivez pas une activité distincte pour chaque chanson.Music: Album/Artist/Genre — If the user selects an Album, Artist, or Genre and hits play, that collection is the activity; do not write a separate Activity for each song. Pour les collections courtes comme un album unique ou les collections en cours de lecture dans un ordre aléatoire, il est possible que vous n’ayez pas besoin de mettre à jour l’activité pour refléter la position actuelle de l’utilisateur.For short collections like a single album or collections being played back in a random order, you may not need to update the Activity to reflect the user's current position. Pour une lecture séquentielle longue, telle qu’un album ou une sélection, il peut être judicieux d’enregistrer votre position dans l’album.For long sequential playback such as an album or playlist, recording your position within the album might make sense.
    • Musique : playlists intelligentes : les applications qui lisent de la musique dans un ordre aléatoire doivent enregistrer une activité unique pour cette sélection.Music: smart playlists — Applications which play music in a random order should record a single Activity for that playlist. Si l’utilisateur lit la sélection une deuxième fois, vous créez des enregistrements d’historique supplémentaires pour la même activité.If the user plays the playlist a second time, you would create additional history records for the same Activity. L’enregistrement de la position actuelle de l’utilisateur dans la sélection n’est pas nécessaire, car le classement est aléatoire.Recording the user's current position in the playlist is not necessary because the ordering is random.
    • Série TV : Si votre application est configurée pour jouer le prochain épisode après l’achèvement de la série active, vous devez écrire une seule activité pour la série TV.TV series — If your app is configured to play the next episode after the current one is complete, you should write a single Activity for the TV series. Lorsque vous jouez aux différents épisodes de plusieurs sessions d’affichage, vous mettez à jour votre activité pour refléter la position actuelle dans la série, et plusieurs enregistrements d’historique sont créés.As you play the various episodes across multiple viewing sessions, you'll update your Activity to reflect the current position in the series, and multiple history records will be created.
    • Film : un film est un élément de contenu unique et doit avoir son propre enregistrement d’historique.Movie — A movie is a single piece of content and should have its own history record. Si l’utilisateur cesse de regarder la vidéo au cours de la procédure, il est souhaitable d’enregistrer sa position.If the user stops watching the movie part-way through, it is desirable to record their position. Lorsqu’ils souhaitent le reprendre à l’avenir, l’activité peut reprendre le film là où ils se sont arrêtés, ou même demander à l’utilisateur s’il souhaite reprendre ou démarrer au début.When they wish to resume it in the future, the Activity could resume the movie where they left off, or even ask the user if they wish to resume or start at the beginning.

Conception de l’activité utilisateurUser Activity design

Les activités de l’utilisateur se composent de trois composants : un URI d’activation, des données visuelles et des métadonnées de contenu.User Activities consist of three components: an activation URI, visual data, and content metadata.

  • L’URI d’activation est un URI qui peut être passé à une application ou à une expérience afin de reprendre l’application avec un contexte spécifique.The activation URI is a URI that can be passed to an application or experience in order to resume the application with a specific context. En règle générale, ces liens prennent la forme d’un gestionnaire de protocole pour un schéma (par exemple, « My-app://page2 ? action = Edit »).Typically, these links take the form of protocol handler for a scheme (for example, "my-app://page2?action=edit"). Il revient au développeur de déterminer comment les paramètres d’URI seront gérés par leur application.It is up to the developer to determine how URI parameters will be handled by their app. Pour plus d’informations, consultez gérer l’activation d’URI .See Handle URI activation for more information.
  • Les données visuelles, composées d’un ensemble de propriétés obligatoires et facultatives (par exemple : titre, description ou éléments de carte adaptative), permettent aux utilisateurs d’identifier visuellement une activité.The visual data, consisting of a set of required and optional properties (for example: title, description, or Adaptive Card elements), allow users to visually identify an Activity. Voir ci-dessous pour obtenir des instructions sur la création de visuels de carte adaptative pour votre activité.See below for guidelines on creating Adaptive Card visuals for your Activity.
  • Les métadonnées de contenu sont des données JSON qui peuvent être utilisées pour regrouper et récupérer des activités dans un contexte spécifique.The content metadata is JSON data that can be used to group and retrieve activities under a specific context. En général, cela prend la forme de http://schema.org données.Typically, this takes the form of http://schema.org data. Voir ci-dessous pour obtenir des instructions sur la saisie de ces données.See below for guidelines on filling out this data.

Instructions pour la conception de cartes adaptativesAdaptive Card design guidelines

Lorsque les activités s’affichent dans la chronologie, elles s’affichent à l’aide de l' infrastructure de carte adaptative.When Activities appear in Timeline, they are displayed using the Adaptive Card framework. Si le développeur ne fournit pas de carte adaptative pour chaque activité, la chronologie crée automatiquement une carte simple basée sur le nom de l’application/l’icône, le champ titre requis et le champ description facultative.If the developer does not provide an Adaptive Card for each Activity, Timeline will automatically create a simple card based on the app name/icon, the required Title field, and the optional Description field.

Les développeurs d’applications sont encouragés à fournir des cartes personnalisées à l’aide du schéma JSON de carte adaptative simple.App developers are encouraged to provide custom cards using the simple Adaptive Card JSON schema. Pour obtenir des instructions techniques sur la construction d’objets carte adaptative, consultez la documentation sur les cartes adaptatives .See the Adaptive Cards documentation for technical instructions on how to construct Adaptive Card objects. Reportez-vous aux instructions ci-dessous pour concevoir des cartes adaptatives dans les activités des utilisateurs.Refer to the guidelines below for designing Adaptive Cards in User Activities.

  • Utiliser des imagesUse images
    • Utilisez une image unique pour chaque activité, si possible.Use a unique image for each Activity, if possible. Le nom et l’icône de votre application s’affichent automatiquement en regard de la carte de votre activité ; des images supplémentaires aideront les utilisateurs à localiser l’activité qu’ils recherchent.Your application name and icon will automatically be displayed next to your Activity's card; additional images will help users locate the Activity they are looking for.
    • Les images ne doivent pas inclure de texte que l’utilisateur est censé lire.Images should not include text that the user is expected to read. Ce texte ne sera pas disponible pour les utilisateurs ayant des besoins d’accessibilité et ne peut pas être recherché.This text won't be available to users with accessibility needs and cannot be searched.
    • Si l’image ne contient pas de texte et peut être rognée à un ratio de 2:1, vous devez l’utiliser comme une image d’arrière-plan.If the image doesn't contain text and can be cropped to about a 2:1 ratio, you should use it as a background image. Il en résulte une carte d’activité en gras qui sera mise en évidence dans la chronologie.This results in a bold activity card which will stand out in Timeline. L’image sera légèrement obscurcie pour s’assurer que le texte reste visible sur la carte. dans ce cas, il est recommandé d’utiliser uniquement le nom de l’activité, car un texte plus petit peut devenir difficile à lire.The image will be darkened slightly to ensure the text remains visible on the card, and you are encouraged to only use the Activity Name in this case, as smaller text can become hard to read.
    • Si l’image ne peut pas être rognée à 2:1, vous devez la placer dans la carte d’activité.If the image cannot be cropped to 2:1, you should put it within the Activity Card.
      • Si les proportions sont carrées ou portrait, ancrez l’image sur le côté droit de la carte sans marges.If the aspect ratio is Square or Portrait, anchor the image on the right side of the card with no margins.
      • Si les proportions sont paysage, ancrez l’image dans le coin supérieur droit de la carte.If the aspect ratio is Landscape, anchor the image to the upper-right corner of the card.
  • Chaque activité est requise pour fournir un nom d’activité, qui doit toujours être affiché.Each activity is required to provide an Activity Name, which should always be shown.
    • Ce nom doit être affiché dans l’angle supérieur gauche de la carte à l’aide de l’option de texte long gras.This name should be displayed in the upper-left corner of the card using the large bold text option. Il est important que le nom soit facilement identifiable, car il s’agit de la seule partie que les utilisateurs verront quand l’activité est affichée dans les scénarios Cortana.It is important that the name is easily recognizable, as this is the only part users will see when the activity is shown in Cortana scenarios. L’indication du même nom dans la chronologie permet aux utilisateurs de parcourir plus facilement un grand nombre d’activités.Showing the same name in Timeline makes it easier for users to browse a large number of Activities.
  • Utilisez le même style visuel pour toutes les activités de votre application, afin que les utilisateurs puissent facilement localiser les activités de votre application dans la chronologie.Use the same visual style for all of the Activities from your app, so that users can easily locate your app's activities in the Timeline.
    • Par exemple, les activités doivent toutes utiliser la même couleur d’arrière-plan.For example, Activities should all use the same background color.
  • Utilisez les informations de texte supplémentaires avec modération.Use supplemental text information sparingly.
    • Évitez de remplir la carte avec du texte et utilisez uniquement des informations supplémentaires qui aident les utilisateurs à trouver l’activité appropriée ou qui reflète des informations d’État (telles que la progression actuelle d’une tâche particulière).Avoid filling the card with text, and only use supplemental information that aids users in finding the right activity or reflects state information (such as the current progress in a particular task).

Instructions relatives aux métadonnées de contenuContent metadata guidelines

Les activités des utilisateurs peuvent également contenir des métadonnées de contenu, que Windows et Cortana utilisent pour catégoriser les activités et générer des inférences.User Activities can also contain content metadata, which Windows and Cortana use to categorize Activities and generate inferences. Les activités peuvent ensuite être regroupées autour d’un sujet particulier, tel qu’un emplacement (si l’utilisateur recherche des vacances), un objet (si l’utilisateur recherche un article) ou une action (si l’utilisateur fait des achats pour un produit particulier sur différentes applications et sites Web).Activities can then be grouped around a particular topic, such as a location (if the user is researching vacations), object (if the user is researching something) or action (if the user is shopping for a particular product across different apps and websites). Il est judicieux de représenter à la fois les noms et les verbes impliqués dans une activité.It's a good idea to represent both the nouns and the verbs involved in an activity.

Dans l’exemple suivant, le code JSON des métadonnées de contenu, suivant les normes de Schema.org, représente le scénario : « John a joué à des oiseaux en colère avec Steve ».In the following example, the content metadata JSON, following the standards of Schema.org, represents the scenario: "John played Angry Birds with Steve."

// John played angry birds with Steve.
{
  "@context": "http://schema.org",
  "@type": "PlayAction",
  "agent": {
    "@type": "Person",
    "name": "John"
  },
  "object": {
    "@type": "MobileApplication",
    "name": "Angry Birds."
  },
  "participant": {
    "@type": "Person",
    "name": "Steve"
  }
}

API clésKey APIs