App Context API for PubNub Unreal SDK

App Context provides easy-to-use, serverless storage for user and channel data you need to build innovative, reliable, scalable applications. Use App Context to easily store metadata about your application users and channels, and their membership associations, without the need to stand up your own databases.

PubNub also triggers events when object data is set or removed from the database. Clients can receive these events in real time and update their front-end application accordingly.

icon

Usage in Blueprints and C++

User

Get Metadata for All Users

Returns a paginated list of UUID Metadata objects, optionally including the custom data object for each.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString ChannelName = "randomChannel";

// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetAllUUIDMetadataResponse;
OnGetAllUUIDMetadataResponse.BindDynamic(this, &AMyActor::OnGetAllUUIDMetadataResponse);

FString Include = ""; // No additional attributes
int Limit = 10; // Limit to 10 objects
show all 20 lines

Returns

{
"Uuids": [
{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2020-06-17T16:28:14.060718Z"
},
{
"Uuid": "uuid-2",
"Name": "Bob Cat",
"Email": "bobc@example.com",
show all 29 lines

Get User Metadata

Returns metadata for the specified UUID, optionally including the custom data object for each.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetUUIDMetadataResponse;
OnGetUUIDMetadataResponse.BindDynamic(this, &AMyActor::OnGetUUIDMetadataResponse);

FString Include = ""; // No additional attributes
FString UUIDMetadataId = "uuid-1";

PubnubSubsystem->GetUUIDMetadata(Include, Limit, Start, End, Count, OnGetUUIDMetadataResponse);

Returns

{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2020-06-17T16:28:14.060718Z"
}

Set User Metadata

Set metadata for a UUID in the database, optionally including the custom data object for each.

Method(s)

API limits

To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString UUIDMetadataID = TEXT("user123"); // Example UUID Metadata ID
FString Include = ""; // No additional attributes
FString UUIDMetadataObj = TEXT("{\"name\":\"John Doe\",\"email\":\"johndoe@example.com\"}"); // Example JSON object

// Call the SetUUIDMetadata method
PubnubSubsystem->SetUUIDMetadata(UUIDMetadataID, Include, UUIDMetadataObj);

Returns

{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2020-06-17T16:28:14.060718Z"
}

Remove User Metadata

Removes the metadata from a specified UUID.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString UUIDMetadataID = TEXT("user123"); // Example UUID Metadata ID

// Call the RemoveUUIDMetadata method
PubnubSubsystem->RemoveUUIDMetadata(UUIDMetadataID);

Returns

This method doesn't have any return value.

Channel

Get Metadata for All Channels

Returns a paginated list of Channel Metadata objects, optionally including the custom data object for each.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString ChannelName = "randomChannel";

// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetAllUUIDMetadataResponse;
OnGetAllUUIDMetadataResponse.BindDynamic(this, &AMyActor::OnGetAllUUIDMetadataResponse);

FString Include = ""; // No additional attributes
int Limit = 10; // Limit to 10 objects
show all 20 lines

Returns

{
"Channels": [
{
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:52:19.562469Z"
},
{
"Channel": "main",
"Name": "Main channel",
"Description": "The main channel",
"Custom": {
"public": true,
show all 26 lines

Get Channel Metadata

Returns metadata for the specified Channel, optionally including the custom data object for each.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetChannelMetadataResponse;
OnGetChannelMetadataResponse.BindDynamic(this, &AMyActor::OnGetChannelMetadataResponse);

FString Include = ""; // No additional attributes
FString ChannelMetadataID = "my-channel";

PubnubSubsystem->GetChannelMetadata(Include, ChannelMetadataID, OnGetChannelMetadataResponse);

Returns

{
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:52:19.562469Z"
}

Set Channel Metadata

Set metadata for a channel in the database, optionally including the custom data object for each.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString ChannelMetadataID = TEXT("myChannel"); // Example Channel Metadata ID
FString Include = ""; // No additional attributes
FString ChannelMetadataObj = TEXT("{\"name\":\"PubNub channel\",\"description\":\"The channel for announcements\"}"); // Example JSON object

// Call the SetChannelMetadata method
PubnubSubsystem->SetChannelMetadata(ChannelMetadataID, Include, ChannelMetadataObj);
API limits

To learn about the maximum length of parameters used to set channel metadata, refer to REST API docs.

Returns

{
"Channel": "my-channel",
"Name": "PubNub channel",
"Description": "The channel for announcements",
"Updated": "2020-06-17T16:52:19.562469Z"
}

Remove Channel Metadata

Removes the metadata from a specified channel.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString ChannelMetadataID = TEXT("myChannel"); // Example Channel Metadata ID

// Call the RemoveChannelMetadata method
PubnubSubsystem->RemoveChannelMetadata(ChannelMetadataID);

Returns

This method doesn't have any return value.

Channel Memberships

Get Channel Memberships

The method returns a list of channel memberships for a user. This method doesn't return a user's subscriptions.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString ChannelName = "randomChannel";

// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetMembershipResponse;
OnGetMembershipResponse.BindDynamic(this, &AMyActor::OnGetMembershipResponse);

UUIDMetadataID UserId = "user-1"
FString Include = ""; // No additional attributes
show all 21 lines

Returns

{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
show all 38 lines

Set Channel Memberships

Set channel memberships for a UUID.

Method(s)

API limits

To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString UUIDMetadataID = TEXT("user123"); // Example User ID
FString Include = ""; // No additional attributes
FString SetObj = TEXT("{\"channels\": [{\"channel123\": {\"name\":\"Channel One\"}}]}"); // Example JSON object

// Call the SetMemberships method
PubnubSubsystem->SetMemberships(UUIDMetadataID, Include, SetObj);
API limits

To learn about the maximum length of parameters used to set channel membership metadata, refer to REST API docs.

Returns

{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
show all 38 lines

Remove Channel Memberships

Remove channel memberships for a user.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString UUIDMetadataID = TEXT("user123"); // Example User ID
FString Include = ""; // No additional attributes
FString RemoveObj = TEXT("{\"channels\": [{\"channel123\": {\"name\":\"Channel One\"}}]}"); // Example JSON object

// Call the RemoveMemberships method
PubnubSubsystem->RemoveMemberships(UUIDMetadataID, Include, RemoveObj);

Returns

{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
show all 38 lines

Channel Members

Get Channel Members

The method returns a list of members in a channel. The list will include user metadata for members that have additional metadata stored in the database.

Method(s)

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetMembersResponse;
OnGetMembersResponse.BindDynamic(this, &AMyActor::OnGetMembersResponse);

FString ChannelMetadataID = "my-channel";
FString Include = ""; // No additional attributes
int Limit = 10; // Limit to 10 objects
FString Start = ""; // No pagination start bookmark
show all 19 lines

Returns

{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
show all 39 lines

Set Channel Members

This method sets members in a channel.

Method(s)

API limits

To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString ChannelMetadataID = "myChannel";
FString Include = ""; // No additional attributes
FString SetObj = TEXT([{"id": "some-user-id", "custom": {"starred": true}}, {"id": "user-0-id", "some_key": {"other_key": "other_value"}}]); // Example JSON object

// Call the SetChannelMembers method
PubnubSubsystem->SetChannelMembers(ChannelMetadataID, Include, SetObj);
API limits

To learn about the maximum length of parameters used to set channel members metadata, refer to REST API docs.

Returns

{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
show all 39 lines

Remove Channel Members

Remove members from a channel.

Method(s)

API limits

To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.

Basic Usage

#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"

UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();

FString ChannelMetadataID = "myChannel";
FString Include = ""; // No additional attributes
FString RemoveObj = TEXT([{"id": "some-user-id", "custom": {"starred": true}}, {"id": "user-0-id", "some_key": {"other_key": "other_value"}}]); // Example JSON object

// Call the RemoveChannelMembers method
PubnubSubsystem->RemoveChannelMembers(ChannelMetadataID, Include, RemoveObj);

Returns

{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
show all 39 lines
Last updated on