RemoteMediaClient implement in iOS

This commit is contained in:
gianlucaparadise 2021-11-19 06:51:22 +01:00
parent 7c393423c7
commit 9ef284dd4a

View file

@ -2,7 +2,7 @@ import Flutter
import UIKit import UIKit
import GoogleCast import GoogleCast
public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessionManagerListener, CastHostApi { public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessionManagerListener, CastHostApi, GCKRemoteMediaClientListener {
public static func register(with registrar: FlutterPluginRegistrar) { public static func register(with registrar: FlutterPluginRegistrar) {
let messenger : FlutterBinaryMessenger = registrar.messenger() let messenger : FlutterBinaryMessenger = registrar.messenger()
let flutterApi = CastFlutterApi.init(binaryMessenger: messenger) let flutterApi = CastFlutterApi.init(binaryMessenger: messenger)
@ -34,7 +34,9 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
let newSession = newValue let newSession = newValue
_castSession = newValue _castSession = newValue
remoteMediaClient = newValue?.remoteMediaClient
flutterApi.getSessionMessageNamespaces { (namespaces, err) in flutterApi.getSessionMessageNamespaces { (namespaces, err) in
print("Updating castSession - getSessionMessageNamespaces success - param: \(namespaces.joined(separator: ", "))") print("Updating castSession - getSessionMessageNamespaces success - param: \(namespaces.joined(separator: ", "))")
if (oldSession == nil && newSession == nil) { if (oldSession == nil && newSession == nil) {
@ -61,6 +63,19 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
} }
} }
var _remoteMediaClient: GCKRemoteMediaClient?
var remoteMediaClient: GCKRemoteMediaClient? {
get { return _remoteMediaClient }
set {
print("Updating remoteMediaClient - remoteMediaClient changed: \(_remoteMediaClient != newValue)")
_remoteMediaClient?.remove(self)
newValue?.add(self)
_remoteMediaClient = newValue
}
}
init(flutterApi : CastFlutterApi) { init(flutterApi : CastFlutterApi) {
self.castContext = GCKCastContext.sharedInstance() self.castContext = GCKCastContext.sharedInstance()
self.sessionManager = GCKCastContext.sharedInstance().sessionManager self.sessionManager = GCKCastContext.sharedInstance().sessionManager
@ -206,4 +221,77 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
flutterApi.onSessionEnded { (_:Error?) in flutterApi.onSessionEnded { (_:Error?) in
} }
} }
// onQueueStatusUpdated
public func remoteMediaClientDidUpdateQueue(_ client: GCKRemoteMediaClient) {
print("RemoteMediaClientListener: didUpdateQueue")
flutterApi.onQueueStatusUpdated { (_:Error?) in
}
}
// onPreloadStatusUpdated
public func remoteMediaClientDidUpdatePreloadStatus(_ client: GCKRemoteMediaClient) {
print("RemoteMediaClientListener: didUpdatePreloadStatus")
flutterApi.onPreloadStatusUpdated { (_:Error?) in
}
}
// onStatusUpdated
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdate mediaStatus: GCKMediaStatus?) {
print("RemoteMediaClientListener: didUpdate mediaStatus")
flutterApi.onStatusUpdated { (_:Error?) in
}
}
// onAdBreakStatusUpdated - Can't find this on iOS
// onMediaError - Can't find this on iOS
// onMetadataUpdated
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdate mediaMetadata: GCKMediaMetadata?) {
print("RemoteMediaClientListener: didUpdate mediaMetadata")
flutterApi.onMetadataUpdated { (_:Error?) in
}
}
// onQueueStatusUpdated
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didReceive queueItems: [GCKMediaQueueItem]) {
print("RemoteMediaClientListener: didReceive queueItems")
flutterApi.onQueueStatusUpdated { (_:Error?) in
}
}
// onSendingRemoteMediaRequest
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didStartMediaSessionWithID sessionID: Int) {
print("RemoteMediaClientListener: didStartMediaSessionWithID")
flutterApi.onSendingRemoteMediaRequest { (_:Error?) in
}
}
// onQueueStatusUpdated
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didReceiveQueueItemIDs queueItemIDs: [NSNumber]) {
print("RemoteMediaClientListener: didReceiveQueueItemIDs")
flutterApi.onQueueStatusUpdated { (_:Error?) in
}
}
// onQueueStatusUpdated
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didUpdateQueueItemsWithIDs queueItemIDs: [NSNumber]) {
print("RemoteMediaClientListener: didUpdateQueueItemsWithIDs")
flutterApi.onQueueStatusUpdated { (_:Error?) in
}
}
// onQueueStatusUpdated
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didRemoveQueueItemsWithIDs queueItemIDs: [NSNumber]) {
print("RemoteMediaClientListener: didRemoveQueueItemsWithIDs")
flutterApi.onQueueStatusUpdated { (_:Error?) in
}
}
// onQueueStatusUpdated
public func remoteMediaClient(_ client: GCKRemoteMediaClient, didInsertQueueItemsWithIDs queueItemIDs: [NSNumber], beforeItemWithID beforeItemID: UInt) {
print("RemoteMediaClientListener: didInsertQueueItemsWithIDs")
flutterApi.onQueueStatusUpdated { (_:Error?) in
}
}
} }