我知道这个问题可能有点普遍而且被问到但是我找不到任何准确的信息......所以:
当应用程序在后台运行时,是否可以运行某种线程,以便我可以与我的webservice进行基本同步?
应用程序在后台:我的意思是用户点击了主页按钮,或切换到另一个应用程序 基本同步:使用AFNetworking上传和下载照片。我知道它有方法在app处于后台时继续HTTPRequest,但这不是我的观点。
我的目标是制作某种同步管理器,阅读用户在应用上时创建的更新照片列表,然后执行这些更改。
我知道经理可能会被操作系统杀死,但由于我的服务器使用原子传输,因此不是问题。我只需要一种重新启动它的方法......推?
我认为像谷歌纵横或邮件这样的应用程序和那些类型的应用程序使用我正在寻找的东西,但我找不到任何相关的细节。使用iOS5不是问题,但等待iOS6不是解决方案。
感谢您的回复!
PS:我差点忘了。该应用程序是为企业程序设计的,所以规则可能不同吗?我不认为对内部部署有任何检查,因此可能会带来新的可能性......答案 0 :(得分:0)
Apple的Mail客户端有一个后台守护程序,可以让它保持运行,但你不能拥有自己的应用程序。应用程序进入后台状态后,必须暂停其操作。在后台完成任何传输或写入磁盘时,您可以请求更多时间(请参阅Apple's Multitasking Guide上背景部分中的执行有限长度任务)
谷歌纵横有基于位置生成的事件。这是Apple针对某些类型的应用程序引入的一种特殊类型的后台处理(请参阅Apple's Multitasking Guide上的实现长时间运行后台任务部分),但这不能用于HTTP同步。它只能用于音频,位置,voip,newstand内容,蓝牙和外部硬件附件。
推送似乎不是解决方案,因为它只会生成警报。在用户触发通知打开之前,它不会触发任何操作。
答案 1 :(得分:0)
您需要阅读Tech Note 2277 Networking and Multitasking。
基本上你有几个选择:
如果您可以说服Apple您的应用是VoIP应用,那么您可以注册一个VoIP套接字,只要该套接字上有活动,操作系统就会恢复您的后台应用。
您的主要选择是为您的应用程序放在后台时必须执行的任何未完成活动注册后台任务。你通常需要10分钟才能完成这项工作。
Mail是一个特殊的应用程序,具有您无法获得的权限。
像Latitude这样的应用通常会自行注册位置更新,特别是在有重大地理位置更改时会被唤醒。记录GPS轨迹的应用程序也会做类似的事情。
答案 2 :(得分:0)
发现它!
使用Suhail Patel的link on Apple's Multitasking Guide我在Info.plist中将voip
标记添加到UIBackgroundModes
,并使用UIApplication
{{1}}方法重新启动它应用程序进入睡眠状态后需要。
我希望这会对你们有所帮助!
当然这个应用程序不允许在App Store上,但对于内部开发,我认为这是最好的方法。
感谢大家向我展示正确的方向!