DEV Community

Cover image for Verwendung von App Context

Verwendung von App Context

PubNub App Context vereinfacht die Entwicklung komplexer Echtzeitfunktionen, indem es einen serverlosen Speichermechanismus für Benutzer-, Kanal- und Mitgliedschaftsinformationen bereitstellt. App Context löst Ereignisse aus, sobald sich die Daten ändern, so dass Ihre Anwendungen in Echtzeit aktualisiert werden können. Die gespeicherten Daten können in Illuminate, Funktionen und anderen PubNub-Diensten verwendet werden, um intelligentere Entscheidungen zu treffen. Sie können diese Daten auch über eine intuitive, codefreie Schnittstelle mit BizOps Workspace verwalten.

Was ist App Context?

App Context (früher bekannt als Objects) ermöglicht es Ihnen:

  • den Benutzern und Kanälen in Ihrer Anwendung und den Beziehungen zwischen ihnen eine Bedeutung zu geben.
  • Speichern von Metadaten für alle Ihre Entitäten auf dem Server, was die Bereitstellung einer globalen Wahrheitsquelle für Ihre Clients vereinfacht. Beachten Sie, dass ein Benutzer nicht unbedingt ein menschliches Wesen darstellen muss, und dass es üblich ist, stattdessen den Gerätestatus im Benutzerobjekt zu speichern.
  • Empfangen Sie sofortige Echtzeit-Ereignisse, wenn sich die Werte eines Objekts ändern.

Obwohl jede Anwendung App Context verwenden kann, ist es besonders bei Entwicklern beliebt, die Chat-Lösungen erstellen.

App Context bietet eine Reihe von vorgeschlagenen Feldern für Ihre Benutzer und Channels sowie vorgeschlagene Felder für die Mitgliedschaften zwischen ihnen. Die meisten dieser Felder sind optional, so dass Sie auswählen können, welche Felder Sie ausfüllen, und auch Ihre eigenen benutzerdefinierten Felder bereitstellen können.

Diagram showing user management, memberhip, channel management

App Context Anwendungsfälle

Wie bereits erwähnt, ist App Context besonders bei Entwicklern beliebt, die Chat-Lösungen erstellen, aber es kann in einer Vielzahl von Anwendungsfällen eingesetzt werden:

  • Chat: Speichern Sie Benutzerinformationen (Name, Profilfoto, Urlaubsstatus, Berufsbezeichnung), Kanalinformationen (Symbol, Beschreibung, Zielgruppe), Benutzerrollen und verfolgen Sie die zuletzt gelesene Nachricht pro Kanal und Benutzer.
  • Sport, Medien und Unterhaltung: Live-Abstimmungen und -Umfragen, Live-Quiz, Echtzeitgebote, CTA-Overlays (Call-to-Action) für Waren oder Werbeaktionen.
  • Spiele: Spielerstatistiken in Echtzeit, einschließlich Spielerlevel, gewonnene Spiele, Abzeichen; Verfolgung und Verwaltung von Ranglisten
  • Mehr: Abwesenheits-/Aktivitätsstatus des Nutzers, Vertrauenswürdigkeit des Nutzers für die Betrugserkennung, Verfolgung des Nutzerstandorts, IoT-Gerätestatus wie Batteriestand oder letzter Sensorwert

Aktivieren von App Context

App Context kann wie folgt aktiviert werden:

  1. Loggen Sie sich in das Admin Portal ein
  2. Klicken Sie auf die Registerkarte "Apps" auf der linken Seite des Portals
  3. Klicken Sie auf eine Anwendung. Sie werden auf die Seite mit den Schlüsselsätzen für diese Anwendung weitergeleitet.
  4. Wenn Sie dies noch nicht getan haben, erstellen Sie ein neues Keyset, indem Sie auf die Schaltfläche "Neues Keyset erstellen" klicken. Sie gelangen dann zur Konfigurationsseite für dieses Keyset
  5. Aktivieren Sie App Context, indem Sie auf den Schieberegler klicken.
  6. Die Einstellung " Bucket Region" ist die Region, in der Ihre Daten gespeichert werden. Bitte beachten Sie, dass die Region nach dem Speichern der Änderungen am Keyset nicht mehr geändert werden kann.
  7. Wenn die Einstellungen Benutzer-Metadaten-Ereignisse und Channel-Metadaten-Ereignisse aktiviert sind, werden die Benutzer- und Channel-Ereignisse ausgelöst, wenn Daten in der Datenbank festgelegt oder entfernt werden, wie später beschrieben.
  8. Wenn die Einstellung Mitgliedschaftsereignisse aktiviert ist, werden Mitgliedschaftsereignisse ausgelöst, wenn Mitgliedschaften hinzugefügt, aktualisiert oder entfernt werden (siehe unten).
  9. Die übrigen Optionen werden in diesem Artikel nicht behandelt, aber weitere Informationen finden Sie in der App Context-Dokumentation
  10. Klicken Sie auf Änderungen speichern, um diese aktualisierten Änderungen zu speichern.

Benutzer-App-Kontext

Wenn ein neuer Benutzer in Ihre Anwendung aufgenommen wird, z.B. über einen externen Identitätsanbieter, müssen Sie eine Möglichkeit haben, diesen Benutzer gegenüber PubNub eindeutig zu identifizieren; dies ist die Benutzer-ID, die der Client Ihres Benutzers zur Initialisierung des PubNub SDK verwendet. Die PubNub-Benutzer-ID ist möglicherweise nicht dieselbe wie die ID, die Sie an anderer Stelle in Ihrer Lösung zur Identifizierung desselben Benutzers verwenden, daher empfehlen wir, dies im Feld "Externe ID" festzuhalten.

Benutzername, E-Mail und Profil-URL bedürfen keiner Erläuterung, aber der Vorteil, diese innerhalb von App Context zu halten, bedeutet, dass, wenn ein Benutzer eines dieser Felder ändert, die Änderungen in großem Umfang an alle zuhörenden Clients weitergegeben werden können, indem App Context-Ereignisse verwendet werden, die von allen unseren SDKs unterstützt werden.

Wie erstelle ich eine Benutzerdarstellung in App Context?

Es gibt zwei Möglichkeiten, einen App Context-Benutzer zu erstellen.

  1. Benutzer können über den BizOps Workspace im PubNub-Administrationsportal erstellt und verwaltet werden. Dies erfordert keinen Code und der Prozess wird mit Beispielen in einem separaten Artikel erklärt: Verwalten von Benutzern und Channels mit BizOps Workspace
  2. Jedes unserer SDKs stellt APIs zur Verfügung, um Benutzer zu erstellen. Wenn Sie unser Chat-SDK verwenden, verwaltet dieses SDK den Anwendungskontext für Sie hinter den Kulissen; zum Beispiel ruft die Chat-SDK-MethodecreateUser()" im Verborgenen die JavaScript-Methode setUUIDMetadata auf, um einen Benutzer zu erstellen. Wenn Sie ein anderes SDK als das Chat-SDK verwenden, stehen spezielle APIs zur Verfügung, um Ihre App-Kontextdaten zu ändern. Ich habe bereits die JavaScript setUIDMetadata API erwähnt, aber es gibt Äquivalente für alle unsere APIs, einschließlich Java, Swift, Kotlin, Python, Unity, etc.

Kanal-App-Kontext

PubNub erstellt automatisch Channels, wenn ein Benutzer sie abonniert oder veröffentlicht, aber Channels repräsentieren wahrscheinlich etwas, das für Ihre Anwendung von Bedeutung ist, z. B. könnten Sie in einer Chat-App einen Gruppen-Chat haben, der einen Channel zur Kommunikation verwendet, oder ein Live-Event könnte einen dedizierten Channel zur Verwaltung von Umfragen verwenden.

Wenn Sie App Context für einen Kanal angeben, werden alle gewünschten Metadaten zu diesem Kanal gespeichert und aktualisiert, wobei diese Aktualisierungen optional an alle interessierten Clients weitergegeben werden. Sie könnten einem Kanal einen Namen geben, z. B. "Chat zwischen Benutzer A und Benutzer B", und vielleicht ist der Kanal mit einer Dokumentenspeicherung verbunden, die in einem benutzerdefinierten "URI"-Feld verfolgt werden könnte.

Wie erstelle ich eine Channel-Darstellung in App Context?

Ähnlich wie bei Benutzern gibt es zwei Möglichkeiten, einen App Context Channel zu erstellen.

  1. Channels können mit BizOps Workspace erstellt und verwaltet werden. Dazu ist kein Code erforderlich, und der Prozess wird mit Beispielen in einem separaten Artikel erläutert: Verwalten von Benutzern und Channels mit BizOps Workspace
  2. Jedes unserer SDKs stellt APIs zur Verfügung, um Channels zu erstellen. Wenn Sie unser Chat-SDK verwenden, wird der Anwendungskontext für Sie hinter den Kulissen gehandhabt; zum Beispiel ruft die Familie der" Kanalerstellen "-Methoden im Verborgenen die JavaScript-Funktion setChannelMetadata() auf. Wenn Sie ein anderes SDK als das Chat-SDK verwenden, stehen Ihnen spezielle APIs zur Verfügung, um Ihre App-Kontextdaten zu ändern, einschließlich JavaScript, Java, Swift, Kotlin, Python, Unity usw.

App-Kontext für die Mitgliedschaft

Nachdem wir App Context sowohl für unsere Benutzer als auch für unsere Channels definiert haben, können wir nun die Beziehung zwischen den beiden definieren, indem wir angeben, ob Benutzer "Mitglieder" eines Channels sind.

Wenn ein Benutzer einem Channel beitritt, kann er Aktualisierungen über jedes andere Mitglied desselben Channels erhalten; er kann benachrichtigt werden, wenn ein Benutzer beitritt oder austritt und wenn der App Context dieses Benutzers aktualisiert wird (z. B. wenn er seinen Namen aktualisiert).

Dies ist ein täuschend mächtiger Mechanismus, der vor allem für Entwickler von Chat-Apps von*großem Nutzen* ist. Wenn Sie App Context nicht verwenden würden, müssten Sie jeden Benutzer selbst verfolgen, in welchen Kanälen er Mitglied ist, und alle anderen im selben Kanal benachrichtigen, wenn dieser Benutzer beitritt oder austritt. Diese Herausforderung lässt sich nicht linear skalieren, d. h. je mehr Benutzer Sie in Ihrer Lösung haben, desto schwieriger wird es für Sie, all diese Informationen zentral zu verwalten.

Durch die Verwendung von App Context werden Ihren Chat-Clients alle Informationen zur Verfügung gestellt, die sie zur Aufrechterhaltung ihres internen Status benötigen, und Sie haben mit dem PubNub Access Manager die volle Kontrolle über diese Daten, um unbefugten Zugriff zu verhindern.

Wie kann ich eine Mitgliedschaft erstellen?

Ähnlich wie bei Benutzern und Channels gibt es zwei Möglichkeiten, eine Mitgliedschaft zu erstellen.

  1. Mitgliedschaften können mit BizOps Workspace erstellt und verwaltet werden, ohne Code zu schreiben. Weitere Einzelheiten finden Sie im Abschnitt Mitgliedschaft verwalten in unserer Dokumentation.
  2. Über jedes unserer SDKs werden APIs zum Erstellen von Channels bereitgestellt. Wenn Sie unser Chat-SDK verwenden, wird der Anwendungskontext für Sie hinter den Kulissen gehandhabt; beispielsweise ruft die Familie der" Channelerstellen "-Methoden im Verborgenen die JavaScript-Funktion setMemberships auf. Wenn Sie ein anderes SDK als das Chat-SDK verwenden, werden dedizierte APIs bereitgestellt, um Ihre App-Kontextdaten zu ändern, einschließlich JavaScript, Java, Swift, Kotlin, Python, Unity usw.

Empfangen von Echtzeit-Ereignissen bei App-Kontextänderungen

Wenn sich App Context-Daten ändern, erhält Ihre Anwendung ein Ereignis, das Sie in Echtzeit über die Änderungen informiert.

Empfangen von App Context Änderungen durch das PubNub SDK (außer Chat SDK)

Alle PubNub SDKs stellen "Event Listener" zur Verfügung. Über diese Listener können Sie auf Objekt-Ereignisse hören, die immer dann ausgelöst werden, wenn sich App Context-Daten ändern.

Beachten Sie, dass es hier eine kleine Nuance gibt, dass zum Zeitpunkt des Schreibens einige unserer SDKs ein neues Format für "Event Listener" unterstützen, wie in diesem Blog über Updates der Event Engine und Event Listener erklärt. Unabhängig vom Format des Ereignis-Listeners bleibt das Prinzip dasselbe: Ihre Anwendung sollte sich registrieren, um App-Kontext-Ereignisse über einen vom SDK bereitgestellten Listener zu empfangen.

Wie in der JavaScript-SDK-Dokumentation beschrieben, sieht die Registrierung für App Context-Ereignisse wie folgt aus:

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

Dokumentation, die beschreibt, wie man sich für App Context-Ereignisse in anderen Sprachen registriert, finden Sie an den folgenden Stellen: Java, Swift, Kotlin, Python (beachten Sie, dass Python die Ereignisse als "Metadaten" bezeichnet, während andere SDKs die Ereignisse als "Objekte" bezeichnen), Unity, usw.

Ein praktisches Beispiel und eine interaktive Demo finden Sie in dem Artikel How to Manage Users and Channels with BizOps Workspace

Empfangen von App-Kontextänderungen über das PubNub Chat SDK

Das PubNub Chat SDK stellt App Context Events durch die Familie der streamUpdates() APIs zur Verfügung.

Einige Beispiele, entnommen aus der Chat SDK Demo-App für das 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

Für ein Beispiel, das auf unserem einfacheren Beispiel für das Chat SDK basiert, lesen Sie bitte den Artikel How to Manage Users and Channels with BizOps Workspace

Anwendungskontext und PubNub Illuminate

PubNub Illuminate ist ein Echtzeit-Entscheidungs- und -Analyseprodukt, das an den jeweiligen Anwendungsfall einer Organisation angepasst werden kann. Das Produkt wurde mit Blick auf Produktmanager und Analysten entwickelt und ermöglicht ihnen Folgendes:

  • Definieren von benutzerdefinierten aggregierten Echtzeit-Metriken.
  • Einrichten und Bereitstellen von Entscheidungsregeln mit Bedingungen und Aktionen.
  • Sofortige Visualisierung der von Ihnen verfolgten Metriken, der ausgeführten Aktionen und ihrer Ergebnisse.

Sie können all dies in Echtzeit tun, ohne dass Ihr Entwicklungsteam von seinen laufenden Projekten abgezogen werden muss.

Eine vollständige Erklärung, was PubNub Illuminte ist und wie es Ihnen sofort verwertbare Einblicke in Ihre Daten geben kann, würde den Rahmen dieses Artikels sprengen.

Kurz gesagt: Sie definieren Metriken, die sich auf Ihre Anwendung beziehen, d. h. Dinge, die Sie messen möchten. In einem Asset-Tracking-Szenario könnten dies zum Beispiel die Stunden seit der Auftragsannahme sein. Wenn eine Bedingung in Bezug auf diese Metrik erfüllt ist, z. B. wenn die "Stunden seit der Bestellung" einen bestimmten Wert überschreiten, können Sie eine Aktion durchführen.

Welche Aktion Sie ergreifen, ist flexibel, aber drei der möglichen Aktionen beziehen sich auf den App-Kontext:

How-to - Use App Context - Image 02

Benutzer mit PubNub Illuminate aktualisieren

Ermöglicht es Ihnen, vordefinierte oder benutzerdefinierte Benutzer-Metadaten festzulegen. Der Screenshot unten zeigt, dass der Status des Benutzers mit der ID 123 auf den statischen Wert "New Status" gesetzt wurde, aber es ist auch möglich, einen dynamischen Wert basierend auf der Bedingung, die die Aktion ausgelöst hat, zu setzen.

How-to - Use App Context - Image 03

Channel aktualisieren mit PubNub Illuminate

Ermöglicht es Ihnen, beliebige vordefinierte oder benutzerdefinierte Channel-Metadaten zu setzen. Der Screenshot unten zeigt, dass der Name des Channels mit der ID 123 auf den statischen Wert "New Name" gesetzt wurde, aber es ist auch möglich, einen dynamischen Wert auf der Grundlage der Bedingung zu setzen, die die Aktion ausgelöst hat.

How-to - Use App Context - Image 04

Aktualisieren von Mitgliedschaften mit PubNub Illuminate

Ermöglicht es Ihnen, vordefinierte oder benutzerdefinierte Metadaten für die Mitgliedschaft zu setzen. Der Screenshot unten zeigt die Mitgliedschaft von User ID 123 im Channel 123, dessen Status auf den statischen Wert "New Status" gesetzt wurde. Es ist auch möglich, einen dynamischen Wert zu setzen, der auf der Bedingung basiert, die die Aktion ausgelöst hat.

How-to - Use App Context - Image 05

App-Kontext und PubNub-Funktionen

PubNub bietet Funktionen zur Erfassung von Ereignissen, die auf der PubNub-Plattform stattfinden. Mit Funktionen können Sie Code schreiben oder bestehende Integrationen nutzen, um Daten umzuwandeln, umzuleiten, zu erweitern, zu filtern und sogar zu aggregieren. Einen genaueren Überblick über PubNub-Funktionen finden Sie in der Funktionsdokumentation. In diesem Artikel geht es jedoch darum, wie PubNub-Funktionen mit App Context zusammenhängen.

Aktualisierung von App Context aus PubNub Functions heraus

Die Umgebung, in der die Funktionen ausgeführt werden, hat Zugriff auf das PubNub-Modul; dieses Modul hat vollen Zugriff auf den App Context auf Ihrem Keyset, und einige Beispiele aus der Dokumentation sind unten aufgeführt. :

Beispiel für 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

Beispiel für Set Channel App Context Metadata (Kanal-App-Kontext-Metadaten)

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

Umfassende Code-Beispiele finden Sie in der Dokumentation des PubNub-Moduls.

Auslösen einer PubNub-Funktion bei Änderung des App-Kontextes

Es gibt zahlreiche Ereignistypen, die eine Funktion auslösen können, wie in der Dokumentation Event Types beschrieben. Dazu gehört die Möglichkeit, zu erkennen, wann Nachrichten und Signale gesendet werden, Funktionen nach dem Auftreten von Präsenzereignissen auszulösen und Funktionen in einem bestimmten Intervall oder bei Bedarf auszuführen. Zum Zeitpunkt der Erstellung dieses Artikels ist es nicht möglich, Funktionen nach Aktualisierungen des App-Kontextes auszuführen, aber wenn Sie feststellen, dass Ihre Anwendung dies benötigt, wenden Sie sich bitte an unser Support-Team, das gerne Ihre Anwendungsfälle durchgehen wird.

Nächste Schritte

Um App Context in Aktion zu sehen, können Sie sich unsere Chat-Demo ansehen, die App Context zusammen mit unserem Chat-SDK verwendet, um zu zeigen, wie eine Chat-App mit serverlosem Speicher aussehen könnte. In der Chat-Demo können Sie Benutzer- und Channel-Metadaten festlegen und sehen, wie sich diese Änderungen in Echtzeit auf andere Zuhörer und Mitglieder übertragen.

Sehen Sie sich auch unsere 3-teilige Serie über den BizOps-Workspace an, der von App Context abhängt und die folgenden Themen behandelt: Verwalten von Benutzern und Kanälen, Überwachen und Moderieren von Konversationen und sicheres Moderieren von Chats.

Und schließlich können Sie sich jederzeit an das DevRel-Team unter devrel@pubnub.com oder an unser Support-Team wenden, wenn Sie Hilfe zu einem beliebigen Aspekt Ihrer PubNub-Entwicklung benötigen.

Wie kann PubNub Ihnen helfen?

Dieser Artikel wurde ursprünglich auf PubNub.com veröffentlicht.

Unsere Plattform hilft Entwicklern bei der Erstellung, Bereitstellung und Verwaltung von Echtzeit-Interaktivität für Webanwendungen, mobile Anwendungen und IoT-Geräte.

Die Grundlage unserer Plattform ist das größte und am besten skalierbare Echtzeit-Edge-Messaging-Netzwerk der Branche. Mit über 15 Points-of-Presence weltweit, die 800 Millionen monatlich aktive Nutzer unterstützen, und einer Zuverlässigkeit von 99,999 % müssen Sie sich keine Sorgen über Ausfälle, Gleichzeitigkeitsgrenzen oder Latenzprobleme aufgrund von Verkehrsspitzen machen.

PubNub erleben

Sehen Sie sich die Live Tour an, um in weniger als 5 Minuten die grundlegenden Konzepte hinter jeder PubNub-gestützten App zu verstehen

Einrichten

Melden Sie sich für einen PubNub-Account an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

Beginnen Sie

Mit den PubNub-Dokumenten können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder SDK

Top comments (0)