我有一个具有30秒进程的iphone应用程序,它可以执行一些网络IO。基本上,当应用程序在后台,我希望这个过程每小时运行一次(实际上每天一次,但如果失败,我希望它在一个小时内重新运行)。如何在后台每小时运行一次〜30秒的进程(iphone应用程序)
有了ios 4的背景特征,这可能吗?如果是这样,怎么样?我会遇到什么限制?
非常感谢!
我有一个具有30秒进程的iphone应用程序,它可以执行一些网络IO。基本上,当应用程序在后台,我希望这个过程每小时运行一次(实际上每天一次,但如果失败,我希望它在一个小时内重新运行)。如何在后台每小时运行一次〜30秒的进程(iphone应用程序)
有了ios 4的背景特征,这可能吗?如果是这样,怎么样?我会遇到什么限制?
非常感谢!
看看苹果公司的有关在后台运行的代码文档。
有接近转到后台任务的几种不同的方式。唯一可以完全后台处理的应用程序是“音频”,“voip”和“位置”应用程序,这需要在Info.plist中声明。
如果你的应用程序不是这种类型的,你可能会发现很难做到你想要的东西。有一些方法可以让你的应用程序在有限的时间内保持活动状态(也在该链接中),但最终你的应用程序将被关闭。
本地通知只会提示用户打开应用程序 - 您是否真的想每隔30秒在手机上弹出警报?
我相信,使用本地通知,将帮助.... 检查以下....
应用程序可以创建和安排本地通知,然后操作系统按计划日期和时间交付它。如果应用程序在前台未处于活动状态时传递该应用程序,则会显示警报,标记应用程序图标或播放声音 - 无论在UILocalNotification对象中指定。如果应用程序在前台运行,则没有警报,徽章或声音;相反,如果委托实现它,应用程序将调用didReceiveLocalNotification:方法。
委托可以检查通知的属性,如果通知在其userInfo字典中包含自定义数据,它可以访问该数据并相应地处理它。另一方面,如果本地通知仅标记应用程序图标,并且用户作为响应启动应用程序,则应用程序:didFinishLaunchingWithOptions:方法被调用,但选项字典中不包含UILocalNotification对象。
本地通知允许您从弹跳板弹出警报消息,更新应用图标的徽章数字,或播放声音。但它从来没有给你任何做网络I/O的机会。 –
嗨,感谢您的信息。我根据以下内容写了上面的内容1.应用程序:didReceiveLocalNotification:参考讨论。他们说这可能是UILocalNotification对象包含的任何东西。 2.在UILocalNotification的Overview部分中:“委托可以检查通知的属性,如果通知在其userInfo字典中包含自定义数据,它可以访问该数据并相应地处理它。”....所以我认为userinfo字典可以有一个URL来调用,它可以调用它并处理数据,如果过程可以在特定的时间内完成允许后台进程 – Mohammad
我正在做一些类似的研究,看看this SO answer以防你以前找不到它。诸如DataMan或Data Usage之类的应用程序必须在后台执行某种类型的定期代码执行,所以我不能100%确信你所要求的是不可能的。
找到关于后台处理的信息。看起来有趣,但我很漂亮肯定这种hacky解决方案会让我被踢出应用商店pronto! – Chris
我做了大量的研究,发现“沉默推送通知“为我做了诡计。检出http:// stackoverflow。com/questions/35987366/ios-enterprise-app-how-can-i-make-sure-my-app-runs-in-the-background- –