Comment utiliser le contexte de l'application
Published: 2024-07-09 07:04:35

PubNub [App Context](https://www.pubnub.com/products/app-context/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) simplifie le développement de fonctionnalités complexes en temps réel en fournissant un mécanisme de stockage sans serveur pour les informations sur les utilisateurs, les canaux et les membres. App Context déclenche des événements chaque fois que les données changent, ce qui permet à vos applications de se mettre à jour en temps réel et les données stockées peuvent être utilisées dans [Illuminate](https://www.pubnub.com/products/illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Functions](https://www.pubnub.com/products/functions/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) et d'autres services PubNub pour prendre des décisions plus intelligentes. Vous pouvez également gérer ces données par le biais d'une interface intuitive, sans code, avec [BizOps Workspace](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).

Qu'est-ce que l'App Context ?
-----------------------------

[App Con](https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) text (anciennement connu sous le nom d'Objects) vous permet de :

-   Donner un sens aux utilisateurs et aux canaux de votre application, ainsi qu'aux relations entre eux.
-   Stocker les métadonnées de toutes vos entités sur le serveur, ce qui simplifie la fourniture d'une source globale de vérité pour vos clients. Notez qu'un utilisateur ne doit pas nécessairement représenter un être humain, et qu'il est courant de stocker le statut de l'appareil dans l'objet utilisateur à la place.
-   Recevoir des événements instantanés en temps réel lorsque les valeurs d'un objet changent.

Bien que n'importe quelle application puisse utiliser App Context, il est particulièrement populaire auprès des développeurs qui créent des [solutions de chat](https://www.pubnub.com/solutions/chat/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).

App Context fournit un ensemble de champs suggérés pour vos [utilisateurs](https://www.pubnub.com/docs/general/metadata/users-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) et vos [canaux](https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), ainsi que des champs suggérés pour les [adhésions](https://www.pubnub.com/docs/general/metadata/membership-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) entre eux. La plupart de ces champs sont facultatifs, vous pouvez donc choisir les champs que vous remplissez, et vous pouvez également fournir vos propres champs personnalisés.

![Diagram showing user management, memberhip, channel management](https://www.pubnub.com/cdn/3prze68gbwl1/5ICbXWgNTJNc5kXAAQ4qJI/40b24d228d9ed97e17e47b027469bcdf/app_context_diagram.png "How-to - BizOps Workspace Manage Users and Channels - Image 01")

Cas d'utilisation d'App Context
-------------------------------

Comme nous l'avons mentionné, App Context est particulièrement populaire auprès des développeurs qui créent des solutions de chat, mais il peut être utilisé dans une grande variété de cas :

-   **Chat :** Stockez les informations sur l'utilisateur (nom, photo de profil, statut "en vacances", titre du poste), les informations sur le canal (icône, description, audience), les rôles des utilisateurs et gardez une trace du dernier message lu par canal et par utilisateur.
-   **Sports, médias et divertissements :** Vote et sondage en direct, jeu-questionnaire en direct, enchères en temps réel, incrustations CTA (appel à l'action) pour les marchandises ou les promotions.
-   **Jeux :** Statistiques des joueurs en temps réel, y compris le niveau du joueur, les parties gagnées, les badges ; suivi et gestion des classements.
-   **Plus :** Statut de l'utilisateur absent/actif, score de confiance de l'utilisateur pour la détection des fraudes, suivi de la localisation de l'utilisateur, états des appareils IoT tels que le niveau de la batterie ou la dernière lecture du capteur.

Comment activer l'App Context
-----------------------------

Le contexte applicatif peut être activé comme suit :

1.  Connectez-vous au [portail d'administration](https://admin.pubnub.com/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr)
2.  Cliquez sur l'onglet "Apps" sur le côté gauche du portail.
3.  Cliquez sur une application. Vous serez amené à la page des ensembles de clés pour cette application.
4.  Si vous ne l'avez pas encore fait, créez un nouvel ensemble de clés en cliquant sur le bouton "Créer un nouvel ensemble de clés". Vous accéderez à la page de configuration de cet ensemble de clés.
5.  Activez App Context en cliquant sur le curseur.
6.  Le paramètre " **Bucket Region** " correspond à la région dans laquelle vos données sont stockées. Veuillez noter que la région ne peut pas être modifiée après avoir enregistré les changements apportés à l'ensemble de clés.
7.  Si les paramètres **User Metadata Events** et **Channel Metadata Events** sont activés, les événements relatifs à l'utilisateur et au canal sont déclenchés lorsque des données sont définies ou supprimées dans la base de données, comme nous le verrons plus loin.
8.  Lorsque le paramètre Événements relatifs aux **membres** est activé, les événements relatifs aux membres sont déclenchés lorsque des membres sont ajoutés, mis à jour ou supprimés, comme nous le verrons plus loin.
9.  Les autres options n'entrent pas dans le cadre de cet article, mais vous pouvez vous référer à la [documentation App Context](https://www.pubnub.com/docs/general/metadata/basics#configuration?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour plus d'informations.
10.  Cliquez sur **Enregistrer les modifications** pour enregistrer ces changements.

Contexte applicatif de l'utilisateur
------------------------------------

Lorsqu'un nouvel utilisateur est enrôlé dans votre application, peut-être par le biais d'un fournisseur d'identité externe, vous devez avoir un moyen d'identifier cet utilisateur de manière unique pour PubNub ; c'est l'[ID utilisateur](https://www.pubnub.com/docs/general/setup/users-and-devices?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) que le client de votre utilisateur utilisera pour initialiser le SDK PubNub. L'ID utilisateur PubNub peut ne pas être le même que l'ID que vous utilisez ailleurs dans votre solution pour identifier ce même utilisateur, nous recommandons donc de garder une trace de cela dans le champ 'External ID'.

Le nom d'utilisateur, l'email et l'URL du profil ne nécessitent pas d'explication, mais l'avantage de les conserver dans App Context signifie que si un utilisateur modifie l'un de ces champs, les changements peuvent être propagés à l'échelle à tous les clients qui écoutent en utilisant les événements App Context, qui sont pris en charge par tous nos SDKs.

### Comment créer une représentation d'utilisateur dans App Context ?

Il y a deux façons de créer un utilisateur dans App Context.

1.  Les utilisateurs peuvent être créés et gérés en utilisant [BizOps Workspace](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), qui se trouve dans le portail d'administration de PubNub. Cela ne nécessite aucun code, et le processus est expliqué avec des exemples dans l'article séparé : [Comment gérer les utilisateurs et les canaux avec BizOps Workspace](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr)
2.  Des API sont exposées à travers chacun de nos SDK pour créer des utilisateurs. Si vous utilisez notre SDK [de](https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) chat, ce SDK gère le contexte de l'application pour vous dans les coulisses ; par exemple, la méthode[" createUser()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr)" du SDK de chat appellera le [setUIDMetadata](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-user-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) de JavaScript sous les couvertures pour créer un utilisateur. Des API dédiées sont fournies pour modifier les données de votre contexte d'application si vous utilisez un SDK autre que le SDK de chat. J'ai déjà mentionné l'API JavaScript [setUIDMetadata](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-user-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), mais il existe des équivalents pour toutes nos API, y compris [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), etc.

Contexte de l'application du canal
----------------------------------

PubNub crée automatiquement des canaux chaque fois qu'un utilisateur s'y abonne ou y publie, mais les canaux représentent probablement quelque chose de significatif pour votre application, par exemple, dans une application de chat, vous pouvez avoir un chat de groupe qui utilise un canal pour communiquer ou un événement en direct peut utiliser un canal dédié pour gérer les sondages.

En spécifiant un contexte d'application pour un canal, vous stockez et mettez à jour toutes les métadonnées souhaitées relatives à ce canal, ces mises à jour étant éventuellement propagées à tous les clients intéressés. Vous pouvez donner un nom à un canal, par exemple "Chat entre l'utilisateur A et l'utilisateur B", et il se peut que le canal soit lié à un stockage de documents, qui pourrait être suivi dans un champ "URI" personnalisé.

### Comment créer une représentation de canal dans App Context ?

Comme pour les utilisateurs, il y a deux façons de créer un canal dans App Context.

1.  Les canaux peuvent être créés et gérés en utilisant [BizOps Workspace](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr). Cela ne nécessite aucun code, et le processus est expliqué avec des exemples dans l'article séparé : [Comment gérer les utilisateurs et les canaux avec BizOps Workspace](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr)
2.  Des API sont exposées à travers chacun de nos SDK pour créer des canaux. Si vous utilisez notre [SDK de chat](https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), celui-ci gère le contexte de l'application pour vous dans les coulisses ; par exemple, la famille de méthodes["Créer un](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) canal" appellera JavaScript's [setChannelMetadata()](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) sous les couvertures. Si vous utilisez un SDK autre que le SDK de chat, des API dédiées sont fournies pour modifier vos données de contexte d'application, y compris [JavaScript](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), etc.

Contexte applicatif de l'adhésion
---------------------------------

Après avoir défini le contexte applicatif pour les utilisateurs et les canaux, nous pouvons maintenant définir la relation entre les deux en précisant si les utilisateurs sont ["membres"](https://www.pubnub.com/docs/general/metadata/membership-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) d'un canal.

Lorsqu'un utilisateur rejoint un canal, il peut recevoir des mises à jour sur tous les autres membres de ce même canal ; il peut être notifié lorsque des utilisateurs `rejoignent` ou `quittent le` canal, ainsi que lorsque le contexte applicatif de cet utilisateur est mis à jour (par exemple, lorsqu'il met à jour son nom).

Il s'agit d**'un mécanisme très puissant qui offre une grande valeur ajoutée**, en particulier pour les développeurs d'applications de chat. Si vous n'utilisiez pas App Context, vous devriez suivre vous-même chaque utilisateur, les canaux dont il est membre et notifier tous les autres membres du même canal lorsque l'utilisateur rejoint ou quitte le canal. Ce défi n'est pas linéaire, donc plus vous avez d'utilisateurs dans votre solution, plus il devient difficile pour vous d'essayer de gérer toutes ces informations de manière centralisée.

En utilisant App Context, vos clients de chat reçoivent toutes les informations dont ils ont besoin pour maintenir leur état interne, et vous avez également un contrôle total sur ces données avec le PubNub [Access Manager](https://www.pubnub.com/docs/general/security/access-control?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour empêcher tout accès non autorisé.

### Comment créer une adhésion ?

Comme pour les utilisateurs et les canaux, il y a deux façons de créer une adhésion.

1.  Les membres peuvent être créés et gérés en utilisant [BizOps Workspace](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) sans écrire de code. Veuillez consulter la section [Gérer les membres de](https://www.pubnub.com/docs/bizops-workspace/channel-management#manage-membership?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) notre documentation pour plus de détails.
2.  Des API sont exposées à travers chacun de nos SDK pour créer des canaux. Si vous utilisez notre [SDK de chat](https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), il gère le contexte de l'application pour vous dans les coulisses ; par exemple, la famille de méthodes["Créer un](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) canal" appellera JavaScript's [setMemberships](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-memberships?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) sous les couvertures. Si vous utilisez un SDK autre que le SDK de chat, des API dédiées sont fournies pour modifier vos données de contexte d'application, y compris [JavaScript](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-memberships?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), etc.

Réception d'événements en temps réel lorsque le contexte applicatif change
--------------------------------------------------------------------------

Lorsque les données du contexte d'application changent, votre application reçoit un événement qui vous informe en temps réel de ce qui a changé. Cela vous permet de créer des applications réactives sans avoir à interroger le serveur pour obtenir des mises à jour.

### Réception des changements de contexte d'application à travers le SDK PubNub (à l'exception du SDK Chat)

Tous les SDKs PubNub exposent des "Event Listeners", et c'est à travers ces listeners que vous pouvez écouter les `événements d'objets`, qui sont déclenchés chaque fois que les données de l'App Context changent.

Notez qu'il y a une légère nuance ici, car, au moment de la rédaction, certains de nos SDKs supportent un nouveau format pour les "event listeners", comme expliqué dans [ce blog à propos des mises à jour du moteur d'événements et des event listeners](https://www.pubnub.com/blog/updates-to-the-event-engine-and-event-listeners/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr). Quel que soit le format de l'écouteur d'événement, le principe reste le même : votre application doit s'enregistrer pour recevoir les événements du contexte de l'application par l'intermédiaire d'un écouteur fourni par le SDK.

Comme indiqué dans la [documentation du SDK JavaScript](https://www.pubnub.com/docs/sdks/javascript/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), l'enregistrement pour les événements du contexte applicatif se présente comme suit :

```js
const channel = pubnub.channel('channel_1');
const subscription = channel.subscription();
subscription.onObjects = 
  (objectsEvent) => { console.log("Objects event: ", objectsEvent); };
```

La documentation décrivant comment s'enregistrer pour les événements de contexte d'application dans d'autres langages peut être trouvée dans les endroits suivants : [Java](https://www.pubnub.com/docs/sdks/java/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) (Notez que Python appelle les événements "métadonnées", alors que les autres SDKs se réfèrent aux événements en tant qu'"objets"), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/configuration#event-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), etc.

Pour un exemple pratique et une démonstration interactive, veuillez vous référer à l'article [Comment gérer les utilisateurs et les canaux avec BizOps Workspace](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/#h-7?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).

### Recevoir des changements de contexte d'application à travers le PubNub Chat SDK

Le PubNub Chat SDK exposera les événements de contexte d'application par le biais de la famille d'API [streamUpdates()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/membership#get-updates?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).

Quelques exemples, tirés de l'[application de démonstration du SDK Chat](https://github.com/PubNubDevelopers/Chat-SDK-Demo-Web) pour le web :

```js
//  Detect changes to the current User
useEffect(() => {
  return currentUser.streamUpdates(updatedUser => {
    if (updatedUser.name) {
      setName(updatedUser.name)
    }
    if (updatedUser.profileUrl) {
      setProfileUrl(updatedUser.profileUrl)
    }
  })
}, [currentUser])
```

```js
//  Detect changes to an array of Channels
useEffect(() => {
if (chat && privateGroups) {
    return Channel.streamUpdatesOn(privateGroups, channels => {
    //  The array of channels, privateGroups, has been updated
}
}, [chat, privateGroups])
```

Pour un exemple de travail basé sur notre exemple plus simple pour le SDK Chat, veuillez vous référer à l'article [Comment gérer les utilisateurs et les canaux avec BizOps Workspace](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/#h-10?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).

App Context et PubNub Illuminate
--------------------------------

[PubNub Illuminate](https://www.pubnub.com/products/illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) est un produit d'analyse et de prise de décision en temps réel qui peut être personnalisé en fonction du cas d'utilisation unique d'une organisation. Le produit est conçu pour les gestionnaires de produits et les analystes, leur permettant de faire ce qui suit :

-   Définir des mesures agrégées personnalisées en temps réel.
-   Configurer et déployer des règles de décision avec des conditions et des actions.
-   Visualiser immédiatement les mesures suivies, les actions exécutées et leurs résultats.

Vous pouvez faire tout cela en temps réel sans détourner votre équipe d'ingénieurs de ses projets en cours.

Une explication complète de ce qu'est PubNub Illuminte, et comment il peut vous fournir des informations immédiatement exploitables sur vos données, sort du cadre de cet article, mais nous vous invitons à vous référer à notre [documentation](https://www.pubnub.com/docs/illuminate/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) et à notre [aperçu du produit](https://www.pubnub.com/blog/real-time-decisioning-with-illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour plus d'informations.

En résumé : vous définissez les **métriques** liées à votre application, c'est-à-dire les éléments que vous souhaitez mesurer. Par exemple, dans un scénario de suivi des actifs, il peut s'agir du nombre d'heures écoulées depuis la prise de commande. Lorsqu'une [**condition**](https://www.pubnub.com/docs/illuminate/decisions/basics#conditions?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) est remplie pour cette mesure, par exemple si le nombre d'heures écoulées depuis la commande dépasse une certaine valeur, vous pouvez prendre des **mesures**.

L'[action](https://www.pubnub.com/docs/illuminate/decisions/basics#actions?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) à entreprendre est flexible, mais trois des actions possibles sont liées au contexte de l'application :

![How-to - Use App Context - Image 02](https://www.pubnub.com/cdn/3prze68gbwl1/A2XZHFCSuF3nUxDjLDFjX/9b018c14ac44df085c2ad40b40619602/illuminate_app_context.png "How-to - Use App Context - Image 02")

### Mettre à jour l'utilisateur avec PubNub Illuminate

Permet de définir des métadonnées utilisateur prédéfinies ou personnalisées. La capture d'écran ci-dessous montre que l'utilisateur avec l'ID 123 a son statut défini à la valeur statique "Nouveau statut", mais il est également possible de définir une valeur dynamique basée sur la **condition** qui a déclenché l'**action**.

![How-to - Use App Context - Image 03](https://www.pubnub.com/cdn/3prze68gbwl1/4Rx8xBy406xLFdGoA38Ll2/f7b62aa24fdba0df4cec6d035a8e5812/illuminate_app_context_user.png "How-to - Use App Context - Image 03")

### Mise à jour du canal avec PubNub Illuminate

Permet de définir des métadonnées prédéfinies ou personnalisées pour le canal. La capture d'écran ci-dessous montre que le canal avec l'ID 123 a son nom défini à la valeur statique 'New Name', mais il est également possible de définir une valeur dynamique basée sur la **condition** qui a déclenché l'**action**.

![How-to - Use App Context - Image 04](https://www.pubnub.com/cdn/3prze68gbwl1/5bVUjl1DTF1IENrhLv6T9v/b88e265164dce7dd1f39ed5437467611/illuminate_app_context_channel.png "How-to - Use App Context - Image 04")

### Mettre à jour les adhésions avec PubNub Illuminate

Permet de définir des métadonnées d'adhésion prédéfinies ou personnalisées. La capture d'écran ci-dessous montre l'appartenance de l'ID utilisateur 123 au canal 123 dont l'état est défini sur la valeur statique "Nouvel état". Il est également possible de définir une valeur dynamique basée sur la **condition** qui a déclenché l'**action**.

![How-to - Use App Context - Image 05](https://www.pubnub.com/cdn/3prze68gbwl1/ZfrPMbbrj55hsyGpihCC3/44b519ccedde12e574bd44835ce799a3/illuminate_app_context_membership.png "How-to - Use App Context - Image 05")

Contexte de l'application et fonctions PubNub
---------------------------------------------

PubNub fournit des fonctions pour capturer les événements qui se produisent sur la plateforme PubNub. Les fonctions vous permettent d'écrire du code ou de tirer parti des intégrations existantes pour transformer, réacheminer, augmenter, filtrer et même agréger des données. Veuillez consulter la [documentation sur les fonctions](https://www.pubnub.com/docs/serverless/functions/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour un aperçu plus complet des fonctions PubNub, mais cet article examinera comment les fonctions PubNub sont liées à l'App Context.

### Mise à jour de l'App Context à partir de PubNub Functions

L'environnement dans lequel les fonctions s'exécutent a accès au [module PubNub](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr); ce module a un accès complet à l'App Context sur votre clavier, et quelques exemples tirés de la documentation sont donnés ci-dessous. :

Exemple d'[obtention des métadonnées du contexte applicatif de l'utilisateur (Get User App Context Metadata](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module#get-user-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr))

```js
export default (event) => {
  const pubnub = require('pubnub');

  return pubnub.objects.getUUIDMetadata({
    uuid: 'my-uuid',
    include: {
      customFields: false,
    },
  })
  .then((resp) => {
    console.log(resp);
    return event.ok('Fetched UUID metadata successfully.');
  })
  .catch((err) => {
    console.log(err);
    return event.abort('Failed to fetch UUID metadata');
  });
};
```

Exemple de [définition des métadonnées du contexte applicatif d'un canal](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module#set-channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr)

```js
export default (event) => {
  const pubnub = require('pubnub');

  return pubnub.objects.setChannelMetadata({
    channel: 'my-channel',
    data: {
      name: 'channel-name',
      description: 'What a great channel',
      custom: {
        foo: 'bar',
      },
    },
    include: {
      customFields: false,
    },
  })
  .then((resp) => {
    console.log(resp);
    return event.ok('Set channel metadata successfully.');
  })
  .catch((error) => {
    console.log(err);
    return event.abort('Failed to set channel metadata.');
  });
};
```

Pour un ensemble complet d'exemples de code, veuillez vous référer à la documentation du [module PubNub](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).

### Déclenchement d'une fonction PubNub lors d'un changement de contexte applicatif

Il existe de nombreux types d'événements qui peuvent déclencher une fonction, comme indiqué dans la [documentation sur les types d'événements](https://www.pubnub.com/docs/serverless/functions/overview#event-types?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr). Ils permettent notamment de détecter l'envoi de messages et de signaux, de déclencher des fonctions après des événements de présence et d'exécuter des fonctions à un intervalle spécifié ou à la demande. Au moment de la rédaction de ce document, il **n'est pas** possible d'exécuter des fonctions après des mises à jour du contexte d'application, mais si votre application en a besoin, veuillez contacter notre [équipe d'assistance](https://support.pubnub.com/hc/en-us?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), qui se fera un plaisir d'étudier vos cas d'utilisation.

Prochaines étapes
-----------------

Pour voir App Context en action, vous pouvez consulter notre [démo Chat](https://www.pubnub.com/demos/chat/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) qui utilise App Context avec notre SDK Chat pour montrer ce à quoi une application de chat pourrait ressembler avec un stockage sans serveur. La démo Chat vous permet de définir les métadonnées de l'utilisateur et du canal et de voir ces changements se propager aux autres auditeurs et membres en temps réel.

Consultez également notre série connexe en 3 parties sur l'espace de travail BizOps qui dépend de l'App Context et couvre comment : [Gérer les utilisateurs et les canaux](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr), [surveiller et modérer les](https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) conversations, et [modérer le chat en toute sécurité](https://www.pubnub.com/how-to/securely-moderate-chat-and-users/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).

Enfin, n'hésitez pas à contacter l'équipe DevRel à l'adresse [devrel@pubnub.com](mailto:devrel@pubnub.com) ou à contacter notre équipe de [support](https://support.pubnub.com/hc/en-us?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour obtenir de l'aide sur n'importe quel aspect de votre développement PubNub.

Comment PubNub peut-il vous aider ?
===================================

Cet article a été publié à l'origine sur [PubNub.com](https://www.pubnub.com/how-to/use-app-context/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr)

Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.

La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.

Découvrez PubNub
----------------

Découvrez le [Live Tour](https://www.pubnub.com/tour/introduction/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.

S'installer
-----------

Créez un [compte PubNub](https://admin.pubnub.com/signup/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) pour un accès immédiat et gratuit aux clés PubNub.

Commencer
---------

La [documentation PubNub](https://www.pubnub.com/docs?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr) vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre [SDK](https://www.pubnub.com/docs?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=fr).