每15-30分钟在iOS上安排一项任务

时间:2015-03-20 10:00:37

标签: android ios xcode ios7

我有一个我为ios,android和windows phone 8开发的应用程序。客户端现在要求应用程序检查是否每15-30分钟有任何数据要上传到服务器,如果有,请上传它。这是必需的,因为该应用程序用于不存在互联网连接的区域。用户将数据添加到应用程序中,并且一旦互联网连接可用,就需要将数据上载到服务器

我已经在Android上使用AlarmManager来安排应用程序来检查应用程序是否有任何数据并上传它,而在Windows Phone上我使用了PeriodicTask。

iOS中有这样的功能吗?当我尝试谷歌搜索时,我会看到许多不同的东西,如NSURLSession,后台传输服务和其他说它不可能。

那么,有可能我需要研究哪些课程才能使其正常工作?如果我必须瞄准特定的iOS版本,那就没问题了。

5 个答案:

答案 0 :(得分:2)

您可以使用NSTimer:

[NSTimer scheduledTimerWithTimeInterval: 1800.0 target:self selector:@selector(yourselector) userInfo:nil repeats: YES];

Apple documentation

答案 1 :(得分:0)

不,这是不可能的,也许是可能的。由于只有特定的应用程序可以在后台运行,如:AudioStreamer,VOIP,附件伴侣或位置跟踪。

这些应用无法真正安排任务。另外,电池每15-30分钟检查一次服务器真的很糟糕。

您可以使用NSURLSessions创建将在后台运行的上传任务。

您必须使用实施的所有委托方法正确设置会话:Background Transfer Considerations

答案 2 :(得分:0)

主要有三件事需要考虑: 1.)应用程序是否保持活动状态(在设备屏幕上可见)15-20分钟。我想不会是这样的。 2.)当应用程序进入后台状态(在应用程序屏幕上不可见,但在后台)时,您可以执行/安排任务最多3分钟。

3。)如果用户杀死应用程序(应用程序未处于后台模式),则您无法执行任何操作。

答案 3 :(得分:0)

NSTimer * yourTimer = [NSTimer scheduledTimerWithTimeInterval:1800.0 target:self selector:@selector(YourMethod)userInfo:nil repeats:YES];

请试试这个......这会有用......

答案 4 :(得分:0)

默认情况下,上传任务支持后台操作(请参阅:https://developer.apple.com/reference/foundation/urlsessionuploadtask)。

但只要应用程序在内存中,这就局限于此。这是为了确保没有应用程序在没有绝对需要的情况下消耗电池。

您可以执行的操作是在后台模式下上传,并在每次启动应用时检查待处理的上传数据。