无法使用 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
这是我已经完成的:
手动将 Cast iOS SDK 4.5.0(无蓝牙)添加到我的项目中。
已将 NSBonjourServices 添加到我的 Info.plist,其中 XXXXXXXX 是我的自定义接收器应用程序 ID:
<key>NSBonjourServices</key>
<array>
<string>_googlecast._tcp</string>
<string>_XXXXXXXX._googlecast._tcp</string>
</array>
已将 NSLocalNetworkUsageDescription 添加到我的 Info.plist。
添加“获取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.bundle和GoogleCastUIResources.bundle . Select 他们并添加。
这应该可以解决问题。
我正在尝试按照本指南将 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
这是我已经完成的:
手动将 Cast iOS SDK 4.5.0(无蓝牙)添加到我的项目中。
已将 NSBonjourServices 添加到我的 Info.plist,其中 XXXXXXXX 是我的自定义接收器应用程序 ID:
<key>NSBonjourServices</key>
<array>
<string>_googlecast._tcp</string>
<string>_XXXXXXXX._googlecast._tcp</string>
</array>
已将 NSLocalNetworkUsageDescription 添加到我的 Info.plist。
添加“获取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.bundle和GoogleCastUIResources.bundle . Select 他们并添加。
这应该可以解决问题。