在后台接收并响应EKEventStoreChangedNotification?

我想知道如果在iOS7中,使用新的API,终于有可能在后台响应通知,在我的情况下,我有以下观察者:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(storeChanged:) name:EKEventStoreChangedNotification object:eventStore]; 

我收到通知完美,但我需要运行应用程序,以便select器被调用。 我已经浏览了响应,他们说这是不可能的,但不知道,如果他们专指iOS7。

有什么想法吗?

谢谢!

EKEventStoreChangedNotification只会在您的应用程序进入前台时触发。 但是,如果您想在后台调用您的storeChanged:方法,从而让UI再次到达前台,则需要将“后台抓取”function添加到您的应用中。

 <key>UIBackgroundModes</key> <array> <string>fetch</string> </array> 

在您的应用程序委托didFinishLaunchingWithOptions方法添加行

 [application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum]; 

这确保您的应用程序实际上调用您的后台获取,因为默认的时间间隔从不。 这个最小密钥是确保iOS处理何时调用您的后台获取方法的关键。 如果你不想让它尽可能频繁地触发,你可以设置你自己的最小间隔。

最后在您的应用程序委托中实现后台获取方法:

 - (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [self storeChanged:nil]; completionHandler(UIBackgroundFetchResultNewData); } 

您可以在debugging>模拟后台提取时进行testing。

首先,当应用程序在后台时,只有在你的任务不需要太长时间时,只能使用后台任务API运行方法来调用一个方法 – 通常约10分钟是最大允许时间)。 这适用于iOS甚至iOS7的所有版本。

阅读此问题以获取更多说明。

Apple的“应用程序状态和多任务处理指南”可以为您提供有关后台处理的更多说明。