STEventsObserver
Bridges SpeechTiles Andamento media events to the typed STMediaEventDelegate interface.
Overview
This observer connects media notifications to the typed delegate interface used by applications. It is part of event delivery infrastructure rather than a replacement for inspecting STMediaEvent and its associated payload.
public protocol STMediaEventDelegate: AnyObject {
func mediaEventReceived(_ event: STMediaEvent)
}
public class STEventsObserver {
public init()
public weak var delegate: STMediaEventDelegate?
}
Create and retain an observer, then assign a delegate. The observer forwards Andamento media events as STMediaEvent values.
The delegate is weak, so assigning it does not establish ownership of the receiving object.
Example
final class MediaController: STMediaEventDelegate {
private let observer = STEventsObserver()
init() {
observer.delegate = self
}
func mediaEventReceived(_ event: STMediaEvent) {
// Handle typed media events.
}
}
Purpose and usage
Bridges Andamento media events to the typed STMediaEventDelegate interface. Inspect this value when processing the relevant asynchronous event.
Properties
delegate— Declared asSTMediaEventDelegate.
Example: Receiving Media Events
The class adopts STMediaEventDelegate, implements its required callback, and retains an STEventsObserver. The observer's delegate reference is weak, so the handler must also remain alive.
import Foundation
import STConversation
final class MediaEventHandler: STMediaEventDelegate {
private let observer = STEventsObserver()
init() {
observer.delegate = self
}
func mediaEventReceived(_ event: STMediaEvent) {
print("Media job: \(event.mediaJobID)")
print("Media item: \(event.mediaItemID)")
print("Function: \(event.function)")
print("Event type: \(event.type)")
switch event.data {
case .playback(let playbackData):
print("Playback event: \(playbackData)")
case .recording(let recordingData):
print("Recording event: \(recordingData)")
default:
break
}
}
}
// Retain the handler for as long as events are needed.
let eventHandler = MediaEventHandler()