是否可以在 iOS 13 中运行 WidgetKit 代码?

问题描述

我正在创建一个需要有一个小部件的项目。 我的项目是使用 Xcode 12.4 创建的,我的 iOS App 支持的最低 iOS 版本是 iOS 13,因此我的 App 的目标部署 iOS 版本是 iOS 13。 由于 WidgetKit 仅在 iOS 14 中可用,因此我为我的 Widget 创建了一个新目标,部署目标为 iOS 14。

是否可以将我的 Widget 的 iOS 版本部署到 iOS 13,以便我可以在 iOS 13 iPhone 上运行它?实际上,我尝试过,但出现错误“'main()' 仅适用于 iOS 14.0 或更高版本的应用程序扩展”。我尝试在 @main 上方添加 @available 注释,但它不起作用。见下图。

enter image description here

我想完成这项工作,因为今天的小部件在 Xcode 12 中不再可用。当我们的用户在 iOS 13 中运行时,我们仍然希望显示一些小部件,例如日历和天气应用小部件。

解决方法

WidgetKit

WidgetKit 框架仅在 iOS 14+ 中受支持,因此您不能将小部件的部署版本更改为 iOS 13,因为这低于最低 iOS 版本。要了解有关 WidgetKit 的更多信息,请参阅 Apple 的文档 here

通知中心

这是用于在 iOS 14 之前的 iOS 版本中创建今日视图小部件的折旧 api。如果您想要一个可以在运行 iOS 13 或更早版本的设备上的今日视图菜单中使用的小部件,那么您需要使用通知中心框架。但是,此框架与 WidgetKit 的工作方式不同。您需要为它们创建完全不同的小部件才能与通知中心一起使用。要了解有关通知中心的更多信息,请参阅 Apple 的文档 here

总的来说,我的建议是,如果您正在尝试为您的应用创建小部件,那么创建支持 iOS 13 及更早版本的小部件是不值得的。一方面,这些小部件仅在今日视图中可用,而不在主主屏幕上可用。此外,与 iOS 14 相比,很少有用户仍然运行 iOS 13,因此支持少量的额外用户群根本不值得。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...