iOS运行代码一天一次

Mar*_*ino 23 background timer ios

这个应用程序背后的想法非常简单:下载文件.然而,这个应用程序将适用于并非总是在互联网访问范围内的人,因此我需要知道在早上9点将文件下载到硬盘驱动器.应用程序中还会有一个按钮手动完成,但我已经有了这个工作.

据我所知,如果可能的话,这将是困难的.我知道iOS不喜欢多任务处理,但我也知道它确实允许后台计时器功能.我愿意接受任何人可能要做的任何建议,即使这意味着要编写一个单独的应用程序.谢谢.

编辑:我看到有可能使用通知,甚至可能是日历.该类别的想法也受到欢迎.

编辑2:我还阅读了有关启动应用程序的外部服务器的内容,但没有给出任何说明.

Gru*_*kes 27

以下是关于应用程序安排某些活动定期发生的背景执行和通知以及计时器等情况.

  1. 应用无法在后台执行,除非:

    1. 它要求OS提供额外的时间.这是使用完成的beginBackgroundTaskWithExpirationHandler.Apple没有明确(故意)指定这个额外时间有多长,但实际上大约需要10分钟.

    2. 应用程序具有后台模式,模式为:voip,audio,location,newstand.即使它具有这些类型中的一种,如果没有一些限制,应用程序也无法执行.本讨论的其余部分假定应用程序没有后台模式.

  2. 当一个应用程序被暂停时,它无法做任何事情直接引发自己.它以前不能安排NSTimer,它不能使用像performSelector:afterDelay这样的东西.等等

    应用程序再次变为活动状态的唯一方式是,如果USER执行某些操作使其处于活动状态.用户可以通过以下方式执行此操作:

    1. 直接从其图标启动应用程序

    2. 启动应用程序以响应应用程序在活动时先前安排的本地通知.

    3. 启动应用程序以响应服务器发送的远程通知.

    4. 其他几个:如果应用程序注册处理通过URL启动的URL启动; 或者如果其注册能够处理某种类型的内容.

如果当本地/远程通知触发时应用程序位于前台,则应用程序会直接接收该应用程序.

如果当本地/远程通知触发时应用程序当前不在前台,则应用程序不会收到它.通知触发时没有执行代码!

只有在用户选择通知时,应用才会变为活动状态并且可以执行.

请注意,用户可以为整个设备禁用通知,也可以仅针对特定应用程序禁用通知,在这种情况下,用户将永远不会看到通知.如果在通知发生时关闭设备,则会丢失.

  • 不完全是,请注意c)列在:"应用程序再次变为活动状态的唯一方式是用户是否做了某些事情以使其处于活动状态.用户可以:".即,应用程序不是由通知直接启动,而是由用户查看通知并单击它.http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html (4认同)