MediaStatus handling ios
This commit is contained in:
parent
b2cda81cca
commit
1ae9006756
2 changed files with 59 additions and 3 deletions
|
|
@ -8,6 +8,61 @@
|
||||||
import Foundation
|
import Foundation
|
||||||
import GoogleCast
|
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 {
|
func getFlutterMediaInfo(mediaInfo: GCKMediaInformation?) -> MediaInfo {
|
||||||
let result = MediaInfo()
|
let result = MediaInfo()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -431,9 +431,10 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
||||||
}
|
}
|
||||||
|
|
||||||
debugPrint("RemoteMediaClientListener: didUpdate mediaStatus - playerState: \(playerStateLabel)")
|
debugPrint("RemoteMediaClientListener: didUpdate mediaStatus - playerState: \(playerStateLabel)")
|
||||||
let playerState = mediaStatus?.playerState ?? GCKMediaPlayerState.unknown
|
let flutterMediaStatus = getFlutterMediaStatus(mediaStatus: mediaStatus)
|
||||||
let nsPlayerState = NSNumber(value: playerState.rawValue)
|
flutterApi.onStatusUpdatedMediaStatus(flutterMediaStatus) { (_:Error?) in
|
||||||
flutterApi.onStatusUpdatedPlayerStateRaw(nsPlayerState) { (_:Error?) in
|
}
|
||||||
|
flutterApi.onAdBreakStatusUpdatedMediaStatus(flutterMediaStatus) { (_:Error?) in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue