即使在后台ios中也会连续调用方法
是否有一种方法可以在应用程序在后台或前台运行时连续调用方法。此方法用于检查时间并根据时间变化触发通知 这里是方法即使在后台ios中也会连续调用方法,ios,objective-c,uilocalnotification,uibackgroundtask,Ios,Objective C,Uilocalnotification,Uibackgroundtask,是否有一种方法可以在应用程序在后台或前台运行时连续调用方法。此方法用于检查时间并根据时间变化触发通知 这里是方法 -(void)checkDate { NSDate *today = [NSDate date]; NSString *endTime =@"24:00"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"HH:mm
-(void)checkDate
{
NSDate *today = [NSDate date];
NSString *endTime =@"24:00";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm"];
NSString *currentTime = [dateFormatter stringFromDate:today];
NSLog(@"############ Current time is %@",currentTime);
if ([currentTime isEqualToString: endTime]) {
NSLog(@"notifiction Fired");
[[NSNotificationCenter defaultCenter]postNotificationName:@"todayEnds" object:self];
}
}
我的要求是,无论应用程序的状态如何,都要发布一个来自某个方法的NSNotification,正如注释中指出的那样,
NSTimer
仅在应用程序当前处于前台时才起作用。在iOS上,后台应用程序的代码执行相当棘手
有几种可能实现这一点,我怀疑这是否适合您的目的,例如:
- 核心位置更新:如果您正在应用程序中使用
,则当设备的GPS位置发生变化时,您的应用程序可以接收更新,并有机会根据新的GPS数据在后台执行某些操作核心位置
- IP语音:该应用程序提供IP语音服务。具有此密钥的应用程序将在系统启动后自动启动,以便该应用程序可以重新建立VoIP服务。使用此键的应用程序也可以播放背景音频。(摘自苹果文档)
- 后台回迁:使用后台回迁,您可以定期执行网络请求,但是您仍然无法在您可以精确指定的时间点执行操作,您可以告诉iOS您希望定期执行网络请求,iOS将为您安排请求李>
UILocalNotification
。我并不完全清楚您到底想要实现什么,但是UILocalNotification
可能是您的选择,因为听起来您希望根据不同的时间通知用户UILocalNotification
的工作方式是,当应用程序处于前台(或后台,如果您使用这些后台执行模式)时,您可以安排通知,该通知将在特定时间点通知用户
希望有帮助
我的要求很简单。不管应用程序的状态如何,都要发布一个来自方法的通知 这在iOS中是不可能的。正如nburk所描述的,应用程序不能在后台运行的一般规则几乎没有例外。你必须使用其中一个例外,或者找到一种不同的方法来实现你想要的 顺便说一句:至少可以说,检测时间点的代码看起来很可疑。也许你应该描述一下你的目标是什么,这样我们可以帮助你找到一个可行的解决方案
它描述了如何检测日变化(在午夜发出通知)。它包括一个工作的Xcode项目。设置一个
NSTimer
在目标时间触发;不要这样轮询挂钟。NSTimer不会在background@dropy中工作。请参阅app中editwrite代码中的my方法将输入后台…此方法必须被称为continuously,因为它用于编写设备日志,您想在后台写入设备日志,而不是“睡”和“醒了”?你想做的事情会耗尽用户的电池,并让应用商店拒绝你的应用。我不想通知用户任何事情,我只想在一天结束时发布通知,该通知将有其选择器方法来执行某些操作。所以我不需要UILocalNotification。我的要求很简单。不管应用程序的状态如何,从一个方法发布一个NSNotification。正如我所说,你应该看看后台执行的文档,。。。但是,如果您的要求是在特定时间点执行后台操作,我可以告诉您,这是行不通的。考虑到苹果提供的有限后台执行可能性,您必须找到一种实现目标的方法。正如其他人所指出的,NSTimer
是在给定时间执行代码的方法。您担心它不会在后台运行是无效的,因为这对于其他所有代码都是正确的,包括您的轮询。