gpt4 book ai didi

ios - 用户界面应用程序。固定时间的后台执行

转载 作者:行者123 更新时间:2023-11-29 12:37:38 26 4
gpt4 key购买 nike

因此,我希望我的应用程序在后台执行仅固定时间,以防用户不手动停止该应用程序,因此该应用程序理论上可以运行永远的背景(这可能吗?)。

我正在使用下面的代码(只是一个测试应用程序)来测试后台任务在结束前可以运行多长时间。我在某处读到 10 分钟是我们可以在后台执行的最长时间,而且没有办法超过这个时间(?)。但是,我的代码只会在后台执行 3 分钟。

总结一下我的问题:

  1. 是否可以让应用在后台执行 x > 10 分钟?

2.对于类似的东西,我还有其他选择吗? (我需要在其中实现这个的实际应用程序在后台接收位置更新,用户可以将手机放在后台长达 30 分钟,突然没有收到更新会很糟糕)

 -  (void)viewDidLoad {
[super viewDidLoad];

counterTask = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:^{
// do something }];
count=0;
theTimer=[NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(countUp)
userInfo:nil
repeats:YES];
}




- (void)countUp {

if (count==10000) {
[theTimer invalidate];

[[UIApplication sharedApplication] endBackgroundTask:counterTask];
} else {
NSLog(@"asd");
count++;
NSString *currentCount;
currentCount=[[NSString alloc] initWithFormat:@"%d",count];
_theCount.text=currentCount;

long seconds = lroundf([[UIApplication sharedApplication] backgroundTimeRemaining]);

NSLog([NSString stringWithFormat:@"%ld",seconds]);

}
}

最佳答案

我在某处读到 10 分钟是我们可以在后台执行的最长时间,没有办法超过这个时间(?)。但是,我的代码只会在后台执行 3 分钟。

是的,在 iOS 7 之前,iOS 允许应用程序在后台执行最多 10 分钟,但自 iOS 7 以来,他们已将此时间减少到 180 秒。

但如果您想在后台获取位置更新,您可以在 info.Plist 文件中添加 Required Background modes 属性。使用此功能,您将能够在后台运行您的应用程序以获取位置更新 Apple 将在审查您的应用程序以提交应用程序商店时审查您的请求,因此请务必仅在您将其用于实际目的时才使用此模式。

enter image description here

以下是 apple 允许后台执行的各种模式,您可以在 Apples Doc on background execution 查看

Back Ground Modes

编辑

如果您希望在用户返回后台后的特定时间后停止获取位置更新,您可以这样做

- (void)applicationDidEnterBackground:(UIApplication *)application {
[self performSelector:@selector(stopGettingLocationUPdates) withObject:nil afterDelay:1800];
}

-(void)stopGettingLocationUPdates{
[self.locationManager stopUpdatingLocation]
}

这将在 30 分钟后停止更新。

关于ios - 用户界面应用程序。固定时间的后台执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25855865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com