如何检查代码是否在Today Extension或App中运行

时间:2014-10-24 21:17:43

标签: swift ios8 ios8-today-widget

由于 UIApplication.sharedApplication()在iOS8今天的小部件/扩展中不可用,我如何动态检查代码当前是作为小部件还是应用程序运行?在运行应用时,我想拨打电话。

UIApplication.sharedApplication().registerUserNotificationSettings(settings)

当运行与widget相同的代码时,应该简单地跳过它。有可能检查一下吗?

3 个答案:

答案 0 :(得分:1)

为您的分机创建单独的前缀文件,在前缀文件中定义一个未在应用程序前缀文件中定义的宏。然后检查是否定义了此宏将告诉您是否在扩展名中。或者,您可以在应用的前缀文件中定义宏,而不是在扩展程序中定义宏。并检查另一个方向。

答案 1 :(得分:0)

我的解决方案:

#ifdef UIApplication
... //App
#else
... //Today Extension
#endif

答案 2 :(得分:0)

我检查了我的主机应用程序的软件包标识符,以确定我是在其中运行还是在我的今日扩展程序中运行。

例如:

    if Bundle.main.bundleIdentifier == "your.host.app.bundleIdentifier" {
        UIApplication.sharedApplication().registerUserNotificationSettings(setting)
    } else {
        // Today Extension
    }