App Context API for PubNub Unity SDK

This page describes App Context (formerly Objects v2). To upgrade from Objects v1, refer to the migration guide.

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 UUID Metadata objects, optionally including the custom data object for each.

Method(s)

To Get All UUID Metadata you can use the following method(s) in the Unity SDK:

pubnub.GetAllUuidMetadata()
.IncludeCustom(bool)
.IncludeCount(bool)
.Page(PNPageObject)
.Sort(List<string>)
.Filter(string)
.Limit(int)
.Execute(System.Action<PNGetAllUuidMetadataResult, PNStatus>)
ParameterTypeRequiredDescription
IncludeCustomboolOptionalWhether to fetch Custom fields or not.
IncludeCountboolOptionalRequest IncludeCount to be included in paginated response. By default, IncludeCount is omitted.
PagePNPageObjectOptionalUse for pagination.
SortList<string>OptionalList of properties to sort by. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here.
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
ExecuteSystem.ActionYesSystem.Action of type PNGetAllUuidMetadataResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNGetAllUuidMetadataResult>>.

Basic Usage

PNResult<PNGetAllUuidMetadataResult> getAllUuidMetadataResponse = await pubnub.GetAllUuidMetadata()
.IncludeCustom(true)
.IncludeCount(true)
.ExecuteAsync();

PNGetAllUuidMetadataResult getAllUuidMetadataResult = getAllUuidMetadataResponse.Result;
PNStatus status = getAllUuidMetadataResponse.Status;

Response

{
"Uuids": [
{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": null,
"ProfileUrl": null,
"Custom": null,
"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)

To Get UUID Metadata you can use the following method(s) in the Unity SDK:

pubnub.GetUuidMetadata()
.Uuid(string)
.IncludeCustom(bool)
.Execute(System.Action<PNGetUuidMetadataResult, PNStatus>)
ParameterTypeRequiredDescription
UuidstringYesUnique user identifier. If not supplied then current user's Uuid is used.
IncludeCustomboolOptionalWhether to fetch Custom fields or not.
ExecuteSystem.ActionYesSystem.Action of type PNGetUuidMetadataResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNGetUuidMetadataResult>>.

Basic Usage

// Get Metadata for UUID set in the pubnub instance
PNResult<PNGetUuidMetadataResult> getUuidMetadataResponse = await pubnub.GetUuidMetadata()
.ExecuteAsync();
PNGetUuidMetadataResult getUuidMetadataResult = getUuidMetadataResponse.Result;
PNStatus status = getUuidMetadataResponse.Status;

// Get Metadata for a specific UUID
PNResult<PNGetUuidMetadataResult> getUuidMetadataResponse = await pubnub.GetUuidMetadata()
.Uuid("my-uuid")
.ExecuteAsync();
PNGetUuidMetadataResult getUuidMetadataResult = getUuidMetadataResponse.Result;
PNStatus status = getUuidMetadataResponse.Status;

Response

{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": null,
"ProfileUrl": null,
"Custom": null,
"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)

To Set UUID Metadata you can use the following method(s) in the Unity SDK:

pubnub.SetUuidMetadata()
.Uuid(string)
.Name(string)
.Email(string)
.ExternalId(string)
.ProfileUrl(string)
.Custom(Dictionary<string, object>)
.IncludeCustom(bool)
.Execute(System.Action<PNSetUuidMetadataResult, PNStatus>)
ParameterTypeRequiredDescription
UuidstringYesUnique user identifier. If not supplied then current user's Uuid is used.
NamestringYesDisplay name for the user.
EmailstringOptionalThe user's email address.
ExternalIdstringOptionalUser's identifier in an external system.
ProfileUrlstringOptionalThe URL of the user's profile picture.
CustomDictionary<string, object>OptionalJSON object of key-value pairs with supported data types. App Context filtering language doesn’t support filtering by custom properties.
IncludeCustomboolOptionalWhether to fetch Custom fields or not.
ExecuteSystem.ActionYesSystem.Action of type PNSetUuidMetadataResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNSetUuidMetadataResult>>.
API limits

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

Basic Usage

// Set Metadata for UUID set in the pubnub instance
PNResult<PNSetUuidMetadataResult> setUuidMetadataResponse = await pubnub.SetUuidMetadata()
.Uuid(config.Uuid)
.Name("John Doe")
.Email("john.doe@user.com")
.ExecuteAsync();
PNSetUuidMetadataResult setUuidMetadataResult = setUuidMetadataResponse.Result;
PNStatus status = setUuidMetadataResponse.Status;

Response

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

Remove User Metadata

Removes the metadata from a specified UUID.

Method(s)

To Remove UUID Metadata you can use the following method(s) in the Unity SDK:

pubnub.RemoveUuidMetadata()
.Uuid(string)
ParameterTypeRequiredDescription
UuidstringYesUnique user identifier. If not supplied then current user's Uuid is used.
ExecuteSystem.ActionYesSystem.Action of type PNRemoveUuidMetadataResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNRemoveUuidMetadataResult>>.

Basic Usage

// Remove Metadata for UUID set in the pubnub instance
PNResult<PNRemoveUuidMetadataResult> removeUuidMetadataResponse = await pubnub.RemoveUuidMetadata()
.ExecuteAsync();
PNRemoveUuidMetadataResult removeUuidMetadataResult = removeUuidMetadataResponse.Result;
PNStatus status = removeUuidMetadataResponse.Status;

Response

{}

Channel

Get Metadata for All Channels

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

Method(s)

To Get All Channel Metadata you can use the following method(s) in the Unity SDK:

pubnub.GetAllChannelMetadata()
.IncludeCustom(bool)
.IncludeCount(bool)
.Page(PNPageObject)
.Sort(List<string>)
.Filter(string)
.Execute(System.Action<PNGetAllChannelMetadataResult, PNStatus>)
ParameterTypeRequiredDescription
IncludeCustomboolOptionalWhether to fetch Custom fields or not.
IncludeCountboolOptionalRequest IncludeCount to be included in paginated response. By default, IncludeCount is omitted.
PagePNPageObjectOptionalUse for pagination.
SortList<string>OptionalList of properties to sort by. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here.
ExecuteSystem.ActionYesSystem.Action of type PNGetAllChannelMetadataResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNGetAllChannelMetadataResult>>.

Basic Usage

PNResult<PNGetAllChannelMetadataResult> getAllChannelMetadataResponse = await pubnub.GetAllChannelMetadata()
.IncludeCount(true)
.IncludeCustom(true)
.ExecuteAsync();

PNGetAllChannelMetadataResult getAllChannelMetadataResult = getAllChannelMetadataResponse.Result;
PNStatus status2 = getAllChannelMetadataResponse.Status;

Response

{
"Channels": [
{
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"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)

To Get Channel Metadata you can use the following method(s) in the Unity SDK:

pubnub.GetChannelMetadata()
.Channel(string)
.IncludeCustom(bool)
ParameterTypeRequiredDescription
ChannelstringYesChannel name.
IncludeCustomboolOptionalWhether to fetch Custom fields or not.
ExecuteSystem.ActionYesSystem.Action of type PNGetChannelMetadataResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNGetChannelMetadataResult>>.

Basic Usage

// Get Metadata for a specific channel
PNResult<PNGetChannelMetadataResult> getChannelMetadataResponse = await pubnub.GetChannelMetadata()
.Channel("my-channel")
.IncludeCustom(true)
.ExecuteAsync();

PNGetChannelMetadataResult getChannelMetadataResult = getChannelMetadataResponse.Result;
PNStatus status = getChannelMetadataResponse.Status;

Response

{
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"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)

To Set Channel Metadata you can use the following method(s) in the Unity SDK:

pubnub.SetChannelMetadata()
.Channel(string)
.Name(string)
.Description(string)
.Custom(Dictionary<string, object>)
.IncludeCustom(bool)
.Execute(System.Action<PNSetChannelMetadataResult, PNStatus>)
ParameterTypeRequiredDescription
ChannelstringYesChannel name.
NamestringOptionalName of a channel.
DescriptionstringOptionalDescription of a channel.
CustomDictionary<string, object>OptionalInclude respective additional fields in the response. App Context filtering language doesn’t support filtering by custom properties.
IncludeCustomboolOptionalWhether to fetch custom fields or not.
ExecuteSystem.ActionYesSystem.Action of type PNSetChannelMetadataResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNSetChannelMetadataResult>>.
API limits

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

Basic Usage

// Set Metadata for a specific channel
PNResult<PNSetChannelMetadataResult> setChannelMetadataResponse = await pubnub.SetChannelMetadata()
.Channel("my-channel")
.Name("John Doe")
.Description("sample description")
.Custom(new Dictionary<string, object>() { { "color", "blue" } })
.IncludeCustom(true)
.ExecuteAsync();

PNSetChannelMetadataResult setChannelMetadataResult = setChannelMetadataResponse.Result;
PNStatus status = setChannelMetadataResponse.Status;

Response

{
"Channel": "my-channel",
"Name": "John Doe",
"Description": "sample description",
"Custom": {
"color": "blue"
},
"Updated": "2020-06-17T16:52:19.562469Z"
}

Remove Channel Metadata

Removes the metadata from a specified channel.

Method(s)

To Remove Channel Metadata you can use the following method(s) in the Unity SDK:

pubnub.RemoveChannelMetadata()
.Channel(string)
ParameterTypeRequiredDescription
ChannelstringYesChannel name.
ExecuteSystem.ActionYesSystem.Action of type PNRemoveChannelMetadataResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNRemoveChannelMetadataResult>>.

Basic Usage

// Delete Metadata for a specific channel
PNResult<PNRemoveChannelMetadataResult> removeChannelMetadataResponse = await pubnub.RemoveChannelMetadata()
.Channel("mychannel")
.ExecuteAsync();

PNRemoveChannelMetadataResult removeChannelMetadataResult = removeChannelMetadataResponse.Result;
PNStatus status = removeChannelMetadataResponse.Status;

Response

{}

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)

To Get Memberships you can use the following method(s) in the Unity SDK:

pubnub.GetMemberships()
.Uuid(string)
.Include(PNMembershipField[])
.IncludeCount(bool)
.Page(PNPageObject)
.Execute(System.Action<PNGetMembershipsResult, PNStatus>)
ParameterTypeRequiredDescription
UuidstringYesUnique user identifier. If not supplied then current user's Uuid is used.
IncludePNMembershipField[]OptionalInclude respective additional fields in the response.
IncludeCountboolOptionalRequest IncludeCount to be included in paginated response. By default, IncludeCount is omitted.
PagePNPageObjectOptionalUse for pagination.
ExecuteSystem.ActionYesSystem.Action of type PNGetMembershipsResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNGetMembershipsResult>>.

Basic Usage

PNResult<PNGetMembershipsResult> getMembershipsResponse = await pubnub.GetMemberships()
.Uuid("my-uuid")
.Include(new PNMembershipField[] { PNMembershipField.CUSTOM, PNMembershipField.CHANNEL, PNMembershipField.CHANNEL_CUSTOM })
.IncludeCount(true)
.Page(new PNPageObject() { Next = "", Prev = "" })
.ExecuteAsync();

PNGetMembershipsResult getMembeshipsResult = getMembershipsResponse.Result;
PNStatus status = getMembershipsResponse.Status;

Response

{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"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)

To Set Memberships you can use the following method(s) in the Unity SDK:

pubnub.SetMemberships()
.Uuid(string)
.Channels(List<PNMembership>)
.Include(PNMembershipField[])
.IncludeCount(bool)
.Page(PNPageObject)
.Sort(List<string>)
.Filter(string)
.Limit(int)
.Execute(System.Action<PNMembershipsResult, PNStatus>)
ParameterTypeRequiredDescription
UuidstringYesUnique user identifier. If not supplied then current user's Uuid is used.
ChannelsList<PNMembership>YesList of Channels to add to membership. List can contain strings (channel-name only) or objects (which can include custom data).
IncludePNMembershipField[]OptionalInclude respective additional fields in the response.
IncludeCountboolOptionalRequest IncludeCount to be included in paginated response. By default, IncludeCount is omitted.
PagePNPageObjectOptionalUse for pagination.
SortList<string>OptionalList of properties to sort by. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here.
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
ExecuteSystem.ActionYesSystem.Action of type PNMembershipsResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNMembershipsResult>>.
API limits

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

Basic Usage

List<PNMembership> setMembershipChannelMetadataIdList = new List<PNMembership>();
if (!string.IsNullOrEmpty(seMembershipChannelMetaId))
{
setMembershipChannelMetadataIdList.Add(new PNMembership() { Channel = "my-channel", Custom = new Dictionary<string, object>() { { "item", "book" } } });
}

PNResult<PNMembershipsResult> setMembershipsResponse = await pubnub.SetMemberships()
.Uuid("my-uuid")
.Channels(setMembershipChannelMetadataIdList)
.Include(new PNMembershipField[] { PNMembershipField.CUSTOM, PNMembershipField.CHANNEL, PNMembershipField.CHANNEL_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();

PNMembershipsResult setMembershipsResult = setMembershipsResponse.Result;
PNStatus status = setMembershipsResponse.Status;

Response

{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"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 UUID.

Method(s)

To Remove Memberships you can use the following method(s) in the Unity SDK:

pubnub.RemoveMemberships()
.Uuid(string)
.Channels(List<string>)
.Include(PNMembershipField[])
.IncludeCount(bool)
.Page(PNPageObject)
.Sort(List<string>)
.Filter(string)
.Limit(int)
.Execute(System.Action<PNMembershipsResult, PNStatus>)
ParameterTypeRequiredDescription
UuidStringOptionalUnique user identifier. If not supplied then current user's Uuid is used.
ChannelsList<string>YesChannels to remove from membership.
IncludePNMembershipField[]OptionalInclude respective additional fields in the response.
IncludeCountboolOptionalRequest IncludeCount to be included in paginated response. By default, IncludeCount is omitted.
PagePNPageObjectOptionalUse for pagination.
SortList<string>OptionalList of properties to sort by. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here.
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
ExecuteSystem.ActionYesSystem.Action of type PNMembershipsResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNMembershipsResult>>.

Basic Usage

List<string> removeMembershipList = new List<string>();
if (!string.IsNullOrEmpty(removeMembershipChannelMetaId))
{
removeMembershipList.Add("my-channel");
removeMembershipList.Add("your-channel");
}

PNResult<PNMembershipsResult> removeMembershipsResponse = await pubnub.RemoveMemberships()
.Uuid("uuid")
.Channels(removeMembershipList)
.Include(new PNMembershipField[] { PNMembershipField.CUSTOM, PNMembershipField.CHANNEL, PNMembershipField.CHANNEL_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();

PNMembershipsResult removeMembershipsResult = removeMembershipsResponse.Result;
show all 16 lines

Response

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

Manage Channel Memberships

Set and remove channel memberships for a user.

Method(s)

To Manage Memberships you can use the following method(s) in the Unity SDK:

pubnub.ManageMemberships()
.Uuid(string)
.Set(List<PNMembership>)
.Remove(List<string>)
.Include(PNMembershipField[])
.IncludeCount(bool)
.Page(PNPageObject)
.Sort(List<string>)
.Execute(System.Action<PNMembership, PNStatus>)
ParameterTypeRequiredDescription
UuidstringYesUnique user identifier. If not supplied then current user's Uuid is used.
SetList<PNMembership>OptionalSet channel memberships for the user.
RemoveList<string>OptionalRemove channel memberships for the user.
IncludePNMembershipField[]OptionalInclude respective additional fields in the response.
IncludeCountboolOptionalRequest IncludeCount to be included in paginated response. By default, IncludeCount is omitted.
PagePNPageObjectOptionalUse for pagination.
SortList<string>OptionalList of properties to sort by. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
ExecuteSystem.ActionYesSystem.Action of type PNMembership.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNMembership>>.

Basic Usage

List<PNMembership> setMembrshipList = new List<PNMembership>();
setMembrshipList.Add(new PNMembership() { Channel = "ch1", Custom = new Dictionary<string, object>() { { "say","hello" } } });
setMembrshipList.Add(new PNMembership() { Channel = "ch2", Custom = new Dictionary<string, object>() { { "say", "world" } } });
setMembrshipList.Add(new PNMembership() { Channel = "ch3", Custom = new Dictionary<string, object>() { { "say", "bye" } } });

List<string> removeMembrshipList = new List<string>();
removeMembrshipList.Add("ch4");

PNResult<PNManageMembershipsResult> manageMmbrshipsResponse = await pubnub.ManageMemberships()
.Uuid("my-uuid")
.Set(setMembrshipList)
.Remove(removeMembrshipList)
.Include(new PNMembershipField[] { PNMembershipField.CUSTOM, PNMembershipField.CHANNEL, PNMembershipField.CHANNEL_CUSTOM })
.IncludeCount(true)
.Page(new PNPageObject() { Next = "", Prev = "" })
show all 20 lines

Response

{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"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)

To Get Channel Members you can use the following method(s) in the Unity SDK:

pubnub.GetChannelMembers()
.Channel(string)
.Include(PNChannelMemberField[])
.IncludeCount(bool)
.Page(PNPageObject)
.Sort(List<string>)
.Filter(string)
.Limit(int)
.Execute(System.Action<PNChannelMembersResult, PNStatus>)
ParameterTypeRequiredDescription
ChannelstringYesChannel name.
IncludePNChannelMemberField[]OptionalInclude respective additional fields in the response.
IncludeCountboolOptionalRequest IncludeCount to be included in paginated response. By default, IncludeCount is omitted.
PagePNPageObjectOptionalUse for pagination.
SortList<string>OptionalList of properties to sort by. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here.
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
ExecuteSystem.ActionYesSystem.Action of type PNChannelMembersResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNChannelMembersResult>>.

Basic Usage

// Get Members (uuids) for a specific channel
PNResult<PNChannelMembersResult> getChannelMembersResponse = await pubnub.GetChannelMembers()
.Channel("my-channel")
.Include(new PNChannelMemberField[] { PNChannelMemberField.CUSTOM, PNChannelMemberField.UUID, PNChannelMemberField.UUID_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();

PNChannelMembersResult getChannelMembersResult = getChannelMembersResponse.Result;
PNStatus status2 = getChannelMembersResponse.Status;

Response

{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": null,
"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)

To Set Channel Members you can use the following method(s) in the Unity SDK:

pubnub.SetChannelMembers()
.Channel(string)
.Uuids(List<PNChannelMember>)
.Include(PNChannelMemberField[])
.Page(PNPageObject)
.Sort(List<string>)
.Filter(string)
.Limit(int)
.Execute(System.Action<PNChannelMembersResult, PNStatus>)
ParameterTypeRequiredDescription
ChannelStringYesChannel name.
UuidsList<PNChannelMember>YesList of members to add to the channel. List can contain strings (Uuids only) or objects (which can include custom data).
IncludePNChannelMemberField[]OptionalInclude respective additional fields in the response.
PagePNPageObjectOptionalUse for pagination.
SortList<string>OptionalList of properties to sort by. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here.
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
ExecuteSystem.ActionYesSystem.Action of type PNChannelMembersResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNChannelMembersResult>>.
API limits

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

Basic Usage

// Add Members (UUID) for a specific channel
List<PNChannelMember> setMemberChannelList = new List<PNChannelMember>();
if (!string.IsNullOrEmpty(setMemberChUuid))
{
setMemberChannelList.Add(new PNChannelMember() { Uuid = "my-uuid", Custom = new Dictionary<string, object>() { { "planet", "earth" } } });
}
PNResult<PNChannelMembersResult> setChannelMembersResponse = await pubnub.SetChannelMembers()
.Channel(setmemberChMetadataId)
.Uuids(setMemberChannelList)
.Include(new PNChannelMemberField[] { PNChannelMemberField.CUSTOM, PNChannelMemberField.UUID, PNChannelMemberField.UUID_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();

PNChannelMembersResult setChannelMembersResult = setChannelMembersResponse.Result;
PNStatus status2 = setChannelMembersResponse.Status;

Response

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

Remove Channel Members

Remove members from a Channel.

Method(s)

To Remove Channel Members you can use the following method(s) in the Unity SDK:

pubnub.RemoveChannelMembers()
.Channel(string)
.Uuids(List)
.Include(PNChannelMembersInclude[])
.IncludeCount(bool)
.Page(PnPageObject)
.Sort(List)
.Filter(string)
.Limit(int)
.Execute(System.Action<PNChannelMembersResult, PNStatus>)
ParameterTypeRequiredDescription
ChannelstringYesChannel name.
UuidsList<string>YesMembers to remove from channel.
IncludePNChannelMemberField[]OptionalInclude respective additional fields in the response.
IncludeCountboolOptionalRequest IncludeCount to be included in paginated response. By default, IncludeCount is omitted.
PagePNPageObjectOptionalUse for pagination.
SortList<string>OptionalList of properties to sort by. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here.
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
ExecuteSystem.ActionYesSystem.Action of type PNChannelMembersResult.
ExecuteAsyncNoneOptionalReturns Task<PNResult<PNChannelMembersResult>>.

Basic Usage

// Remove Members (UUID) for a specific channel
List<string> removeChannelMemberList = new List<string>();
removeChannelMemberList.Add("my-uuid");
removeChannelMemberList.Add("your-uuid");

PNResult<PNChannelMembersResult> removeChannelMembersResponse = await pubnub.RemoveChannelMembers()
.Channel("my-channel")
.Uuids(removeChannelMemberList)
.Include(new PNChannelMemberField[] { PNChannelMemberField.CUSTOM, PNChannelMemberField.UUID, PNChannelMemberField.UUID_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();

PNChannelMembersResult removeChannelMembersResult = removeChannelMembersResponse.Result;
PNStatus status = removeChannelMembersResponse.Status;

Response

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

App Context Filtering Language Definition

The filtering language for App Context is similar to the stream filtering language.

Note the following:

  • Date/time properties, such as updated, must be compared to valid date/time strings formatted according to ISO 8601.

  • The LIKE operator supports wildcards denoted by the * character. A wildcard matches any sequence of arbitrary Unicode characters, including the empty sequence. The literal asterisk is matched when escaped using the backslash (\) character.

  • Values used with LIKE must be properly encoded just like any other string value. Thus, in order to escape an asterisk, the raw value must contain \\*.

  • The entire expression must be properly URL-encoded when used in the query string.

Custom property filtering

You can't filter by custom properties.

<expression>           ::= <and_expression> ( "||" <and_expression> )*
<and_expression> ::= <binary_condition> ( "&&" <binary_condition> )*
<binary_condition> ::= "!" <binary_condition> | "(" <expression> ")" | <relational_condition>
<relational_condition> ::= <property_path> <relational_operator> <value>
<property_path> ::= <property_name> ( "." <property_name> )*
<property_name> ::= <identifier> | "[" <string> "]"
<value> ::= <string> | <number> | "true" | "false" | "null"

Tokens

<identifier> ::= <letter> | "$" | "_" ( <letter> | "$" | "_" | <digit> )*
<relational_operator> ::= "==" | "!=" | "<=" | ">=" | "<" | ">" | "LIKE"
<string> ::= <double_quote> ( "\" <double_quote> | "\" <special_char>
| "\" "u" <hex_digit> <hex_digit> <hex_digit> <hex_digit>
| <unicode_char> - <double_quote> - "\" )* <double_quote>
show all 26 lines

Sample object filtering operations

The following date/time comparison returns results that were modified on or after August 31st, 2019 (UTC):

updated >= "2019-08-31T00:00:00Z"

The following wildcard expression returns results whose name starts with the letter X:

name LIKE 'X*'

The following escaped wildcard expression returns results whose name contains an asterisk:

name LIKE '*\\**'
Last updated on