如何使用 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 获取提醒?