diff --git a/ios/Classes/FlutterMediaLoadRequestDataHelper.swift b/ios/Classes/FlutterMediaLoadRequestDataHelper.swift index 2a64670..74ca662 100644 --- a/ios/Classes/FlutterMediaLoadRequestDataHelper.swift +++ b/ios/Classes/FlutterMediaLoadRequestDataHelper.swift @@ -8,6 +8,61 @@ import Foundation import GoogleCast +func getFlutterMediaStatus(mediaStatus: GCKMediaStatus?) -> MediaStatus { + let result = MediaStatus() + + if (mediaStatus == nil) { + return result + } + + result.isPlayingAd = NSNumber(value: mediaStatus?.playingAd ?? false) + result.mediaInfo = getFlutterMediaInfo(mediaInfo: mediaStatus?.mediaInformation) + result.playerState = getFlutterPlayerState(playerState: mediaStatus?.playerState) + result.adBreakStatus = getFlutterAdBreakStatus(adBreakStatus: mediaStatus?.adBreakStatus) + + return result +} + +func getFlutterAdBreakStatus(adBreakStatus: GCKAdBreakStatus?) -> AdBreakStatus { + let result = AdBreakStatus() + + if (adBreakStatus == nil) { + return result + } + + result.adBreakId = adBreakStatus?.adBreakID + result.adBreakClipId = adBreakStatus?.adBreakClipID + result.whenSkippableMs = getFlutterWhenSkippableMs(whenSkippable: adBreakStatus?.whenSkippable) + + return result +} + +func getFlutterWhenSkippableMs(whenSkippable: TimeInterval?) -> NSNumber { + let whenSkippableSecs = whenSkippable ?? 0 + let whenSkippableMs = Int(whenSkippableSecs * 1000) + + return NSNumber(value: whenSkippableMs) +} + +func getFlutterPlayerState(playerState: GCKMediaPlayerState?) -> PlayerState { + switch playerState { + case .unknown: + return PlayerState.unknown + case .idle: + return PlayerState.idle + case .playing: + return PlayerState.playing + case .paused: + return PlayerState.paused + case .buffering: + return PlayerState.buffering + case .loading: + return PlayerState.loading + default: + return PlayerState.unknown + } +} + func getFlutterMediaInfo(mediaInfo: GCKMediaInformation?) -> MediaInfo { let result = MediaInfo() diff --git a/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift b/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift index 65d456d..e2038ed 100644 --- a/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift +++ b/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift @@ -431,9 +431,10 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio } debugPrint("RemoteMediaClientListener: didUpdate mediaStatus - playerState: \(playerStateLabel)") - let playerState = mediaStatus?.playerState ?? GCKMediaPlayerState.unknown - let nsPlayerState = NSNumber(value: playerState.rawValue) - flutterApi.onStatusUpdatedPlayerStateRaw(nsPlayerState) { (_:Error?) in + let flutterMediaStatus = getFlutterMediaStatus(mediaStatus: mediaStatus) + flutterApi.onStatusUpdatedMediaStatus(flutterMediaStatus) { (_:Error?) in + } + flutterApi.onAdBreakStatusUpdatedMediaStatus(flutterMediaStatus) { (_:Error?) in } }