在后台运行我的应用程序更长时间并获取信息

时间:2013-10-29 10:07:38

标签: ios iphone objective-c ios7 background-process

我想要什么:当我的应用程序进入后台并且用户打开任何其他应用程序时,我会收到通知,其他应用程序已打开。

我的尝试方式: 在后台运行一个线程说2小时,这个线程会检查其他应用程序是打开的。只有在满足某些条件时才会发生这种情况。

我如何努力实现这一目标:我正在使用

UIBackgroundTaskIdentifier & beginBackgroundTaskWithExpirationHandler

线程无休止地运行,但我不认为它正确的方式因为苹果建议不应该这样做,线程在10分钟后被杀死,但是这个基础对我来说很好,我仍然想用更安全的方式实现这一点。

我还检查了ios 7.0中可用的背景模式和一些新模式,但仍无法找到用于实现此功能的模式[针对特定会话/条件,当应用程序进入后台并保持2小时后我会收到通知打开其他应用而不是主屏幕。

任何想法如何实现这一目标。 只是想知道如何实现后台工作以接收其他应用程序打开的通知。

1 个答案:

答案 0 :(得分:0)

1 - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handler NS_AVAILABLE_IOS(4_0);  因此,大约600秒后,您的处理程序Block将被调用,因为您的应用程序很快就会被杀死, 在处理程序块中,您可以使用'UIBackgroundTaskIdentifier & beginBackgroundTaskWithExpirationHandler'续订另外600秒,依此类推......

但是这可能会耗尽电池而苹果却不喜欢它!

2-“...接收其他应用程序打开的通知。”我不认为苹果(iOS)会让任何应用程序这样做!

但如果“其他应用”是您控制的应用,那么: “将数据从一个应用程序传输到另一个应用程序的一种解决方案是通过URL方案”!

What is Sandbox in ios , Can i Trans data between in one App to Another App in iPhone,if possible how

这将恢复所有iOS后台模式: http://www.raywenderlich.com/29948/backgrounding-for-ios