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. |
Function | Description |
Create object instance. | |
Host-side event publisher. | |
Guest-side event publisher. | |
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. |
public static func create(liveID: String) -> CoGuestStore {let store: CoGuestStoreImpl = StoreFactory.shared.getStore(liveId: liveID)return store}
Parameter | Type | Required | Description |
liveID | String | Required | Live room ID. |
public func applyForSeat(seatIndex: Int = -1, timeout: TimeInterval, extraInfo: String?, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
seatIndex | Int | Required | Seat index, -1 means auto-assign seat. |
timeout | TimeInterval | Required | Timeout (unit: seconds). |
extraInfo | String? | Required | Extra information. |
completion | Required | Completion callback. |
public func cancelApplication(completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
completion | Required | Completion callback. |
public func acceptApplication(userID: String, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
userID | String | Required | User ID. |
completion | Required | Completion callback. |
public func rejectApplication(userID: String, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
userID | String | Required | User ID. |
completion | Required | Completion callback. |
public func inviteToSeat(userID: String, seatIndex: Int = -1, timeout: TimeInterval, extraInfo: String?, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
userID | String | Required | Invited user ID. |
seatIndex | Int | Required | Seat index, -1 means auto-assign seat. |
timeout | TimeInterval | Required | Timeout (unit: seconds). |
extraInfo | String? | Required | Extra information. |
completion | Required | Completion callback. |
public func cancelInvitation(inviteeID: String, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
inviteeID | String | Required | Invited user ID. |
completion | Required | Completion callback. |
public func acceptInvitation(inviterID: String, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
inviterID | String | Required | Inviter user ID. |
completion | Required | Completion callback. |
public func rejectInvitation(inviterID: String, completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
inviterID | String | Required | Inviter user ID. |
completion | Required | Completion callback. |
public func disConnect(completion: CompletionClosure?) { fatalError("\\(#function) must be overridden by subclass") }
Parameter | Type | Required | Description |
completion | Required | Completion callback. |
Enum Value | Value | Description |
timeout | 0 | Request timeout. |
alreadySeated | 1 | User already on seat. |
Enum Value | 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. |
Enum Value | 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. |
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. |
// Create store instancelet store = CoGuestStore.create(liveID: "live_room_123")// Subscribe to state changesstore.state.subscribe { state inprint("Connected users: \\(state.connected.count)")print("Pending applications: \\(state.applicants.count)")}// Subscribe to host events (for hosts)store.hostEventPublisher.sink { event inswitch event {case .onGuestApplicationReceived(let guestUser):print("Received application from \\(guestUser.userName)")// Show accept/reject UIcase .onHostInvitationResponded(let isAccept, let guestUser):print("Audience \\(guestUser.userName) \\(isAccept ? "accepted" : "rejected")")default:break}}// Host: Accept applicationstore.acceptApplication(userID: "user_456") { code, message inif code == 0 {print("Application accepted successfully")}}
Feedback