Jak korzystać z kontekstu aplikacji
Published: 2024-07-09 06:42:11

PubNub [App Cont](https://www.pubnub.com/products/app-context/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) ext upraszcza tworzenie złożonych funkcji czasu rzeczywistego, zapewniając bezserwerowy mechanizm przechowywania informacji o użytkownikach, kanałach i członkostwie. App Context wyzwala zdarzenia przy każdej zmianie danych, umożliwiając aktualizację aplikacji w czasie rzeczywistym, a przechowywane dane mogą być wykorzystywane w [Illuminate](https://www.pubnub.com/products/illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Functions](https://www.pubnub.com/products/functions/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) i innych usługach PubNub do podejmowania mądrzejszych decyzji. Możesz także zarządzać tymi danymi za pomocą intuicyjnego interfejsu [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=pl).

Co to jest App Context?
-----------------------

App[Context](https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) (wcześniej znany jako Objects) pozwala na:

-   Nadanie znaczenia użytkownikom i kanałom w aplikacji oraz relacjom między nimi.
-   Przechowywanie metadanych dla wszystkich podmiotów na serwerze, co ułatwia zapewnienie globalnego źródła prawdy dla klientów. Należy pamiętać, że użytkownik nie musi reprezentować człowieka, a zamiast tego często przechowuje się stan urządzenia w obiekcie użytkownika.
-   Otrzymywanie natychmiastowych zdarzeń w czasie rzeczywistym za każdym razem, gdy zmieniają się wartości obiektu.

Chociaż każda aplikacja może korzystać z App Context, jest on szczególnie popularny wśród programistów tworzących [rozwiązania Chat](https://www.pubnub.com/solutions/chat/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl).

App Context zapewnia zestaw sugerowanych pól dla [użytkowników](https://www.pubnub.com/docs/general/metadata/users-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) i [kanałów](https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), a także sugerowane pola dla [członkostwa](https://www.pubnub.com/docs/general/metadata/membership-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) między nimi. Większość z tych pól jest opcjonalna, więc możesz wybrać, które pola wypełniasz, a także podać własne pola niestandardowe.

![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")

Przypadki użycia App Context
----------------------------

Jak wspomniano, App Context jest szczególnie popularny wśród programistów tworzących rozwiązania Chat, ale może być używany w różnych przypadkach użycia:

-   **Czat:** Przechowywanie informacji o użytkowniku (imię i nazwisko, zdjęcie profilowe, status "na wakacjach", stanowisko), informacje o kanale (ikona, opis, odbiorcy), role użytkowników i śledzenie ostatniej przeczytanej wiadomości na kanale, na użytkownika.
-   **Sport, media i rozrywka:** Głosowanie i ankiety na żywo, ciekawostki na żywo, licytacja w czasie rzeczywistym, nakładki CTA (wezwanie do działania) dla towarów lub promocji.
-   **Gry:** Statystyki gracza w czasie rzeczywistym, w tym poziom gracza, wygrane gry, odznaki; śledzenie i zarządzanie tabelą liderów
-   **Więcej:** Status nieobecności/aktywności użytkownika, wynik zaufania użytkownika do wykrywania oszustw, śledzenie lokalizacji użytkownika, statusy urządzeń IoT, takie jak poziom naładowania baterii lub ostatni odczyt czujnika.

Jak włączyć kontekst aplikacji
------------------------------

Kontekst aplikacji można włączyć w następujący sposób:

1.  Zaloguj się do [portalu administratora](https://admin.pubnub.com/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl)
2.  Kliknij zakładkę "Aplikacje" po lewej stronie portalu.
3.  Kliknij aplikację. Zostaniesz przeniesiony na stronę zestawów kluczy dla tej aplikacji.
4.  Jeśli jeszcze tego nie zrobiłeś, utwórz nowy zestaw kluczy, klikając przycisk "Utwórz nowy zestaw kluczy". Nastąpi przejście do strony konfiguracji tego zestawu kluczy
5.  Włącz kontekst aplikacji, klikając suwak
6.  Ustawienie **Bucket Region** to region, w którym przechowywane są dane. Należy pamiętać, że regionu nie można zmodyfikować po zapisaniu zmian w zestawie kluczy.
7.  Jeśli ustawienia **User Metadata Events** i **Channel Metadata Events** są włączone, zdarzenia użytkownika i kanału są wyzwalane, gdy dane są ustawiane lub usuwane w bazie danych, jak omówiono później.
8.  Jeśli włączone jest ustawienie **Membership** Events, zdarzenia członkostwa są wyzwalane, gdy członkostwa są dodawane, aktualizowane lub usuwane, co zostanie omówione później.
9.  Pozostałe opcje są poza zakresem tego artykułu, ale więcej informacji można znaleźć w [dokumentacji App Context](https://www.pubnub.com/docs/general/metadata/basics#configuration?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl).
10.  Kliknij **Zapisz zmiany**, aby zapisać zaktualizowane zmiany.

Kontekst aplikacji użytkownika
------------------------------

Gdy nowy użytkownik zostanie zarejestrowany w aplikacji, być może za pośrednictwem zewnętrznego dostawcy tożsamości, będziesz mieć jakiś sposób na jednoznaczną identyfikację tego użytkownika w PubNub; jest to [identyfikator użytkownika](https://www.pubnub.com/docs/general/setup/users-and-devices?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), którego klient użytkownika użyje do zainicjowania PubNub SDK. Identyfikator użytkownika PubNub może nie być taki sam jak identyfikator używany w innym miejscu rozwiązania do identyfikacji tego samego użytkownika, dlatego zalecamy śledzenie tego w polu "External ID".

Nazwa użytkownika, adres e-mail i adres URL profilu nie wymagają wyjaśnienia, ale korzyść z przechowywania ich w App Context oznacza, że jeśli użytkownik zmieni którekolwiek z tych pól, zmiany mogą być propagowane na dużą skalę do wszystkich klientów nasłuchujących za pomocą zdarzeń App Context, które są obsługiwane przez wszystkie nasze zestawy SDK.

### Jak utworzyć reprezentację użytkownika w App Context?

Istnieją dwa sposoby tworzenia użytkownika App Context.

1.  Użytkownicy mogą być tworzeni i zarządzani za pomocą [BizOps Workspace](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), znajdującego się w portalu administracyjnym PubNub. Nie wymaga to żadnego kodu, a proces został wyjaśniony na przykładach w osobnym artykule: [Jak zarządzać użytkownikami i kanałami za pomocą 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=pl)
2.  Interfejsy API są dostępne za pośrednictwem każdego z naszych zestawów SDK do tworzenia użytkowników. Jeśli korzystasz z naszego [zestawu Chat SDK](https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), ten zestaw SDK obsługuje kontekst aplikacji za kulisami; na przykład metoda Chat SDK["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=pl)" wywoła [setUUIDMetadata](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=pl) JavaScript pod przykrywką, aby utworzyć użytkownika. Dedykowane interfejsy API służą do modyfikowania danych App Context w przypadku korzystania z dowolnego zestawu SDK innego niż Chat SDK. Wspomniałem już o JavaScript [setUUIDMetadata](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=pl) API, ale istnieją odpowiedniki dla wszystkich naszych API, w tym [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) itp.

Kontekst aplikacji kanału
-------------------------

PubNub tworzy kanały automatycznie za każdym razem, gdy użytkownik je subskrybuje lub publikuje, ale kanały prawdopodobnie reprezentują coś znaczącego dla aplikacji, na przykład w aplikacji czatu możesz mieć czat grupowy, który używa kanału do komunikacji lub wydarzenie na żywo może używać dedykowanego kanału do zarządzania ankietami.

Określenie App Context dla kanału spowoduje przechowywanie i aktualizowanie wszelkich pożądanych metadanych związanych z tym kanałem, a aktualizacje te będą opcjonalnie propagowane do wszystkich zainteresowanych klientów. Możesz nadać kanałowi nazwę, np. "Czat między użytkownikiem A i użytkownikiem B", a być może kanał jest związany z przechowywaniem dokumentów, które można śledzić w niestandardowym polu "URI".

### Jak utworzyć reprezentację kanału w App Context?

Podobnie jak w przypadku użytkowników, istnieją dwa sposoby tworzenia kanału App Context.

1.  Kanały można tworzyć i zarządzać nimi za pomocą [BizOps Workspace](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl). Nie wymaga to żadnego kodu, a proces ten został wyjaśniony na przykładach w osobnym artykule: [Jak zarządzać użytkownikami i kanałami za pomocą 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=pl)
2.  Interfejsy API są dostępne za pośrednictwem każdego z naszych zestawów SDK do tworzenia kanałów. Jeśli korzystasz z naszego [zestawu Chat SDK](https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), obsługuje on kontekst aplikacji za kulisami; na przykład rodzina metod["Utwórz](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) kanał" wywoła [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=pl) JavaScript pod przykrywką. Jeśli korzystasz z dowolnego zestawu SDK innego niż Chat SDK, dostępne są dedykowane interfejsy API do modyfikowania danych App Context, w tym [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=pl), [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) itp.

Kontekst aplikacji członkostwa
------------------------------

Po zdefiniowaniu App Context zarówno dla naszych użytkowników, jak i kanałów, możemy teraz zdefiniować relację między nimi, określając, czy użytkownicy są ["członkami"](https://www.pubnub.com/docs/general/metadata/membership-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) kanału.

Gdy użytkownik dołącza do kanału, może otrzymywać aktualizacje dotyczące każdego innego członka tego samego kanału; może być powiadamiany, gdy użytkownicy `dołączają` lub `odchodzą`, a także za każdym razem, gdy kontekst aplikacji tego użytkownika jest aktualizowany (np. aktualizują swoją nazwę).

Jest to**zwodniczo potężny mechanizm, który zapewnia dużą wartość**, szczególnie dla twórców aplikacji do czatu. Gdybyś nie korzystał z App Context, musiałbyś samodzielnie śledzić każdego użytkownika, którego kanały są członkami, i powiadamiać wszystkich innych w tym samym kanale, gdy użytkownik dołącza lub opuszcza. To wyzwanie nie skaluje się liniowo, więc im więcej użytkowników masz w swoim rozwiązaniu, tym trudniej jest próbować zarządzać wszystkimi tymi informacjami centralnie.

Korzystając z App Context, klienci czatu otrzymują wszystkie informacje potrzebne do utrzymania ich wewnętrznego stanu, a Ty masz pełną kontrolę nad tymi danymi dzięki PubNub [Access Manager](https://www.pubnub.com/docs/general/security/access-control?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), aby zapobiec nieautoryzowanemu dostępowi.

### Jak utworzyć członkostwo?

Podobnie jak w przypadku użytkowników i kanałów, istnieją dwa sposoby tworzenia członkostwa.

1.  Członkostwa można tworzyć i zarządzać nimi za pomocą [BizOps Workspace](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) bez pisania kodu. Więcej informacji można znaleźć w sekcji [Zarządzanie członkostwem](https://www.pubnub.com/docs/bizops-workspace/channel-management#manage-membership?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) w naszej dokumentacji.
2.  Interfejsy API są dostępne za pośrednictwem każdego z naszych zestawów SDK do tworzenia kanałów. Jeśli korzystasz z naszego [Chat SD](https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl)K, to obsługuje on kontekst aplikacji za kulisami; na przykład rodzina metod["Create](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) channel" wywoła [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=pl) JavaScript pod przykrywką. Jeśli korzystasz z dowolnego zestawu SDK innego niż Chat SDK, dostępne są dedykowane interfejsy API do modyfikowania danych App Context, w tym [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=pl), [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) itp.

Odbieranie zdarzeń w czasie rzeczywistym, gdy zmienia się App Context
---------------------------------------------------------------------

Gdy dane App Context ulegną zmianie, aplikacja otrzyma zdarzenie powiadamiające o tym, co się zmieniło w czasie rzeczywistym; pozwala to na tworzenie responsywnych aplikacji bez odpytywania serwera o aktualizacje.

### Odbieranie zmian kontekstu aplikacji za pośrednictwem PubNub SDK (z wyłączeniem Chat SDK)

Wszystkie zestawy SDK PubNub udostępniają "Event Listeners" i to właśnie za ich pośrednictwem można nasłuchiwać `zdarzeń obiektów`, które są uruchamiane za każdym razem, gdy zmieniają się dane App Context.

Należy zauważyć, że w chwili pisania tego tekstu niektóre z naszych zestawów SDK obsługują nowy format "detektorów zdarzeń", jak wyjaśniono w [tym blogu na temat aktualizacji silnika zdarzeń i dete](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=pl)ktorów zdarzeń. Niezależnie od formatu detektora zdarzeń, zasada pozostaje taka sama: aplikacja powinna zarejestrować się, aby otrzymywać zdarzenia kontekstu aplikacji za pośrednictwem detektora dostarczonego przez SDK.

Jak wyszczególniono w [dokumentacji JavaScript SD](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=pl)K, rejestracja zdarzeń App Context będzie wyglądać następująco:

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

Dokumentację opisującą sposób rejestracji zdarzeń App Context w innych językach można znaleźć w następujących lokalizacjach: [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=pl), [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=pl), [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=pl), [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=pl) (należy pamiętać, że Python nazywa zdarzenia "metadanymi", podczas gdy inne zestawy SDK odnoszą się do zdarzeń jako "obiektów"), [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=pl) itp.

Praktyczny przykład i interaktywne demo można znaleźć w artykule [How to Manage Users and Channels with 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=pl).

### Odbieranie zmian kontekstu aplikacji przez PubNub Chat SDK

PubNub Chat SDK udostępnia zdarzenia App Context poprzez rodzinę interfejsów 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=pl).

Kilka przykładów zaczerpniętych z [aplikacji Chat SDK Demo](https://github.com/PubNubDevelopers/Chat-SDK-Demo-Web) dla sieci 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])
```

Aby uzyskać działający przykład oparty na naszej prostszej próbce "uzyskiwania informacji" dla Chat SDK, zapoznaj się z artykułem [Jak zarządzać użytkownikami i kanałami za pomocą 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=pl)

Kontekst aplikacji i PubNub Illuminate
--------------------------------------

PubNub[Illuminate](https://www.pubnub.com/products/illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) to produkt do podejmowania decyzji i analizy w czasie rzeczywistym, który można dostosować do unikalnego przypadku użycia organizacji. Produkt został zaprojektowany z myślą o menedżerach produktu i analitykach, umożliwiając im wykonywanie następujących czynności:

-   Definiowanie niestandardowych zagregowanych wskaźników w czasie rzeczywistym.
-   Konfigurowanie i wdrażanie reguł decyzyjnych z warunkami i akcjami.
-   Natychmiastowe wizualizowanie śledzonych metryk, wykonywanych działań i ich wyników.

Wszystko to można robić w czasie rzeczywistym bez odrywania zespołu inżynierów od bieżących projektów.

Pełne wyjaśnienie, czym jest PubNub Illuminte i w jaki sposób może zapewnić natychmiastowy wgląd w dane, wykracza poza zakres tego artykułu, ale więcej informacji można znaleźć w naszej [dokumentacji](https://www.pubnub.com/docs/illuminate/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) i [przeglądzie produktu](https://www.pubnub.com/blog/real-time-decisioning-with-illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl).

Podsumowując: Definiujesz **metryki** związane z Twoją aplikacją, tj. rzeczy, które chcesz mierzyć. Na przykład w scenariuszu śledzenia zasobów mogą to być godziny od przyjęcia zamówienia. Gdy zostanie spełniony jakiś [**warunek**](https://www.pubnub.com/docs/illuminate/decisions/basics#conditions?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) związany z tą metryką, np. "Godziny od zamówienia" mogą przekroczyć określoną wartość, można podjąć pewne **działania**.

To, które [działanie](https://www.pubnub.com/docs/illuminate/decisions/basics#actions?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) zostanie podjęte, jest elastyczne, ale trzy z możliwych działań odnoszą się do App Context:

![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")

### Zaktualizuj użytkownika za pomocą PubNub Illuminate

Umożliwia ustawienie dowolnych predefiniowanych lub niestandardowych metadanych użytkownika. Poniższy zrzut ekranu pokazuje użytkownika o identyfikatorze 123, którego status został ustawiony na statyczną wartość "Nowy status", ale możliwe jest również ustawienie wartości dynamicznej w oparciu o **warunek**, który wyzwolił **akcję**.

![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")

### Kanał aktualizacji z PubNub Illuminate

Umożliwia ustawienie dowolnych predefiniowanych lub niestandardowych metadanych kanału. Poniższy zrzut ekranu pokazuje kanał o identyfikatorze 123, którego nazwa została ustawiona na wartość statyczną "Nowa nazwa", ale możliwe jest również ustawienie wartości dynamicznej na podstawie **warunku**, który wyzwolił **akcję**.

![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")

### Aktualizacja członkostwa za pomocą PubNub Illuminate

Umożliwia ustawienie dowolnych predefiniowanych lub niestandardowych metadanych członkostwa. Poniższy zrzut ekranu pokazuje członkostwo użytkownika o identyfikatorze 123 w kanale 123, którego status został ustawiony na wartość statyczną "Nowy status". Możliwe jest również ustawienie wartości dynamicznej w oparciu o **warunek**, który wyzwolił **akcję**.

![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")

Kontekst aplikacji i funkcje PubNub
-----------------------------------

PubNub udostępnia funkcje do przechwytywania zdarzeń zachodzących na platformie PubNub. Funkcje pozwalają pisać kod lub wykorzystywać istniejące integracje do przekształcania, przekierowywania, rozszerzania, filtrowania, a nawet agregowania danych. Więcej informacji na temat funkcji PubNub można znaleźć w [dokumentacji Fun](https://www.pubnub.com/docs/serverless/functions/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) ctions, ale w tym artykule omówimy, w jaki sposób funkcje PubNub odnoszą się do App Context.

### Aktualizacja App Context z poziomu PubNub Functions

Środowisko, w którym uruchamiane są funkcje, ma dostęp do [modułu PubNub](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl); moduł ten ma pełny dostęp do App Context na zestawie kluczy, a poniżej podano kilka przykładów zaczerpniętych z dokumentacji. :

Przykład dla 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=pl)

```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');
  });
};
```

Przykład dla [Set Channel](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=pl) App Context Metadata

```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.');
  });
};
```

Wyczerpujący zestaw przykładów kodu można znaleźć w dokumentacji [modułu PubNub](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl).

### Wyzwalanie funkcji PubNub po zmianie kontekstu aplikacji

Istnieje wiele typów zdarzeń, które mogą wyzwalać funkcję, jak wyszczególniono w [dokumentacji typów](https://www.pubnub.com/docs/serverless/functions/overview#event-types?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) zdarzeń. Obejmują one możliwość wykrywania, kiedy wysyłane są wiadomości i sygnały, wyzwalania funkcji po wystąpieniu zdarzeń obecności oraz wykonywania funkcji w określonych odstępach czasu lub na żądanie. W chwili pisania tego tekstu **nie** jest możliwe wykonywanie funkcji po aktualizacji kontekstu aplikacji, ale jeśli okaże się, że Twoja aplikacja tego potrzebuje, skontaktuj się z naszym [zespołem pomocy technicznej](https://support.pubnub.com/hc/en-us?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), który z przyjemnością omówi Twoje przypadki użycia.

Następne kroki
--------------

Aby zobaczyć App Context w akcji, możesz sprawdzić nasze Chat [Demo](https://www.pubnub.com/demos/chat/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), które wykorzystuje App Context wraz z naszym Chat SDK, aby pokazać, jak może wyglądać aplikacja czatu z bezserwerową pamięcią masową. Demo czatu pozwala ustawić metadane użytkownika i kanału oraz zobaczyć, jak zmiany te są propagowane do innych słuchaczy i członków w czasie rzeczywistym.

Zapoznaj się również z naszą powiązaną 3-częściową serią na temat przestrzeni roboczej BizOps, która zależy od App Context i obejmuje: [Zarządzanie użytkownikami i kanałami](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=pl), [Monitorowanie i moderowanie konwersacji](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=pl) oraz [Bezpieczne moderowanie](https://www.pubnub.com/how-to/securely-moderate-chat-and-users/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) czatu.

Na koniec zachęcamy do skontaktowania się z zespołem DevRel pod adresem [devrel@pubnub.com](mailto:devrel@pubnub.com) lub skontaktowania się z naszym zespołem [pomocy](https://support.pubnub.com/hc/en-us?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) technicznej w celu uzyskania pomocy w dowolnym aspekcie rozwoju PubNub.

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://www.pubnub.com/how-to/use-app-context/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Podstawą naszej platformy jest największa w branży i najbardziej skalowalna sieć komunikacyjna w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=pl).