【发布时间】:2019-10-22 12:57:26
【问题描述】:
将 tvOS 分段式顶架从使用 TVTopShelfProvider(现已弃用)迁移到 TVTopShelfContentProvider 会导致在启动时出现 NSException。
错误NSExtensionPrincipalClass product_module_name.ContentProvider must implement at least one public protocol 表明我的班级ContentProvider 必须使用协议。 TVTopShelfContentProvider 是一个类而不是一个协议。
查看 Apple 的 example project,您会发现它们也只是 TVTopShelfContentProvider 的子类。
小例子:
class ContentProvider: TVTopShelfContentProvider {
override func loadTopShelfContent(completionHandler: @escaping (TVTopShelfContent?) -> Void) {
requestMediaItemsIfNeeded {
let itemCollection: TVTopShelfItemCollection = TVTopShelfItemCollection(items: self.items)
itemCollection.title = "Collection Title"
let sectionedContent: TVTopShelfSectionedContent = TVTopShelfSectionedContent(sections: [itemCollection])
completionHandler(sectionedContent)
}
}
}
顶级货架相关的 Info.plist 值:
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.tv-top-shelf</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).ContentProvider</string>
</dict>
我是否缺少需要添加/更新的项目配置值?创建了一个新的最小顶层扩展,这些看起来是唯一需要的更改。
【问题讨论】: