目标c:当应用程序在后台/基于时间间隔自动终止时如何执行功能

Posted

技术标签:

【中文标题】目标c:当应用程序在后台/基于时间间隔自动终止时如何执行功能【英文标题】:Objective c: how to execute a function when app is in the background/killed automatically based on time Intervals 【发布时间】:2015-12-04 08:00:05 【问题描述】:

当应用程序在后台甚至被用户杀死时,我需要根据时间间隔自动执行一个函数

要求: 用户注册后(前注册日期 2015 年 1 月 1 日),我需要根据以下时间间隔将功能的状态更改为启用/禁用,并在应用程序处于活动模式或后台或被杀死时通知用户。

注册日期 2015 年 1 月 1 日: 查看照片功能状态更改如下。 当状态启用时,用户可以通过点击表格中的照片行来查看照片。 当状态处于禁用模式时,用户无法查看照片并通过点击表格中的照片行来生成警报。

前 2 周:禁用 第 2 周 - 第 5 周:启用 第 5 周 - 第 12 周:禁用 第 12 周 - 3 个月:启用 3个月-8个月:禁用 8months-12months:启用 1 年 - 1.5 年:禁用 1.5 年 - 2 年启用 2 年后 - 每 3 个月切换一次状态。

我完成了日期计算。

但我只想知道当应用程序在后台时,甚至当被用户杀死时,如何根据时间间隔自动执行一个函数

提前致谢

【问题讨论】:

所以你不知道如何解决这个问题? 问问自己:没有运行的应用程序如何执行功能?当你解决了这个禅宗之谜后,你就可以进行下一步了。 【参考方案1】:

我认为你选择的方式是错误的。只需使用AppDelegate 方法即可知道应用何时启动或应用何时返回前台状态。

UIApplicationDelegate Apple Reference

【讨论】:

【参考方案2】:

您可以在后台调用函数,但应用程序杀死然后函数不起作用。尝试使用此代码进行后台工作。

- (void)applicationDidEnterBackground:(UIApplication *)application 

[NSTimer scheduledTimerWithTimeInterval:300.0f
                                 target:self
                               selector:@selector(updateMethod:)
                               userInfo:nil
                                repeats:YES];



- (void)updateMethod:(NSTimer *)theTimer 
// Your code goes here
NSLog(@"Backgroud Mode");

【讨论】:

以上是关于目标c:当应用程序在后台/基于时间间隔自动终止时如何执行功能的主要内容,如果未能解决你的问题,请参考以下文章

IOS,应用启动时如何处理多个本地通知?

当 iOS 应用程序被暂停/杀死并且用户点击通知时如何处理 Firebase 推送通知?

应用未运行时如何处理远程通知

当应用程序不在后台运行时如何处理推送通知

后台获取 iOS - 已终止的应用程序

即使在应用程序终止后也能获得 Apple 的远程推送通知