RemoteMediaClient implement in iOS
This commit is contained in:
parent
7c393423c7
commit
9ef284dd4a
1 changed files with 90 additions and 2 deletions
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue