在后台运行我的应用程序更长的时间并获取信息
Posted
技术标签:
【中文标题】在后台运行我的应用程序更长的时间并获取信息【英文标题】:Run my app in background for longer time and fetch info 【发布时间】:2013-10-29 10:07:37 【问题描述】:我想要什么:当我的应用程序进入后台并且用户打开任何其他应用程序时,应该通知我其他应用程序已打开。
我想怎么做: 在后台运行一个线程说 2 小时,这个线程将检查打开了其他应用程序。这并不总是发生,只有在满足某些条件时才会发生。
我是如何做到这一点的:我正在使用
UIBackgroundTaskIdentifier & beginBackgroundTaskWithExpirationHandler
线程无休止地运行,但我认为它不是正确的方式,因为苹果建议它不应该这样做,线程在 10 分钟后被杀死,但是这个基金对我来说很好,我仍然想使用更安全的方式来实现这一点。
我还检查了后台模式和 ios 7.0 中可用的一些新模式,但仍然找不到用于实现此目的的模式 [对于特定会话/条件,当应用程序进入后台并在那里停留 2 小时时,我会收到通知打开其他应用程序而不是主屏幕]。
知道如何实现这一点。 只是想知道如何实现后台工作以接收其他应用程序打开的通知。
【问题讨论】:
【参考方案1】:1- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handler NS_AVAILABLE_IOS(4_0);
因此,大约 600 秒后,您的处理程序 Block 将被调用,因为您的应用程序将很快被杀死,
在处理程序块中,您可以使用'UIBackgroundTaskIdentifier & beginBackgroundTaskWithExpirationHandler'
等再续订 600 秒……
但这可能会耗尽电池,Apple 不喜欢它!
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
【讨论】:
以上是关于在后台运行我的应用程序更长的时间并获取信息的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Powershell 中开始一个比它的父级寿命更长的后台作业?