谷歌Chromecast iOS SDK是否支持锁屏控件?

我已经尝试使用适用于iOS(2.1.0)的最新GoogleCast框架为谷歌Chromecastvideostream应用程序实现locking屏幕控件。

我已更正示例Chromecast应用 – https://github.com/googlecast/CVideosVideos-ios已将UIBackgroundModes行添加到Info.plist 在这里输入图像说明 增加了MediaPlayer框架。 并将以下代码添加到ChromecastDeviceController.m

#import <MediaPlayer/MPNowPlayingInfoCenter.h> #import <MediaPlayer/MPMediaItem.h> ....... - (BOOL)loadMedia:(NSURL *)url thumbnailURL:(NSURL *)thumbnailURL title:(NSString *)title subtitle:(NSString *)subtitle mimeType:(NSString *)mimeType startTime:(NSTimeInterval)startTime autoPlay:(BOOL)autoPlay { ..... [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter"); if (playingInfoCenter) { NSDictionary *songInfo = [NSDictionary dictionaryWithObjectsAndKeys: @"Test artist", MPMediaItemPropertyArtist, @"Test title", MPMediaItemPropertyTitle, @"Test Album", MPMediaItemPropertyAlbumTitle, nil]; [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo]; } return YES; } 

但在广播期间,我看不到锁屏上的任何控制。

从这些资源中,我发现无法在之前的Chromecast iOS SDK(2.0)版本的locking屏幕上显示任何控件,因为它会closures套接字进入后台模式。

ChromeCast后台video播放支持iOS

Google Chromecast SDK TearDown在后台

https://code.google.com/p/google-cast-sdk/issues/detail?id=138

Cast SDK 2.1.0还是一样吗? 或者我在做错事,实际上可以在chromecasting的时候在锁屏上显示控件? 谢谢。

当您locking屏幕时,当前的iOS Cast SDK会断开套接字,所以当前无法实现该套接字。

那么,我希望这能帮助那些和我有类似问题的人。 🙂

经过大量的研究,我最终使用ignoreAppStateNotifications标志(在接受的答案中引用),当连接到谷歌的铸造设备,像这样

 self.deviceManager = [[GCKDeviceManager alloc] initWithDevice:_selectedDevice clientPackageName:[NSBundle mainBundle].bundleIdentifier ignoreAppStateNotifications:YES]; 

为了使locking屏幕控件与Google Cast(在激活项目function背景模式中的“audio,AirPlay和图片后”)一起工作:

  • 我正在使用内部的AppDelegate - (void)remoteControlReceivedWithEvent:(UIEvent *)event ,每次在locking屏幕控件上发生一个操作(播放,暂停,下一个…)时被调用。
  • 在这个方法里面我有一个开关,所以我可以知道接收了什么样的UIEventTypeRemoteControl
    • 如果是UIEventSubtypeRemoteControlPlay ,我检查是否已经连接了Google Cast,并且告诉接收者播放self.mediaControlChannel.play和暂停事件。
    • 对于下一个和以前的事件,这将取决于你如何设置与谷歌演员的整合,你如何投射你的媒体,在我的情况下,每次我收到这样的行动,我投了一首不同的歌曲当前歌曲列表)。

我已经开发了一个解决scheme,在locking屏幕上呈现播放器控件。 我正在使用一些黑客工作,如method_exchangeImplementations和一个静音的声音播放和模拟播放器。

到目前为止它工作正常,但可能仍然有所改进。

看看https://github.com/peantunes/google-cast-ios-lock-screen