现在,扫描本地网络中设备的应用会显示一次性权限对话框,提示用户查找并连接到本地网络设备。Cast 平台使用本地网络来发现和控制 Cast 设备,因此如果用户拒绝授予权限,将无法进行投屏。
为了改善用户体验,我们正在对使用标准设备选择器的应用的 SDK 进行一些用户体验方面的修改。这些用户体验修改可让用户更清楚地了解为何需要本地网络访问权限,以及在本地网络设备访问权限被停用的情况下如何启用投屏。
您可以通过以下方式添加 Cast iOS SDK v4.6.0 或更高版本:按照 Swift Package Manager 设置进行操作,使用 Swift Package Manager 添加;或者按照手动设置进行操作,手动下载。此版本对底层发现机制进行了更改,以允许使用 Xcode 12 构建的应用在网络上查找 Cast 设备。投放按钮现在应始终显示。如果用户点按“投放”按钮时没有可用的设备,系统会显示一个对话框,其中提供有关设备可能无法使用的原因的指导,包括有关如何重新启用本地网络访问权限的信息。
Cast SDK 变更
首次投放
用户首次尝试投放时,系统会显示一个本地网络访问 (LNA) 插页式对话框,说明为何需要本地网络访问权限,然后显示 Apple 提供的 iOS 本地网络访问权限提示。以下模拟图展示了相应流程:

投放功能不可用
从 iOS 发送方 SDK 4.6.0 开始,当用户连接到 Wi-Fi 时,系统始终会显示“投放”按钮。当投放设备不可用时,点按“投放”按钮会显示一个对话框,其中会提示用户投放功能可能无法使用的原因,如下面的模拟所示:

更新应用
-
将 Cast iOS SDK 4.8.6 添加到您的项目
如果使用 Swift Package Manager,请将
google-cast-ios-sdk软件包更新到版本 4.8.6。否则,请 手动拉取 SDK。
-
将
NSBonjourServices添加到Info.plist在
Info.plist中指定NSBonjourServices,以允许本地网络发现成功。您需要同时添加
_googlecast._tcp和_<your-app-id>._googlecast._tcp作为服务,设备发现才能正常运行。appID 是您的 receiverID,与
GCKDiscoveryCriteria中定义的 ID 相同。更新以下示例
NSBonjourServices定义,并将“ABCD1234”替换为您的 appID。 -
将
NSLocalNetworkUsageDescription添加到您的Info.plist我们强烈建议您通过在应用的
Info.plist文件中为NSLocalNetworkUsageDescription添加应用专用权限字符串来自定义本地网络提示中显示的消息,例如描述 Cast 发现和其他发现服务(如 DIAL)。此消息将显示在 iOS 本地网络访问权限对话框中,如模拟所示。
-
重新向 Apple App Store 发布应用
我们建议您尽快使用 4.8.6 重新发布应用。
自定义
启动投放设备发现
默认情况下,当用户首次点按“投放按钮” (GCKUICastButton) 时,系统会启动投放设备发现。如果用户是首次尝试在本地网络中使用 Cast 应用,系统会显示新的 LNA 插页式广告,然后显示 iOS 本地网络访问权限对话框。
我们提供了一个新标志,让您可以控制设备发现何时开始以及用户体验中某些元素的行为:
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
默认值为 true。此标志仅在标志 GCKCastOptions::disableDiscoveryAutostart 设置为 false 时适用。
如果设置为 true,当用户首次点按 GCKUICastButton 时,系统会开始发现投放设备。系统会向用户显示一条信息性消息,告知他们为何需要本地网络权限。在该消息之后,系统会显示 iOS LNA 消息。
在确认消息后,系统会开始发现投放设备。
在后续应用启动中,GCKUICastButton 始终显示。
如果设置为 false,设备发现将根据标志 GCKCastOptions::disableDiscoveryAutostart 的值开始。
常见问题解答
如果我使用 Cast SDK v4.4.8 和 Xcode 12 重新发布 Cast 发送方应用,会发生什么情况?
除非您已从 Apple 获得网络多播授权,否则您的应用可能无法发现本地网络中的 Cast 设备。 请注意,Apple 不会仅出于支持 Cast 的目的而授予多播授权。 如果您计划使用 Xcode 12 进行构建,则应发布使用 Cast 4.6.0 的应用。
新版 Cast SDK 发布后,我需要做些什么来更新应用?
- 更新应用的
Info.plist,以包含本地网络使用情况说明。 - 将
NSBonjourServices添加到应用的Info.plist中,并提供 Cast 和应用 ID 的 Bonjour 服务名称。 - 将发送方应用升级为使用 Cast SDK 4.6.0。
- 将应用重新发布到 Apple 应用商店。
升级到 4.6.0 后,为什么设备不再显示在我的自定义设备选择器中?
这是一个已知问题,如果您使用的是自定义设备选择器而不是标准设备选择器,则可能会出现此问题。在 4.4.8 版及更早版本的 Cast SDK 中,设备扫描是自动进行的。从版本 4.6.0 开始,您需要明确调用
GCKDiscoveryManager 类中的 startDiscovery 方法来启动设备发现。
此项变更的原因是,本地网络访问 (LNA) 权限提示会在应用首次扫描后显示。这可能会导致权限对话框随机出现在应用中的不同位置。
如果开发者为其应用构建自定义设备选择器,则应在首次启动设备扫描之前提供一次性插页式广告。