/ SDKs / Flutter
SDKs
Chat SDKs Flutter v3
Chat SDKs Flutter
Chat SDKs
Flutter
Version 3
Sendbird Chat SDK v3 for Flutter is no longer supported as a new version is released. Check out our latest Chat SDK v4

Overview

Copy link

Sendbird's APIs and SDKs provide two basic types of channels: open channel and group channel. Each type of channel is designed to support a wide variety of use cases that your business requires. This page explains the differences and characteristics of the two types.

Note: By default, the Allow creating open channels and Allow creating group channels options are turned on, which means that open channels and group channels can be created by any user with Sendbird Chat SDK. This may grant access to unwanted data or operations, leading to potential security concerns. To manage your access control settings, you can turn on or off each option in Settings > Application > Security > Access control list on Sendbird Dashboard.


Open channel

Copy link

An open channel is a Twitch-style public chat where millions of users can easily join without invitations. Open channels can be used in short-lived live events such as live streaming, news-feed type messaging to a large audience, or events that don't require a permanent membership.

Choose a type of an open channel

Copy link

With Sendbird Chat SDK for Flutter, you can use a variety of behavior related properties when creating different types of open channels.

Classic vs. Dynamic partitioning

Copy link

Sendbird Chat SDK now supports two operation systems for open channels, which are classic and dynamic partitioning. These two systems offer the same features and functions, except that dynamic partitioning allows open channels to accommodate a large number of users. Classic open channels are the original open channels Sendbird has been providing, and a single classic open channel can handle up to 1,000 participants. On the other hand, dynamic partitioning open channels are designed to accommodate much greater number of users than the classic open channels using subchannels where you can divide users evenly.

Note: Sendbird applications created before December 15, 2020 are using classic open channels. The classic open channels will be deprecated soon, but the classic channels created up until the deprecation date will remain and function as usual. After classic open channels have been deprecated, all Chat SDK users will be automatically migrated to the new dynamic partitioning system. If you wish to convert to dynamic partitioning open channels beforehand, visit this page and contact us on Sendbird Dashboard.

Learn more about how open channel dynamic partitioning operates in the channel overview page for Platform API.

Ephemeral vs. Persistent open channels

Copy link

Messages in ephemeral open channels aren't saved on Sendbird's database. This means that old messages pushed out by new ones can't be retrieved as they are one-time data. On the other hand, messages in a persistent open channel are permanently stored in the database, which is the default.


Group channel

Copy link

A group channel is a chat that allows close interactions among a limited number of users. In order to join a group channel, an invitation from a channel member is required. Depending on how you implement the joining process at the application level, an invited user can automatically join a group channel or manually accept the invitation to join. Various properties can be leveraged to design different types of group channels that suit your use cases, such as Twitter-style 1-to-1 direct messaging, WhatsApp-style group chat, and more.

Choose a type of a group channel

Copy link

With our Chat SDK for Flutter, you can use a variety of behavior related properties when creating different types of group channels. You can create a group channel after configuring these properties.

Private vs. Public

Copy link

A private group channel can be joined only by users that have accepted an invitation from an existing channel member by default. On the other hand, a public group channel can be joined by any user without an invitation, like an open channel.

A private channel can be used for 1-on-1 conversations, such as clinical consultations and Instagram-style Direct Messages, while a public channel for 1-to-N conversations, such as small group discussions among students.

1-to-1 vs. 1-to-N

Copy link

The distinct property determines whether to resume an old channel or to create a new one when someone attempts to create a channel with the same members. For a 1-to-1 chat, it is highly recommended that you turn on the distinct property to keep using the existing channel.

Let's say there is a distinct group channel with users A, B, and C. If you attempt to create a new channel with the same members, the existing channel is used. This is similar to Twitter-style 1-to-1 direct messaging. If the distinct property of the channel is set to false, a new channel is created.

Note: The default value of this property is false. When a new member is invited or an existing member leaves the channel, then the distinct property of the channel is automatically turned off as well.

Supergroup vs. Group

Copy link

For occasions that demand engagement among a relatively high volume of members, you can create a Supergroup channel, an expanded version of a group channel. It can be used for midsize conferences or large group discussions, such as company-wide stand-ups.

When the super property is set to true, a Supergroup channel is created and up to tens of thousands members can gather in the channel. The maximum number of members for a Supergroup channel can be adjusted depending on your Chat subscription plan.

Note: When the super property is set to true, distinct can't be supported.

Ephemeral vs. Persistent group channels

Copy link

Messages sent in an ephemeral group channel aren't saved on Sendbird's database. As such, old messages that are pushed out of a user's chat view due to new messages can't be retrieved. On the other hand, messages sent in a persistent group channel are stored permanently in the database by default.


Supergroup channel

Copy link

A Supergroup channel is an expanded version of a group channel, which can accommodate a massive number of members while serving the same functions as a group channel. The maximum number can stretch up to tens of thousands of members depending on your Chat subscription plan. Because a Supergroup channel is built upon the same foundation as a group channel, Platform APIs and SDK functions for both channel types are identical.

Note: Supergroup and group channels are alike in terms of Platform API and SDK design, except for the isSuper property. The isSuper property indicates whether the channel is a Supergroup channel or a group channel.

Use cases

Copy link

Supergroup channels can be used for a wide range of occasions that demand real-time engagement among a large number of users. One of the common use cases for Supergroup channels is community building, ranging from public forums to private events with a large membership.

  • Ask-me-anything events: Supergroup channels also work as a platform for users to seek advice from an influencer or expert, such as Reddit Chat.

  • Gaming community: Another common set-up is gaming communities, where users gather to find players to team up with or exchange ideas and strategies to advance further in the game.

  • Stand-ups: Supergroup channels are a great place for midsize conferences, such as an organization-wide stand-up.

Note: To learn about differences among open channels, group channels, and Supergroup channels, see Channel types.

Limitations

Copy link

To secure stable operation and optimized user experience in a Supergroup channel, a few functions are subject to limits. Some of these limitations are the following.

  • Visual interactions: Read and delivery receipts aren’t supported in Supergroup channels to provide an optimal performance in Supergroup channels.

  • Unread counts: Unread counts are marked up to 100 only. In the case they surpass 100, we suggest you display the counts as 99+ to avoid confusion.

  • Push notifications: The way push notifications for Supergroup channels work is determined by two factors: the number of members in a channel and the online status of its member.

    • When there are less than 100 members: A push notification is sent for every message created in the channel.

    • When there are 100 members or more: A ten-minute time window is applied to Supergroup channels with more than 100 members. Once the number exceeds 100 members, a push notification for a new message is sent out to members and then the next push notification comes ten minutes after that.
      For example, the number of members in Channel A surpasses 100 at 13:00 and a new message is sent at 13:01, a push notification will be sent for the 13:01 message and the ten-minute time window begins. For the following ten minutes, there will be no push notifications for any messages created within the time frame. When ten minutes have passed and a new message is sent at 13:11, a second push notification will be sent for that message.

    • When a user becomes active: If one of the Supergroup channel members enters the channel and reads a message, the user is recognized as active. Then only for the following one minute, the user receives push notifications for all messages sent within the time frame.


Comparing channel types

Copy link

The optimal use cases for each channel type can vary because different channels support different features. The following tables compare open channels, group channels, and Supergroup channels in terms of possible use cases and supported features.

Use cases by channel type

Copy link

Choose which channel type to use based on key factors such as the duration of a chat and the number of users participating in it. The following table lists possible use cases for each channel type.

TypeUsed for

Open channel

- Short-lived live events, such as concerts and streaming.
- News-feed type messaging to massive audience, such as Twitter-style feed.
- Events that don't require a permanent membership.

Group channel

- Private 1-on-1 conversations, such as clinical consultations and Instagram-style Direct Messages.
- Public 1-to-N conversations, such as small group discussions among students.
- Invitation-only chats with a handful group of users.

Supergroup channel

- Ask-me-anything type events with a large number of users.
- Midsize conferences for regular updates, such as company-wide meetings.

Comparison of channel types

Copy link

The following table compares the difference among two types of channels.

Open channelGroup channelSupergroup channel

Maximum number in a channel

Up to millions of participants

100 members

Up to tens of thousands of members depending on your Sendbird plan.

Accessible by

Anyone within the application

Invited users only if private or anyone if public

Invited users only if private or anyone if public

Ephemeral messaging

Supported

Supported

Supported

Online presence

Supported

Supported

Supported

Last message

N/A

Supported

Supported

Operators

Supported

Supported

Supported

Ban users

Supported

Supported

Supported

Mute users

Supported

Supported

Supported

Freeze channels

Supported

Supported

Supported

Delivery receipts

N/A

Supported

N/A

Read receipts

N/A

Supported

N/A

Unread counts

N/A

Supported

Supported

* Up to 100 unread counts are supported.

Typing indicators

N/A

Supported

Supported

* Up to 3 concurrent indicators are supported.

Mention others in message

Supported

Supported

Supported

Mention counts

N/A

Supported

Supported

Reactions

N/A

Supported

Supported

Spam flood protection

Supported

Supported

Supported

Chatbot interface

Supported

Supported

Supported

Smart throttling

Supported (Default: true)

Supported (Default: false)

Supported (Default: false)

Push notifications

N/A

* Push notifications for announcements only.

Supported

* Push notifications for every message sent.

Supported

* Refer to Limitations.

Get a channel with its participant list or member list

N/A

Supported

Supported

* Only ten members are retrieved as a preview.
To get an entire list of members, use the list members API instead.

Pagination for participant list or member list

Supported

Supported

Supported

Order of channel list

- Chronological

- Chronological
- Latest last message
- Channel name
- Metadata value

- Chronological
- Latest last message
- Channel name
- Metadata value


Functionalities by topic

Copy link

Users can interact with other users in a channel by sending, receiving, replying to messages, and more. The following is a list of functionalities that our Chat SDK provides.

Creating a channel

Copy link
FunctionalityDescriptionOpen channelGroup channel

Create a channel

Creates a channel where users can chat.

Managing operators

Copy link
FunctionalityDescriptionOpen channelGroup channel

Register and remove operators in a channel

Adds and removes users as operators to a channel.

Joining and leaving a channel

Copy link
FunctionalityDescriptionOpen channelGroup channel

Enter and exit an open channel

Users can enter and exit open channels to receive messages.

Join and leave a group channel

Users can join and leave group channels to receive messages.

Retrieving channels

Copy link
FunctionalityDescriptionOpen channelGroup channel

Retrieve a list of channels

Retrieves a list of channels.

Retrieve a channel by URL

Retrieves a channel by its URL.

Inviting users to a channel

Copy link
FunctionalityDescriptionOpen channelGroup channel

Invite users as members

Invites new users to a channel which is performed only by the members of a group channel.

Accept or decline an invitation

Accepts or declines an invitation to join a group channel.

Searching channels

Copy link
FunctionalityDescriptionOpen channelGroup channel

Search open channels by name, URL, or custom type

Searches for specific open channels by using a keyword.

Search group channels by name, URL, or other filters

Searches for specific group channels by using name, URL, or several types of filters.

Filter channels by user IDs

Filters channels using user IDs.

Categorizing channels

Copy link
FunctionalityDescriptionOpen channelGroup channel

Categorize channels by custom type

Specifies a custom channel to subclassify channels.

Managing channels

Copy link
FunctionalityDescriptionOpen channelGroup channel

Delete a channel

Deletes a channel which only operators can do.

Hide or archive a channel

Hides or archives a specific channel from a list of channels.

Refresh all data related to a channel

Updates the user's channels with the latest information.

Moderating a channel

Copy link
FunctionalityDescriptionOpen channelGroup channel

Freeze and unfreeze a channel

Temporarily disables various functions of a channel.

Managing channel metadata

Copy link
FunctionalityDescriptionOpen channelGroup channel

Manage channel metadata

Store additional information to a channel. You can create, retrieve, update and delete the additional information.

Managing channel metacounters

Copy link
FunctionalityDescriptionOpen channelGroup channel

Manage metacounters

Store additional numerical information to a channel. You can create, retrieve, update and delete the additional information.