MediaStatus handling ios

This commit is contained in:
gianlucaparadise 2021-12-24 11:02:49 +01:00
parent b2cda81cca
commit 1ae9006756
2 changed files with 59 additions and 3 deletions

View file

@ -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()

View file

@ -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
}
}