3

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

UIApplication.sharedApplication().registerUserNotificationSettings(settings)

当运行与小部件相同的代码时,应该简单地跳过它。可以检查这个吗?

4

3 回答 3

1

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

于 2014-10-24T22:48:14.083 回答
1

我的解决方案:

#ifdef UIApplication
... //App
#else
... //Today Extension
#endif
于 2016-08-19T10:49:51.710 回答
0

我检查了我的主机应用程序的包标识符,以确定我是在其中运行还是在我的 Today Extension 中运行。

例如:

    if Bundle.main.bundleIdentifier == "your.host.app.bundleIdentifier" {
        UIApplication.sharedApplication().registerUserNotificationSettings(setting)
    } else {
        // Today Extension
    }
于 2018-05-04T20:28:46.983 回答