DEV Community

Cover image for Jak korzystać z kontekstu aplikacji

Jak korzystać z kontekstu aplikacji

PubNub App Cont 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, Functions i innych usługach PubNub do podejmowania mądrzejszych decyzji. Możesz także zarządzać tymi danymi za pomocą intuicyjnego interfejsu BizOps Workspace.

Co to jest App Context?

AppContext (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.

App Context zapewnia zestaw sugerowanych pól dla użytkowników i kanałów, a także sugerowane pola dla członkostwa 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

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
  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.
  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, 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, 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
  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, ten zestaw SDK obsługuje kontekst aplikacji za kulisami; na przykład metoda Chat SDK"createUser()" wywoła setUUIDMetadata 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 API, ale istnieją odpowiedniki dla wszystkich naszych API, w tym Java, Swift, Kotlin, Python, Unity 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. 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
  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, obsługuje on kontekst aplikacji za kulisami; na przykład rodzina metod"Utwórz kanał" wywoła setChannelMetadata() 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, Java, Swift, Kotlin, Python, Unity 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" 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, 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 bez pisania kodu. Więcej informacji można znaleźć w sekcji Zarządzanie członkostwem 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 SDK, to obsługuje on kontekst aplikacji za kulisami; na przykład rodzina metod"Create channel" wywoła setMemberships 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, Java, Swift, Kotlin, Python, Unity 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 detektoró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 SDK, rejestracja zdarzeń App Context będzie wyglądać następująco:

const channel = pubnub.channel('channel_1');
const subscription = channel.subscription();
subscription.onObjects = 
  (objectsEvent) => { console.log("Objects event: ", objectsEvent); };
Enter fullscreen mode Exit fullscreen mode

Dokumentację opisującą sposób rejestracji zdarzeń App Context w innych językach można znaleźć w następujących lokalizacjach: Java, Swift, Kotlin, Python (należy pamiętać, że Python nazywa zdarzenia "metadanymi", podczas gdy inne zestawy SDK odnoszą się do zdarzeń jako "obiektów"), Unity itp.

Praktyczny przykład i interaktywne demo można znaleźć w artykule How to Manage Users and Channels with BizOps Workspace.

Odbieranie zmian kontekstu aplikacji przez PubNub Chat SDK

PubNub Chat SDK udostępnia zdarzenia App Context poprzez rodzinę interfejsów API streamUpdates().

Kilka przykładów zaczerpniętych z aplikacji Chat SDK Demo dla sieci Web:

//  Detect changes to the current User
useEffect(() => {
  return currentUser.streamUpdates(updatedUser => {
    if (updatedUser.name) {
      setName(updatedUser.name)
    }
    if (updatedUser.profileUrl) {
      setProfileUrl(updatedUser.profileUrl)
    }
  })
}, [currentUser])
Enter fullscreen mode Exit fullscreen mode
//  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])
Enter fullscreen mode Exit fullscreen mode

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

Kontekst aplikacji i PubNub Illuminate

PubNubIlluminate 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 i przeglądzie produktu.

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 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 zostanie podjęte, jest elastyczne, ale trzy z możliwych działań odnoszą się do App Context:

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

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

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

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 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; 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

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');
  });
};
Enter fullscreen mode Exit fullscreen mode

Przykład dla Set Channel App Context Metadata

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.');
  });
};
Enter fullscreen mode Exit fullscreen mode

Wyczerpujący zestaw przykładów kodu można znaleźć w dokumentacji modułu PubNub.

Wyzwalanie funkcji PubNub po zmianie kontekstu aplikacji

Istnieje wiele typów zdarzeń, które mogą wyzwalać funkcję, jak wyszczególniono w dokumentacji typów 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, 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, 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, Monitorowanie i moderowanie konwersacji oraz Bezpieczne moderowanie czatu.

Na koniec zachęcamy do skontaktowania się z zespołem DevRel pod adresem devrel@pubnub.com lub skontaktowania się z naszym zespołem pomocy 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

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, aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację

Załóż konto PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij

Dokumenty PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub zestawu SDK.

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.