您可通过以下步骤将 iOS 发送器应用从 Cast SDK 转换 v2 到 CAF 发送器,这基于 GCKCastContext 单例。
简介
- CAF 发送器仍然分布在 Google Cast 开发者网站和 CocoaPods,如 v2。
- 新增了一些类,这些类负责 Google Cast 设计核对清单。
- CAF 发送器提供符合 Cast 用户体验要求的微件;v2 不提供任何界面组件,而是要求您实现 这些小组件
- CAF 发送器设计与 Cast Android SDK 设计一致。
- CAF Sender 支持 Bitcode,如 v2。
- CAF 中的字幕与 v2 类似。
依赖项
CAF Sender 支持 iOS 8 及更高版本。
初始化
在 CAF 中,Cast 框架需要显式初始化步骤。本次
包括初始化
GCKCastContext
使用适当的
GCKCastOptions
用于指定 Web Receiver 应用 ID 和任何其他全局变量,
选项。这通常在 AppDelegate
中完成
-[application:didFinishLaunchingWithOptions:]
方法:
GCKCastOptions *options = [[GCKCastOptions alloc]
initWithReceiverApplicationID:applicationID];
[GCKCastContext setSharedInstanceWithOptions:options];
在 v2 中不需要执行此步骤。
设备发现
在 CAF 中,发现过程由
框架(当应用进入前台并进入后台时),
。v2 中的 GCKDeviceScanner
和 GCKFilterCriteria
类
已弃用,不应继续使用。
“投放”按钮和“投放”对话框
在 CAF 中,“投射”按钮和对话框由框架提供。演职人员 按钮可以实例化,并添加到导航栏中,如下所示:
GCKUICastButton *castButton =
[[GCKUICastButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)];
castButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem =
[[UIBarButtonItem alloc] initWithCustomView:castButton];
您还可以向故事板中添加“投放”按钮。
用户点按该按钮时,系统会自动显示“投射”对话框。
设备控制
在 CAF 中,设备控制主要由框架处理。发送者
应用无需处理与设备连接和启动
Web Receiver 应用。v2 类
GCKDeviceManager
已弃用,应
。现在,发件人和网络接收器之间的互动
"session"。CAF
GCKSessionManager
类处理会话生命周期,
自动开始和停止会话以响应用户手势:会话
当用户在 Cast 对话框中选择 Cast 设备时启动,并结束
当用户点按“停止投放”时触发按钮,或在
发送者应用本身终止。发送者应用会收到会话通知
来为生命周期事件注册
GCKSessionManagerListener
替换为
GCKSessionManager
。
通过
GCKSessionManagerListener
协议为所有会话生命周期事件定义回调方法。
通过
GCKCastSession
类表示与 Cast 设备的会话。类
提供了用于控制设备音量和静音状态的方法,
之前使用 v2 中的方法完成的
GCKDeviceManager
。
在 v2 中,
GCKDeviceManagerDelegate
协议提供的变更通知
设备状态,包括音量、静音状态、待机状态等。
在 CAF 中,音量/静音状态变化通知通过回调进行传送
方法(位于
GCKSessionManagerListener
协议;这些监听器通过
GCKSessionManager
。
所有其他设备状态通知
通过
GCKCastDeviceStatusListener
协议;这些监听器通过
GCKCastSession
。
重新连接逻辑
与 v2 一样,CAF 会尝试重新建立 会因为 Wi-Fi 信号暂时丢失或其他网络错误而丢失。现在是 是在会话级设置的会话可能会进入“已暂停”状态状态 并将恢复为“已连接”状态,当 连接就会恢复。框架负责重新连接到 Web Receiver 应用,并在此过程中重新连接任何 Cast 频道。
此外,CAF 还添加了自动会话恢复功能。如果发件人
发送到后台或被终止(通过滑动或
而当投射会话正在进行中时,框架将
当发送方应用返回到
前台运行或重新启动;由
GCKSessionManager
、
这将对任何已注册
GCKSessionManagerListener
实例。
自定义渠道注册
在 v2 中,自定义渠道(使用
GCKCastChannel
子类或
GCKGenericChannel
和受托人)都已向
GCKDeviceManager
。
在 CAF 中,自定义渠道改为通过
GCKCastSession
实例。您可以在
GCKSessionManagerListener
-[sessionManager:didStartCastSession:]
回调方法。对于媒体应用,则不再需要
注册
GCKMediaControlChannel
;
请参阅下一部分了解详情。
媒体控件
v2 类
GCKMediaControlChannel
已弃用,不应继续使用。在 CAF 中,它已被新的
GCKRemoteMediaClient
类,后者在一个更方便的 API 中提供等效功能。
无需显式初始化或注册此对象;该
框架会自动实例化对象,并注册底层代码,
会话启动时的媒体渠道(如果已连接 Web Receiver 应用)
来支持媒体命名空间
通过
GCKRemoteMediaClient
可以使用
-[remoteMediaClient]
属性
GCKCastSession
对象。
在 v2 中,
GCKMediaControlChannel
将返回一个数字请求 ID 以及
GCKMediaControlChannelDelegate
应在发送有关请求完成的通知时提供此 ID 或
失败。
在 CAF 中,
GCKRemoteMediaClient
将返回
GCKRequest
object;此对象具有关联的
GCKRequestDelegate
协议
可用于跟踪请求的进度和最终结果。
v2
GCKMediaControlChannel
;
会发送有关网络接收器上的媒体播放器状态变化的通知
通过
GCKMediaControlChannelDelegate
。
在 CAF 中,
GCKRemoteMediaClient
通过其
GCKRemoteMediaClientListener
协议。可通过
GCKRemoteMediaClient
,可让多个发送者组件共享
与会话关联的 GCKRemoteMediaClient
的单个实例。
在 v2 中,发送方应用程序必须承担让用户
与网络接收器上的媒体播放器状态同步。在 CAF 中,
GCKUIMediaController
承担大部分的责任请参阅
Codelab 教程
文档中提供了有关如何使用此组件的示例。
介绍性叠加层
V2 不提供 介绍性叠加层界面。
CAF 添加类
GCKCastContext
包含方法
-[presentCastInstructionsViewControllerOnce]
发送器应用可利用它在首次显示“投射”按钮时突出显示该按钮
。
迷你控制器
在 v2 中,您需要在 发送器应用。
在 CAF 中,框架提供了一个控制栏,
GCKUIMiniMediaControlsViewController
、
您可以将其添加至您希望显示
控件。您可以通过以下两种方式将迷你控制器添加到发送器应用:
让 Cast 框架通过封装 {0/} 来管理迷你控制器的布局 现有视图控制器
GCKUICastContainerViewController
并添加GCKUIMiniMediaControlsViewController
。使用
-[createMiniMediaControlsViewController]
来创建一个GCKUIMiniMediaControlsViewController
实例,然后将其作为子视图添加到容器视图控制器。
展开的控制器
在 v2 中,您需要在 。
CAF 添加次数
GCKUIMediaController
、
您可以用它来更轻松地实现展开的控制器。
CAF 添加了一个预构建的展开控制器 widget
GCKUIExpandedMediaControlsViewController
您只需将其添加到自己的应用中即可。您不再需要在 Google Ads 中
控制器(使用 GCKUIMediaController
)。
调试日志记录
通过
GCKLogger
和
GCKLoggerDelegate
v2 中的类已转移到 CAF 中,并进行了一些更改和增强功能。
通过
GCKLoggerDelegate
-[logFromFunction:message:]
方法包含
已弃用,取而代之的是
-[logMessage:fromFunction:]
。
框架日志消息现在可以通过构建适当的
GCKLoggerFilter
并通过设置
的 -[filter]
属性
GCKLogger
单例。