google chromecast iOS SDK 是不是支持锁屏控件?

Posted

技术标签:

【中文标题】google chromecast iOS SDK 是不是支持锁屏控件?【英文标题】:Does google chromecast iOS SDK support lock screen controls?google chromecast iOS SDK 是否支持锁屏控件? 【发布时间】:2014-05-14 12:24:51 【问题描述】:

我尝试使用适用于 ios 的最新 GoogleCast 框架 (2.1.0) 为 google Chromecast 视频流应用程序实现锁屏控制。

我已更正了示例 Chromecast 应用程序 - https://github.com/googlecast/CastVideos-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) 的锁定屏幕上显示任何控件,因为它关闭了进入后台模式的套接字。

ChromeCast background video playback support iOS

Google Chromecast SDK TearDown in background

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

Cast SDK 2.1.0 还是一样吗?或者我做错了什么,实际上可以在 chromecasting 期间在锁定屏幕上显示控件? 谢谢。

【问题讨论】:

【参考方案1】:

当前的 iOS Cast SDK 在您锁定屏幕时会断开套接字,因此您目前无法实现该功能。

【讨论】:

谢谢阿里。希望以后的版本能支持。 Ali,如果你在这个团队工作(正如我在你的个人资料中看到的那样),你能否请他们更正这部分 - developers.google.com/cast/docs/…(发件人锁定屏幕“...对于 iOS 是可选的。” ) 如果无法实现此功能,则应在此处注明,否则看起来会令人困惑。谢谢! @AliNaddaf,@dmitry-khryukin 伙计们,两年来这一点有什么改变吗?我看到 GCKDeviceManager 能够在后台工作(通过 ignoreAppStateNotifications 标志),但我仍然无法使锁屏控件与 chromecast 一起工作 @AlexPeda 抱歉,从那以后我就没有接触过 chrmoecast @all 是否可以镜像查看内容而不是播放音频/视频并使用此共享到外部显示器?【参考方案2】:

嗯,我希望它可以帮助那些和我有类似问题的人。 :)

经过大量研究后,我在连接到 google cast 设备时最终使用了ignoreAppStateNotifications 标志(已在接受的答案中引用),就像这样

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

为了使锁屏控件与 google cast 一起工作(在项目功能上激活背景模式的“音频、AirPlay 和画中画”后):

我在 AppDelegate - (void)remoteControlReceivedWithEvent:(UIEvent *)event 内部使用,每次在锁定屏幕控件上发生操作(播放、暂停、下一个...)时都会调用它。 在这个方法中我有一个开关,所以我可以知道收到了什么样的UIEventTypeRemoteControl: 如果是UIEventSubtypeRemoteControlPlay,我会检查是否连接了google cast,并告诉接收器播放self.mediaControlChannel.play,暂停事件也是如此。 对于下一个和以前的事件,这取决于您如何设置与 google cast 的集成,您如何投放媒体,就我而言,每次收到此类操作时,我都会投放不同的歌曲(以前或当前歌曲列表的下一个)。

【讨论】:

你能告诉我你是如何设法在 chrome cast 上播放某些东西时显示锁定屏幕控件的,因为我被困在我实施的那个特定步骤上吗? 是否可以镜像视图内容而不是播放音频/视频并分享到外部显示器?【参考方案3】:

我开发了一种解决方案,可以在锁定屏幕中显示播放器控件。 我正在使用一些技巧来工作,例如 method_exchangeImplementations 和静音来播放和模拟播放器。

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

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

【讨论】:

以上是关于google chromecast iOS SDK 是不是支持锁屏控件?的主要内容,如果未能解决你的问题,请参考以下文章

将静态图像从 iOS 应用程序发送到 Chromecast?

您的 chromecast 应用能否仅使用预览版 SDK 发布?

Chromecast SDK 投射整个屏幕

ChromeCast SDK 专辑封面

如何获取 Chromecast Sender SDK 的生产版本以包含在我的应用程序中

在 Google Cast SDK 开发者控制台中注册 Android TV