gpt4 book ai didi

ios - 尽管使用 Fast App Switcher 杀死了基于位置的应用程序,但状态栏中显示灰色 GPS 箭头

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:13:17 28 4
gpt4 key购买 nike

我正在为 iOS 5 编写基于位置的应用程序。该应用程序使用 CLLocationManager 接收位置更新。

当应用程序启动时,我正在创建 LocationManager,调用 [self.locationManager startUpdatingLocation]; 并且灰色位置箭头出现在状态栏中。

当应用程序进入后台时我正在调用

[self.locationManager stopUpdatingLocation]; 
[self.locationManager startMonitoringSignificantLocationChanges];

因为我只想在应用程序处于后台时接收重要的位置变化。灰色位置箭头仍然显示。

我调用的应用程序中也有一个退出按钮

[self.locationManager stopUpdatingLocation];
exit(0);

当用户按下退出按钮时,应用程序结束并且灰色位置按钮从状态栏中消失。到目前为止一切都很好。

当用户使用 Fast App Switcher 完成应用程序时出现问题,因为此后灰色位置箭头仍显示在状态栏中,尽管应用程序未运行。当用户从他的 iPhone 中删除应用程序时,灰色位置箭头首先消失。

所以问题是:

  • 当用户使用 Fast App Switcher 完成应用程序并且状态栏中仍显示灰色箭头时,这是否意味着位置更新仍在执行,或者这是否意味着应用程序使用了位置服务最后 24 小时?我猜答案是第一个,位置更新仍然执行!

  • 应用程序需要在后台执行,所以我无法在应用程序进入后台时停止 LocationManager。 applicationWillTerminate: 在用户使用 Fast App Switcher 终止应用程序时永远不会被调用。当应用程序使用 Fast App Switcher 终止或被操作系统终止时,有什么方法可以接收事件????

  • 我见过一些其他应用程序,当使用 Fast App Switcher 终止应用程序时,状态栏中的灰色箭头会消失。这些应用程序如何实现这一点???

最佳答案

  1. 如果您的应用不在前台,则可以使用重要的位置更新。
  2. 我只是给你一个想法,我做过类似的事情,但我不知道你的情况会怎样。
    只需为后台任务注册您的应用程序并为测试目的做一些事情,在这种情况下,如果您通过快速应用程序切换终止您的应用程序,那么委托(delegate)方法 applicationWillTerminate: 总是被调用。


___________ 已编辑____________ __
只需将此变量添加到您的 AppDelegate.h

UIBackgroundTaskIdentifier bgTask;

然后像这样创建您的委托(delegate)方法,然后终止您的应用

    - (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication *app = [UIApplication sharedApplication];
if ([app respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) {
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
// Synchronize the cleanup call on the main thread in case
// the task actually finishes at around the same time.
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
}];
}
}

- (void)applicationWillTerminate:(UIApplication *)application
{
NSLog(@"is terminated");
}


_____________ ________________

关于ios - 尽管使用 Fast App Switcher 杀死了基于位置的应用程序,但状态栏中显示灰色 GPS 箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077105/

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