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.
User
Get Metadata for All Users
Returns a paginated list of User Metadata objects, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
Response variants
You can also call the GetAllUserMetadata_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
Response variants
You can also call the GetAllUserMetadata_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
PubnubSubsystem->GetAllUserMetadata(
FString Include,
int Limit,
FString Filter
FString Sort
FString PageNext,
FString PagePrev,
EPubnubTribool Count,
FOnGetAllUserMetadataResponse OnGetAllUserMetadataResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Limit | int | Optional | Number of objects to return in response. Available values: 1 - 100 . If you set 0 , the default value of 100 is used. |
Filter | FString | Optional | Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. |
Sort | FString | Optional | Key-value pair of a property to sort by, and a sort direction. Available options are id , name , and updated . Use asc or desc to specify sort direction, or specify null to take the default sort direction (ascending). For example: {name: 'asc'} |
PageNext | FString | Optional | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
PagePrev | FString | Optional | Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the PageNext parameter is supplied. |
Count | EPubnubTribool enum | Yes | Total request count to be included in paginated response. By default, the total count is omitted. Available values:
|
OnGetAllUserMetadataResponse | FOnGetAllUserMetadataResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString Channel = "randomChannel";
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnGetAllUserMetadataResponse OnGetAllUserMetadataResponse;
OnGetAllUserMetadataResponse.BindDynamic(this, &AMyActor::OnGetAllUserMetadataResponse);
int Limit = 10; // Limit to 10 objects
EPubnubTribool Count = PT_False; // Don't include total count
show all 17 linesReturns
This method returns the FOnGetAllUserMetadataResponse
struct.
FOnGetAllUserMetadataResponse
Field | Type | Description |
---|---|---|
Status | int | HTTP code of the result of the operation. |
UsersData | TArray<FPubnubUserData>& | Aa array of FPubnubUserData structs which are the users with their associated User metadata. |
PageNext | FString | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
PagePrev | FString | Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the pageNext parameter is supplied. |
FPubnubUserData
Field | Type | Description |
---|---|---|
UserID | FString | Unique user identifier. If not supplied, then the current user's User is used. |
UserName | FString | Display name for the user. |
ExternalID | FString | User's identifier in an external system. |
ProfileUrl | FString | The URL of the user's profile picture. |
Email | FString | The user's email address. |
Custom | FString | JSON providing custom data about the user. Values must be scalar only; arrays or objects are not supported. |
Status | FString | User status. Max. 50 characters. |
Type | FString | User type. Max. 50 characters. |
Updated | FString | The date when the user's metadata was last updated. |
ETag | FString | Information on the object's content fingerprint. |
JSON Response
{
"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 linesGet User Metadata
Returns metadata for the specified User, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
Response variants
You can also call the GetUserMetadata_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
Response variants
You can also call the GetUserMetadata_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
PubnubSubsystem->GetUserMetadata(
FString Include,
FString User,
FOnGetUserMetadataResponse OnGetUserMetadataResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
User | FString | Optional | The metadata ID for which to retrieve the user object. Can't be empty. |
OnGetUserMetadataResponse | FOnGetUserMetadataResponse | Yes | The callback function used to handle the result. |
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
FOnGetUserMetadataResponse OnGetUserMetadataResponse;
OnGetUserMetadataResponse.BindDynamic(this, &AMyActor::OnGetUserMetadataResponse);
FString Include = ""; // No additional attributes
FString User = "uuid-1";
PubnubSubsystem->GetUserMetadata(Include, Limit, Start, End, Count, OnGetUserMetadataResponse);
Returns
This method returns the FOnGetUserMetadataResponse
struct.
FOnGetUserMetadataResponse
Field | Type | Description |
---|---|---|
Status | int | HTTP code of the result of the operation. |
UserData | FPubnubUserData | Aa instance of FPubnubUserData struct which is the user with their associated User metadata. |
JSON Response
{
"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 User in the database, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
PubnubSubsystem->SetUserMetadata(
FString User,
FString Include,
FString UserMetadataObj
);
Parameter | Type | Required | Description |
---|---|---|---|
User | FString | Optional | The metadata ID for which to retrieve the user object. Can't be empty. |
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
UserMetadataObj | FString | Optional | The JSON string with the definition of the User Metadata object to create. |
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 User = "user123"; // Example User Metadata ID
FString Include = ""; // No additional attributes
FString UserMetadataObj = "{\"name\":\"John Doe\",\"email\":\"johndoe@example.com\"}"; // Example JSON object
// Call the SetUserMetadata method
PubnubSubsystem->SetUserMetadata(User, Include, UserMetadataObj);
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 User ID.
Method(s)
- Blueprint
- C++
PubnubSubsystem->RemoveUserMetadata(FString User);
Parameter | Type | Required | Description |
---|---|---|---|
User | FString | Optional | The metadata ID to delete from the user object. Can't be empty. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString User = "user123"; // Example User Metadata ID
// Call the RemoveUserMetadata method
PubnubSubsystem->RemoveUserMetadata(User);
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)
- Blueprint
- C++
Response variants
You can also call the GetAllChannelMetadata_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
Response variants
You can also call the GetAllChannelMetadata_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
PubnubSubsystem->GetAllChannelMetadata(
FString Include,
int Limit,
FString Filter
FString Sort
FString PageNext,
FString PagePrev,
EPubnubTribool Count,
FOnGetAllChannelMetadataResponse OnGetAllChannelMetadataResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Limit | int | Optional | Number of objects to return in response. Available values: 1 - 100 . If you set 0 , the default value of 100 is used. |
Filter | FString | Optional | Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. |
Sort | FString | Optional | Key-value pair of a property to sort by, and a sort direction. Available options are id , name , and updated . Use asc or desc to specify sort direction, or specify null to take the default sort direction (ascending). For example: {name: 'asc'} |
PageNext | FString | Optional | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
PagePrev | FString | Optional | Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the PageNext parameter is supplied. |
Count | EPubnubTribool enum | Yes | Total request count to be included in paginated response. By default, the total count is omitted. Available values:
|
OnGetAllChannelMetadataResponse | FOnGetAllChannelMetadataResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString Channel = "randomChannel";
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnGetAllChannelMetadataResponse OnGetAllUserMetadataResponse;
OnGetAllUserMetadataResponse.BindDynamic(this, &AMyActor::OnGetAllUserMetadataResponse);
int Limit = 10; // Limit to 10 objects
EPubnubTribool Count = PT_False; // Don't include total count
show all 17 linesReturns
This method returns the FOnGetAllChannelMetadataResponse
struct.
FOnGetAllChannelMetadataResponse
Field | Type | Description |
---|---|---|
Status | int | HTTP code of the result of the operation. |
ChannelsData | TArray<FPubnubChannelData>& | Aa array of FPubnubChannelData structs which are the users with their associated Channel metadata. |
PageNext | FString | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
PagePrev | FString | Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the pageNext parameter is supplied. |
FPubnubChannelData
Field | Type | Description |
---|---|---|
ChannelID | FString | ID of the channel. |
ChannelName | FString | Name of the channel. |
Description | FString | Additional description of the channel. |
Custom | FString | JSON providing custom data about the user. Values must be scalar only; arrays or objects are not supported. |
Status | FString | Channel status. Max 50 characters. |
Type | FString | Channel type. Max 50 characters. |
Updated | FString | The date when the channel's metadata was last updated. |
ETag | FString | Version identifier of the user's metadata. |
JSON Response
{
"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 linesGet Channel Metadata
Returns metadata for the specified Channel, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
Response variants
You can also call the GetChannelMetadata_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
Response variants
You can also call the GetChannelMetadata_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
PubnubSubsystem->GetChannelMetadata(
FString Include,
FString Channel,
FOnGetChannelMetadataResponse OnGetChannelMetadataResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Channel | FString | Optional | The channel ID for which to retrieve the channel object. Can't be empty. |
OnGetChannelMetadataResponse | FOnGetChannelMetadataResponse | Yes | The callback function used to handle the result. |
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
FOnGetChannelMetadataResponse OnGetChannelMetadataResponse;
OnGetChannelMetadataResponse.BindDynamic(this, &AMyActor::OnGetChannelMetadataResponse);
FString Include = ""; // No additional attributes
FString Channel = "my-channel";
PubnubSubsystem->GetChannelMetadata(Include, Channel, OnGetChannelMetadataResponse);
Returns
This method returns the FOnGetChannelMetadataResponse
struct.
FOnGetChannelMetadataResponse
Field | Type | Description |
---|---|---|
Status | int | HTTP code of the result of the operation. |
ChannelData | FPubnubChannelData | Aa instance of FPubnubChannelData struct which is the channel with its associated metadata. |
JSON Response
{
"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)
- Blueprint
- C++
PubnubSubsystem->SetChannelMetadata(
FString Channel,
FString Include,
FString ChannelMetadataObj
);
Parameter | Type | Required | Description |
---|---|---|---|
Channel | FString | Optional | The metadata ID for which to retrieve the channel object. Can't be empty. |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
ChannelMetadataObj | FString | Optional | The JSON string with the definition of the Channel metadata object to create. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString Channel = "myChannel"; // Example Channel Metadata ID
FString Include = ""; // No additional attributes
FString ChannelMetadataObj = "{\"name\":\"PubNub channel\",\"description\":\"The channel for announcements\"}"; // Example JSON object
// Call the SetChannelMetadata method
PubnubSubsystem->SetChannelMetadata(Channel, 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)
- Blueprint
- C++
PubnubSubsystem->RemoveChannelMetadata(FString Channel);
Parameter | Type | Required | Description |
---|---|---|---|
Channel | FString | Optional | The metadata ID to delete from the channel object. Can't be empty. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString Channel = "myChannel"; // Example Channel Metadata ID
// Call the RemoveChannelMetadata method
PubnubSubsystem->RemoveChannelMetadata(Channel);
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)
- Blueprint
- C++
Response variants
You can also call the GetMemberships_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
Response variants
You can also call the GetMemberships_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
PubnubSubsystem->GetMemberships(
FString User,
FString Include,
int Limit,
FString Filter
FString Sort
FString PageNext,
FString PagePrev,
EPubnubTribool Count,
FOnGetMembershipsResponse OnGetMembershipResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
User | FString | Optional | The user ID for which to retrieve the memberships. Can't be empty. |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Limit | int | Optional | Number of objects to return in response. Available values: 1 - 100 . If you set 0 , the default value of 100 is used. |
Filter | FString | Optional | Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. |
Sort | FString | Optional | Key-value pair of a property to sort by, and a sort direction. Available options are id , name , and updated . Use asc or desc to specify sort direction, or specify null to take the default sort direction (ascending). For example: {name: 'asc'} |
PageNext | FString | Optional | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
PagePrev | FString | Optional | Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the PageNext parameter is supplied. |
Count | EPubnubTribool enum | Yes | Total request count to be included in paginated response. By default, the total count is omitted. Available values:
|
OnGetMembershipResponse | FOnGetMembershipsResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString Channel = "randomChannel";
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnGetMembershipsResponse OnGetMembershipResponse;
OnGetMembershipResponse.BindDynamic(this, &AMyActor::OnGetMembershipResponse);
User UserId = "user-1"
int Limit = 10; // Limit to 10 objects
show all 18 linesReturns
This method returns the FOnGetMembershipsResponse
struct.
FOnGetMembershipsResponse
Field | Type | Description |
---|---|---|
Status | int | HTTP code of the result of the operation. |
MembershipsData | TArray<FPubnubGetChannelMembershipWrapper>& | Aa array of FPubnubGetChannelMembershipsWrapper structs which are the memberships of the channel. |
PageNext | FString | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
PagePrev | FString | Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the pageNext parameter is supplied. |
FPubnubGetChannelMembershipsWrapper
Field | Type | Description |
---|---|---|
Channel | FPubnubChannelData | Contains channel metadata, including unique channel identifier and other relevant information. |
Custom | FString | JSON providing custom data about the membership. Values must be scalar only; arrays or objects are not supported. |
Status | FString | Status of the membership. Max 50 characters. |
Type | FString | Type of the membership. Max 50 characters. |
Updated | FString | The date when the channel's membership was last updated. |
ETag | FString | Version identifier of the membership metadata. |
JSON Response
{
"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 linesSet Channel Memberships
Set channel memberships for a User.
Method(s)
- Blueprint
- C++
PubnubSubsystem->SetMemberships(
FString User,
FString Include,
FString SetObj
);
Parameter | Type | Required | Description |
---|---|---|---|
User | FString | Optional | The user ID to add/update the memberships. Can't be empty. |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
SetObj | FString | Optional | The JSON object that defines the add/update to perform. Can't be empty. |
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 User = "user123"; // Example User ID
FString Include = ""; // No additional attributes
FString SetObj = "{\"channels\": [{\"channel123\": {\"name\":\"Channel One\"}}]}"; // Example JSON object
// Call the SetMemberships method
PubnubSubsystem->SetMemberships(User, 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 linesRemove Channel Memberships
Remove channel memberships for a user.
Method(s)
- Blueprint
- C++
PubnubSubsystem->RemoveMemberships(
FString User,
FString Include,
FString RemoveObj
);
Parameter | Type | Required | Description |
---|---|---|---|
User | FString | Optional | The user ID to remove the memberships. Can't be empty. |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
RemoveObj | FString | Optional | The JSON object with the memberships to remove. Can't be empty. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString User = "user123"; // Example User ID
FString Include = ""; // No additional attributes
FString RemoveObj = "{\"channels\": [{\"channel123\": {\"name\":\"Channel One\"}}]}"; // Example JSON object
// Call the RemoveMemberships method
PubnubSubsystem->RemoveMemberships(User, 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 linesChannel 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)
- Blueprint
- C++
Response variants
You can also call the GetChannelMembers_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
Response variants
You can also call the GetChannelMembers_JSON()
variant of this method to get an FOnPubnubResponse
which contains pure JSON.
PubnubSubsystem->GetChannelMembers(
FString Channel,
FString Include,
int Limit,
FString Filter
FString Sort
FString PageNext,
FString PagePrev,
EPubnubTribool Count,
FOnGetChannelMembersResponse OnGetMembersResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Channel | FString | Optional | The metadata ID for which to retrieve the channel object. Can't be empty. |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Limit | int | Optional | Number of objects to return in response. Available values: 1 - 100 . If you set 0 , the default value of 100 is used. |
Filter | FString | Optional | Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. |
Sort | FString | Optional | Key-value pair of a property to sort by, and a sort direction. Available options are id , name , and updated . Use asc or desc to specify sort direction, or specify null to take the default sort direction (ascending). For example: {name: 'asc'} |
PageNext | FString | Optional | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
PagePrev | FString | Optional | Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the PageNext parameter is supplied. |
Count | EPubnubTribool enum | Yes | Total request count to be included in paginated response. By default, the total count is omitted. Available values:
|
OnGetMembersResponse | FOnGetChannelMembersResponse | Yes | The callback function used to handle the result. |
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
FOnGetChannelMembersResponse OnGetMembersResponse;
OnGetMembersResponse.BindDynamic(this, &AMyActor::OnGetMembersResponse);
FString Channel = "my-channel";
int Limit = 10; // Limit to 10 objects
EPubnubTribool Count = PT_False; // Don't include total count
show all 16 linesReturns
This method returns the FOnGetChannelMembersResponse
struct.
FOnGetChannelMembersResponse
Field | Type | Description |
---|---|---|
Status | int | HTTP code of the result of the operation. |
MembersData | TArray<FPubnubGetChannelMembersWrapper>& | Aa array of FPubnubGetChannelMembersWrapper structs which are the members of the channel. |
PageNext | FString | Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off. |
PagePrev | FString | Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the pageNext parameter is supplied. |
FPubnubGetChannelMembersWrapper
Field | Type | Description |
---|---|---|
User | FPubnubUserlData | Contains user metadata, including unique channel identifier and other relevant information. |
Custom | FString | JSON providing custom data about the member. Values must be scalar only; arrays or objects are not supported. |
Status | FString | Status of the member. Max 50 characters. |
Type | FString | Type of the member. Max 50 characters. |
Updated | FString | The date when the channel's member was last updated. |
ETag | FString | Version identifier of the member metadata. |
JSON Response
{
"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 linesSet Channel Members
This method sets members in a channel.
Method(s)
- Blueprint
- C++
PubnubSubsystem->SetChannelMembers(
FString Channel,
FString Include,
FString SetObj
);
Parameter | Type | Required | Description |
---|---|---|---|
Channel | FString | Optional | The channel ID to add/update the members. Can't be empty. |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
SetObj | FString | Optional | The JSON object that defines the add/update to perform. Can't be empty. |
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 Channel = "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(Channel, 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 linesRemove Channel Members
Remove members from a channel.
Method(s)
- Blueprint
- C++
PubnubSubsystem->RemoveChannelMembers(
FString Channel,
FString Include,
FString RemoveObj
);
Parameter | Type | Required | Description |
---|---|---|---|
Channel | FString | Optional | The channel ID to remove the members. Can't be empty. |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
RemoveObj | FString | Optional | The JSON object that defines what to remove. Can't be empty. |
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 Channel = "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(Channel, 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