如何使用 EventKit (Calendar) 集成并仍然支持 iOS 3.x (MonoTouch)?

Posted

技术标签:

【中文标题】如何使用 EventKit (Calendar) 集成并仍然支持 iOS 3.x (MonoTouch)?【英文标题】:How to use EventKit (Calendar) integration and still support iOS 3.x (MonoTouch)? 【发布时间】:2010-11-12 19:55:38 【问题描述】:

我想使用 EventKit 将日历集成到我的 iPhone 和 iPad 应用程序中。但是,当我包含此代码(例如使用 MonoTouch.EventKit)时,应用程序将无法在我的 OS 3.x 设备(iPod touch 2G)上运行。

有没有办法在 MonoTouch 中构建一个应用程序,并且仍然将最低操作系统版本保持为 3.0,但同时支持 ios 4 和 EventKit?如何在不中断对 3.0 设备支持的情况下为 iOS 4 设备添加 EventKit 功能?

谢谢

【问题讨论】:

【参考方案1】:

正如 bosmacs 所提到的,要做到这一点,您需要让 MonoTouch 知道您需要“弱”链接 EventKit 框架。弱绑定确保框架仅在第一次需要框架中的类时按需加载。

为此,您应该采取以下步骤:

打开您的项目选项并 导航到 iPhone Build 窗格。 添加“-gcc_flags”-weak_framework iAd"' 到每个的额外参数 您希望弱链接的配置 开

除此之外,您还需要保护您对这些类型的使用,以免它们在可能不存在的旧版本 iOS 上运行。有几种方法可以实现这一点,但其中之一是解析 UIDevice.CurrentDevice.SystemVersion。

【讨论】:

【参考方案2】:

您应该能够弱链接 EventKit 框架,然后在运行时检查您需要的类是否存在。另见:EventKit in Universal app (OS3.2)、iPhone checking for existence of AVCaptureSession Class 和 How do you optionally use iPhone OS 3.0 features in a 2.0 compatible app?

通过将项目设置中的部署目标设置为 3.0,但针对 4.x SDK 进行编译,弱链接方面应该为您处理。

【讨论】:

以上是关于如何使用 EventKit (Calendar) 集成并仍然支持 iOS 3.x (MonoTouch)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 EventKit 中使用 CalendarIdentifier 获取提醒?

如何区分通过我的应用程序保存的事件和使用 EventKit 使用日历应用程序保存的事件?

Swift EventKit的初学者指南–请求权限

使用 EventKit 对 iOS 日历进行文本搜索

使用 EventKit 添加事件和日历

EventKit 同步问题