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 GoogleCast
|
||||
|
||||
public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessionManagerListener, CastHostApi {
|
||||
public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessionManagerListener, CastHostApi, GCKRemoteMediaClientListener {
|
||||
public static func register(with registrar: FlutterPluginRegistrar) {
|
||||
let messenger : FlutterBinaryMessenger = registrar.messenger()
|
||||
let flutterApi = CastFlutterApi.init(binaryMessenger: messenger)
|
||||
|
|
@ -35,6 +35,8 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
|||
|
||||
_castSession = newValue
|
||||
|
||||
remoteMediaClient = newValue?.remoteMediaClient
|
||||
|
||||
flutterApi.getSessionMessageNamespaces { (namespaces, err) in
|
||||
print("Updating castSession - getSessionMessageNamespaces success - param: \(namespaces.joined(separator: ", "))")
|
||||
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) {
|
||||
self.castContext = GCKCastContext.sharedInstance()
|
||||
self.sessionManager = GCKCastContext.sharedInstance().sessionManager
|
||||
|
|
@ -206,4 +221,77 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
|
|||
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