CoGuestStore
Introduction
Co-guest feature enables real-time interaction between hosts and audience members through a seat-based system. CoGuestStore provides a comprehensive set of APIs to manage the entire co-guest lifecycle.
Important:
Always use the factory method CoGuestStore.create with a valid live room ID to create a CoGuestStore instance. Do not attempt to initialize directly.
Note:
Co-guest state updates are delivered through the coGuestState publisher. Subscribe to it to receive real-time updates about connected users, invitations and applications.
Warning:
If a co-guest request does not receive a response within the specified timeout, an event with NoResponseReason.timeout will be triggered. Always handle timeout scenarios in your UI.
Features
Bidirectional Invitation:Hosts can invite audience members, and audience members can also apply to join
State Management:Real-time tracking of connected users, invitations and applications
Event-Driven Architecture:Provides separate event streams for host and guest roles
Timeout Handling:Built-in timeout mechanism for invitations and applications
Subscribable Data
CoGuestState fields are described below:
Property | Type | Description |
connected | List of users already on seats. | |
invitees | List of users invited by host. | |
applicants | List of users who applied for co-guest received by host. | |
candidates | List of candidate users for co-guest. |
API List
Function | Description |
Create object instance. | |
Host-side event callbacks. | |
Host-side event callbacks. | |
Guest-side event callbacks. | |
Guest-side event callbacks. | |
Guest applies for co-guest. | |
Guest cancels application. | |
Host accepts application. | |
Host rejects application. | |
Host invites guest to co-guest. | |
Host cancels invitation. | |
Guest accepts invitation. | |
Guest rejects invitation. | |
End co-guest session. |
Creating Instance
CoGuestStore.create
Create object instance
Observing State and Events
addHostListener
Add host-side event callback listener
abstract fun addHostListener(listener: HostListener?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
listener | Required | Listener. |
removeHostListener
Remove host-side event callback listener
abstract fun removeHostListener(listener: HostListener?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
listener | Required | Listener. |
addGuestListener
Add guest-side event callback listener
abstract fun addGuestListener(listener: GuestListener?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
listener | Required | Listener. |
removeGuestListener
Remove guest-side event callback listener
abstract fun removeGuestListener(listener: GuestListener?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
listener | Required | Listener. |
Guest Operations
applyForSeat
Apply to go on seat
abstract fun applyForSeat(seatIndex: Int,timeout: Int,extraInfo: String?,completion: CompletionHandler?)
Request to join co-guest session as an audience member.
After calling this method, a co-guest request is sent to all hosts in the live room. The request will remain active until:
• Host accepts via acceptApplication
• Host rejects via rejectApplication
• Timeout expires
• You cancel via cancelApplication
Version
Supported since version 3.5.
Notes
Note:
If no host responds within the timeout, {ref2} event with NoResponseReason.TIMEOUT will be triggered.
Parameters
Parameter | Type | Required | Description |
seatIndex | Int | Required | Seat index, -1 means auto-assign seat. |
timeout | Int | Required | Timeout (unit: seconds). |
extraInfo | String? | Required | Extra information. |
completion | Required | Completion callback. |
cancelApplication
Cancel seat application
abstract fun cancelApplication(completion: CompletionHandler?)
Cancel a previously sent co-guest application. After calling this method, all hosts will be notified of the application cancellation.
Version
Supported since version 3.5.
Notes
Note:
If the application has already been processed by a host, the cancellation may have no effect.
Parameters
Parameter | Type | Required | Description |
completion | Required | Completion callback. |
acceptApplication
Accept seat application
abstract fun acceptApplication(userID: String?,completion: CompletionHandler?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
userID | String? | Required | User ID. |
completion | Required | Completion callback. |
rejectApplication
Reject seat application
abstract fun rejectApplication(userID: String?,completion: CompletionHandler?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
userID | String? | Required | User ID. |
completion | Required | Completion callback. |
Host Operations
inviteToSeat
Invite audience to seat
abstract fun inviteToSeat(inviteeID: String?,seatIndex: Int,timeout: Int,extraInfo: String?,completion: CompletionHandler?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
inviteeID | String? | Required | Invited user ID. |
seatIndex | Int | Required | Seat index, -1 means auto-assign seat. |
timeout | Int | Required | Timeout (unit: seconds). |
extraInfo | String? | Required | Extra information. |
completion | Required | Completion callback. |
cancelInvitation
Cancel seat invitation
abstract fun cancelInvitation(inviteeID: String?,completion: CompletionHandler?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
inviteeID | String? | Required | Invited user ID. |
completion | Required | Completion callback. |
acceptInvitation
Accept seat invitation
abstract fun acceptInvitation(inviterID: String?,completion: CompletionHandler?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
inviterID | String? | Required | Inviter user ID. |
completion | Required | Completion callback. |
rejectInvitation
Reject seat invitation
abstract fun rejectInvitation(inviterID: String?,completion: CompletionHandler?)
Version
Supported since version 3.5.
Parameters
Parameter | Type | Required | Description |
inviterID | String? | Required | Inviter user ID. |
completion | Required | Completion callback. |
Connection Control
disconnect
End co-guest session
Data Structures
NoResponseReason
Reason for no response to co-guest invitation sent by host or co-guest request initiated by audience
Enum Value | Value | Description |
TIMEOUT | 0 | Request timeout. |
ALREADY_SEATED | 1 | User already on seat. |
HostListener
Callback events received on host side
Methods
Method | Description |
onGuestApplicationReceived | This callback is triggered when an audience applies for co-guest. |
onGuestApplicationCancelled | This callback is triggered when an audience cancels co-guest application. |
onGuestApplicationProcessedByOtherHost | This callback is triggered when an audience's co-guest application is processed by another host. |
onHostInvitationResponded | This callback is triggered when a co-guest invitation sent by host receives a response from audience. |
onHostInvitationNoResponse | This callback is triggered when a co-guest invitation sent by host receives no response. |
GuestListener
Callback events received on guest side
Methods
Method | Description |
onHostInvitationReceived | This callback is triggered when receiving a co-guest invitation from host. |
onHostInvitationCancelled | This callback is triggered when host cancels co-guest invitation. |
onGuestApplicationResponded | This callback is triggered when audience's co-guest application receives a response from host. |
onGuestApplicationNoResponse | This callback is triggered when audience's co-guest application receives no response. |
onKickedOffSeat | This callback is triggered when audience is kicked off seat by host. |
CoGuestState
Co-guest related state data provided externally by CoGuestStore
Property | Type | Description |
connected | List of users already on seats. | |
invitees | List of users invited by host. | |
applicants | List of users who applied for co-guest received by host. | |
candidates | List of candidate users for co-guest. |
Usage Example
// Create store instanceval store = CoGuestStore.create("live_room_123")// Subscribe to state changeslifecycleScope.launch {store.coGuestState.connected.collect { connected ->println("Connected users: ${connected.size}")}}// Add host event listener (for hosts)store.addHostListener(object : HostListener() {override fun onGuestApplicationReceived(guestUser: LiveUserInfo) {println("Received application from ${guestUser.userName}")// Show accept/reject UI}override fun onHostInvitationResponded(isAccept: Boolean, guestUser: LiveUserInfo) {println("Audience ${guestUser.userName} ${if (isAccept) "accepted" else "rejected"}")}})// Host: Accept applicationstore.acceptApplication("user_456") { code, message ->if (code == 0) {println("Application accepted successfully")}}