| [ Web Proxy ] |
| Viewing: https://developers.cloudflare.com/realtime/realtimekit/release-notes/ios-core/ | [Back] [Original] |
Enhancements
Fixes
RtkMeetingInfo.enableAudio or RtkMeetingInfo.enableVideo field is false. The UI Kit component is no longer silently disabled.Breaking changes
plugins list to RtkMeetingInfo. Any plugin not declared at initialization will not be available in the meeting.let meetingInfo = RtkMeetingInfo(
authToken: authToken,
plugins: [
RtkClientPluginConfig(
id: "whiteboard", // Must match the plugin ID used on Web for sync to work
name: "Whiteboard",
url: "https://example.com",
icon: "https://example.com/logo.png",
permissions: RtkClientPluginPermissions(canActivate: true, canDeactivate: false)
)
]
)
RtkPlugin: baseURL, config, description, isPrivate, and staggered. Use the new icon and permissions properties instead.baseUrl in RtkMeetingInfo now has a default value and no longer needs to be passed explicitly.subscribe(key:listener:) and unsubscribe(key:listener:) overloads on RtkStore that passed both the key and value to the callback have been removed. Use the single-argument callback variants introduced in 2.1.0.Features
RtkAi class (exposed as client.ai) provides access to real-time transcripts. Implement RtkAiEventListener and register it with addAiEventListener(_:) to receive onTranscript(data:) callbacks. A transcriptionEnabled permission is available on MiscellaneousPermissions.RtkConnectedMeetings class (exposed as client.connectedMeetings) enables breakout room workflows. Register an RtkConnectedMeetingsEventListener to handle room transitions and state updates. See the Breakout Rooms documentation for a full guide.RtkChat: editTextMessage(messageId:newText:onResult:), editImageMessage(messageId:newUri:onResult:), editFileMessage(messageId:newUri:onResult:), and deleteMessage(messageId:onResult:). RtkChatEventListener gains onMessageEdited(message:) and onMessageDeleted(messageId:) callbacks. ChatMessage now includes an isEdited flag.RtkChat fetchPublicMessages(beforeTimestamp:count:onlyPinned:onResult:), fetchPrivateMessages(userId:beforeTimestamp:count:onlyPinned:onResult:), fetchPinnedMessages(beforeTimestamp:count:onlyPinned:onResult:), and getMessages(timestamp:count:channelId:isPinned:onResult:) allow fetching historical messages with cursor-based pagination via FetchMessagesResult(messages:hasMore:).RtkClientPluginConfig and RtkClientPluginPermissions. RtkPlugin exposes the new icon and permissions properties accordingly.RtkParticipants.broadcastMessage(message:targetParticipantIds:payload:) sends a message to a specific subset of participants.RtkStore.set(key:value:broadcast:persist:) now accepts a nullable value: Any?, allowing keys to be cleared by setting them to nil.RealtimeKitClient gains enableLogging(_:) and enableLogging(_:minSeverity:) to control SDK log output at runtime.Result_<S, F> type with Success and Failure variants is used consistently across new async APIs. It is named Result_ to avoid collision with Swift's built-in Result type.Fixes
Breaking changes
RtkParticipants.activeSpeaker RtkParticipants.lastActiveSpeaker. The old activeSpeaker property is deprecated and will be removed in a future release.RtkSelfParticipant.enableScreenShare() enableScreenShare(onResult:). The old no-callback version is deprecated and will be removed in a future release.RtkSelfParticipant.disableScreenShare() disableScreenShare(onResult:). The old no-callback version is deprecated and will be removed in a future release.RtkStore.subscribe(key, (key, value) Unit) subscribe(key, (value) Unit). The old two-argument callback signature is deprecated but remains functional via a backward-compatible shim.RtkStore.unsubscribe(key, (key, value) Unit) unsubscribe(key, (value) Unit). The old two-argument callback signature is deprecated but remains functional via a backward-compatible shim.Features
RtkChat.pin() and RtkChat.unpin() methods to pin and unpin chat messagesRtkChat.getMessagesByUser() to filter messages by sender and RtkChat.getMessagesByType() to filter messages by typeSelfPermissions.canPinMessage() to check whether the local participant has permission to pin messagesFixes
Breaking changes
realtime.cloudflare.com. Calling init() with a dyte.io base domain now fails immediately with MeetingError.InvalidBaseUrlFixes
init() was calledFixes
Fixes
Fixes
Fixes
Fixes
Fixes
Fixes
Fixes
Features
RtkSelfEventListener#onAudioDeviceChanged method that is invoked when the current audio route is updatedFixes
Fixes
Breaking changes
RtkSelfEventListener#onAudioDevicesUpdated method to provide the list of available devicesFixes
Fixes
Fixes
Enhancements
Enhancements
Features
RtkSelfParticipant#canJoinStage and RtkSelfParticipant#canRequestToJoinStage APIsFixes
Breaking changes
RtkLivestreamData.roomName to RtkLivestreamData.meetingId to match existing API conventionWaitingRoomPermissions abstraction all the relevant functionality here is available through HostPermissionscameraType: CameraType parameterVideoDeviceType#displayName is now deprecated, and it's recommended to call VideoDevice#toString instead to get user-facing names for individual VideoDevice instancesRtkSelfParticipant#addVideoMiddleware, RtkSelfParticipant#getVideoMiddlewares and RtkSelfParticipant#removeVideoMiddleware were removed. We do not support middlewares on iOS so these APIs were no-op and were incorrectly exposed.Features
VideoDevice now properly labels multiple cameras based on their camera characteristics such as wide-angle and telephoto.Fixes
Features
Enhancements
meeting.init()) is now ~60% fasterBreaking changes
Fixes
Breaking changes
channelId field from TextMessagechat packageRtkParticipant to the root packageRtkMeetingParticipant to the root packageRtkPluginFile to the plugins packageVideoScaleType to top level media packageRtk prefix from audio and video device typesmedia packageRtk prefix from polls typesRtkMeetingParticipant to root packageRtk prefix from RtkRecordingStateRtk prefix from chat message typesRtkMediaPermission to media package and renamed to MediaPermissionfeat package membersStageStatus class to stage package*EventListener formFixes
Fixes
| Web Proxy Viewer | New URL | Original Page |