无法使用 GoogleCastSDK iOS 4.5.0 在 iOS 14 上启动设备发现

Unable to start device discovery on iOS 14 using GoogleCastSDK iOS 4.5.0

我正在尝试按照本指南将 iOS Sender App 从 Cast SDK v2 迁移到 Cast 应用程序框架 (CAF): https://developers.google.com/cast/docs/migrate_v2/ios_sender

iOS 版本是 14,我按照此页面上的说明操作: https://developers.google.com/cast/docs/ios_sender/ios_permissions_changes

这是我已经完成的:

  1. 手动将 Cast iOS SDK 4.5.0(无蓝牙)添加到我的项目中。

  2. 已将 NSBonjourServices 添加到我的 Info.plist,其中 XXXXXXXX 是我的自定义接收器应用程序 ID:

<key>NSBonjourServices</key>
<array>
  <string>_googlecast._tcp</string>
  <string>_XXXXXXXX._googlecast._tcp</string>
</array>
  1. 已将 NSLocalNetworkUsageDescription 添加到我的 Info.plist。

  2. 添加“获取WiFi信息”权限:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.networking.wifi-info</key>
    <true/>
</dict>
</plist>

我的应用程序使用自定义 UI 到 select 投射设备,所以我不使用 GCKUICastButton。 这是我的主要 UIViewController 的 viewDidLoad 方法中的代码 运行,它也是 GCKDiscoveryManagerListener:

[GCKLogger sharedInstance].delegate = self;
    
GCKDiscoveryCriteria* discoveryCriteria = [[GCKDiscoveryCriteria alloc] initWithApplicationID:kMyReceiverAppId];
GCKCastOptions *options = [[GCKCastOptions alloc] initWithDiscoveryCriteria:discoveryCriteria];
options.startDiscoveryAfterFirstTapOnCastButton = NO;
options.disableDiscoveryAutostart = NO;
[GCKCastContext setSharedInstanceWithOptions:options];

GCKDiscoveryManager* chromecastDiscoveryManager = [GCKCastContext sharedInstance].discoveryManager;
[chromecastDiscoveryManager addListener:self];
[chromecastDiscoveryManager startDiscovery];

结果:GCKDeviceManagerDelegate 方法(didStartDiscoveryForDeviceCategory、didInsertDevice、didRemoveDevice)从未被调用。 在我的调试控制台上,我看到这条消息(如果它与我的问题有任何联系):

CoreData model CastFrameworkDB.momd not found at (null), -[GCKDatabase initWithEmpty:inMemory:runtimeConfiguration:]_block_invoke, GCKDatabase.m:217
Can't initialize database because the model can't be found in bundle, aborting, -[GCKDatabase initWithEmpty:inMemory:runtimeConfiguration:]_block_invoke, GCKDatabase.m:218

非常感谢任何帮助!

XCode 不会自动将 GoogleCast.framework 捆绑文件 添加到项目中,这就是此错误的原因。

要更正此问题,您必须手动添加捆绑文件。要做到这一点,请转到您的项目设置“构建阶段”->“复制捆绑资源”->“添加项目”->“添加其他”。然后在GoogleCast.framework文件夹中找到GoogleCastCoreResources.bundleGoogleCastUIResources.bundle . Select 他们并添加。

这应该可以解决问题。