Property | Type | Description |
currentBattleInfo | Current PK information. | |
battleUsers | PK user list. | |
battleScore | [String: UInt] | PK score mapping. |
Function | Description |
Create BattleStore instance. | |
PK event publisher. | |
Initiate PK request. | |
Cancel PK request. | |
Accept PK request. | |
Reject PK request. | |
Exit PK. |
public static func create(liveID: String) -> BattleStore {let store: BattleStoreImpl = StoreFactory.shared.getStore(liveId: liveID)return store}
Parameter | Type | Required | Description |
liveID | String | Required | Live room ID. |
public func requestBattle(config: BattleConfig, userIDList: [String], timeout: TimeInterval, completion: BattleRequestClosure?) {fatalError("\\(#function) must be overridden by subclass")}
Parameter | Type | Required | Description |
config | Required | PK configuration. | |
userIDList | [String] | Required | List of user IDs to join PK. |
timeout | TimeInterval | Required | Request timeout duration. |
completion | BattleRequestClosure? | Required | Callback for successful request initiation. |
public func cancelBattleRequest(battleId: String, userIdList: [String], completion: CompletionClosure?) {fatalError("\\(#function) must be overridden by subclass")}
Parameter | Type | Required | Description |
battleId | String | Required | PK ID. |
userIdList | [String] | Required | User ID list. |
completion | Required | Callback for successful cancellation. |
public func acceptBattle(battleID: String, completion: CompletionClosure?) {fatalError("\\(#function) must be overridden by subclass")}
Parameter | Type | Required | Description |
battleID | String | Required | PK ID. |
completion | Required | Callback for successful acceptance. |
public func rejectBattle(battleID: String, completion: CompletionClosure?) {fatalError("\\(#function) must be overridden by subclass")}
Parameter | Type | Required | Description |
battleID | String | Required | PK ID. |
completion | Required | Callback for successful rejection. |
public func exitBattle(battleID: String, completion: CompletionClosure?) {fatalError("\\(#function) must be overridden by subclass")}
Parameter | Type | Required | Description |
battleID | String | Required | PK ID. |
completion | Required | Callback for successful exit. |
Enum Value | Value | Description |
timeOver | 0 | PK countdown ended. |
allMemberExit | 1 | All PK members exited. |
Enum Value | Description |
onBattleStarted | This callback is triggered when PK officially starts, notifying all participants that PK has begun. |
onBattleEnded | This callback is triggered when PK ends. |
onUserJoinBattle | This callback is triggered when a user joins PK. |
onUserExitBattle | This callback is triggered when a user exits PK. |
onBattleRequestReceived | This callback is triggered when a PK request is received. |
onBattleRequestCancelled | This callback is triggered when a PK request is cancelled. |
onBattleRequestTimeout | This callback is triggered when a PK request times out. |
onBattleRequestAccept | This callback is triggered when a PK request is accepted. |
onBattleRequestReject | This callback is triggered when a PK request is rejected. |
Property | Type | Description |
duration | TimeInterval | PK duration (unit: seconds). |
needResponse | Bool | Whether the invitee needs to reply with accept/reject. |
extensionInfo | String | Extension information. |
Property | Type | Description |
battleID | String | PK ID. |
config | PK configuration information set when sending a PK request. | |
startTime | UInt | PK start marker timestamp (unit: seconds). |
endTime | UInt | PK end marker timestamp (unit: seconds). |
Property | Type | Description |
currentBattleInfo | Current PK information. | |
battleUsers | PK user list. | |
battleScore | [String: UInt] | PK score mapping. |
fun onSuccess(battleInfo: BattleInfo, resultMap: Map<String, Int>)
Parameter | Type | Description |
battleInfo | PK information, containing detailed configuration and status of the PK. | |
resultMap | Map<String, Int> | Response result callback for PK request. |
fun onError(code: Int, desc: String)
Parameter | Type | Description |
code | Int | Error code. |
desc | String | Error description. |
// Create store instancelet store = BattleStore.create(liveID: "live_room_123")// Subscribe to state changesstore.state.subscribe { state inif let battleInfo = state.currentBattleInfo {print("Current PK ID: \\(battleInfo.battleID)")}print("PK user count: \\(state.battleUsers.count)")}// Subscribe to PK eventsstore.battleEventPublisher.sink { event inswitch event {case .onBattleStarted(let battleInfo, let inviter, let invitees):print("PK started, initiator: \\(inviter.userName)")case .onBattleEnded(let battleInfo, let reason):print("PK ended, reason: \\(reason)")default:break}}// Initiate PK requestlet config = BattleConfig(duration: 300, needResponse: true)store.requestBattle(config: config, userIDList: ["user_456"], timeout: 30) { result inswitch result {case .success(let (battleInfo, resultMap)):print("PK request successful: \\(battleInfo.battleID)")case .failure(let error):print("PK request failed: \\(error)")}}
Feedback