单击“确定”后首次运行 GPS 未启动

Posted

技术标签:

【中文标题】单击“确定”后首次运行 GPS 未启动【英文标题】:GPS is not launching at first run after clicking "OK" 【发布时间】:2012-06-03 17:36:04 【问题描述】:

单击“想使用您当前的位置”消息中的“确定”后,GPS 在首次运行时未启动。我有一个表格视图来显示当前位置周围的地名。表中没有地图视图,只是使用了 CoreLocation 框架。当我第一次构建并运行我的应用程序并进入表格视图时,著名的消息““myApp”想使用您当前的位置“跳出来。单击“确定”按钮后,GPS 未运行。但是当我再次进入表格视图时,GPS 运行良好。

问题是:点击“确定”按钮后,如何让 GPS 在首次启动时运行?提前致谢!

编辑 1

- (void)viewDidAppear:(BOOL)animated

    [super viewDidAppear:animated];

    CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease];
    [locationManager setDelegate:self];    

    [locationManager startUpdatingLocation];    

有没有检测到“想使用您当前的位置”消息的“确定”按钮被点击?

【问题讨论】:

用附近的位置重新填充表格后,是否重新绘制表格?您使用什么表方法来更新行? @JasonKulatunga 实际上,在单击“确定”按钮后,状态栏上的 GPS 指示器在第一次运行时没有启动。 你什么时候打电话给startUpdatingLocation @HolgerFrohloff in 'viewDidAppear' 【参考方案1】:

给你看一些代码:

- (void)viewDidLoad

    [super viewDidLoad];

    if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) 

         [NSTimer scheduledTimerWithTimeInterval:2 target:self     selector:@selector(timerFired:) userInfo:nil repeats:YES];

    


- (void)timerFired:(NSTimer*)theTimer

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) 
        [self startUpdatingCurrentLocation];
        [theTimer invalidate];
     
    [self startUpdatingCurrentLocation];


计时器会一直等待,直到经过一定的时间间隔,然后触发,将指定的消息发送到目标对象。 NSTimer Reference.

如果用户按下“确定”按钮,计时器可以以透明的方式第二次执行启动 GPS。如果没有,计时器将继续检查 GPS 状态,直到应用获得用户的选择。

【讨论】:

以上是关于单击“确定”后首次运行 GPS 未启动的主要内容,如果未能解决你的问题,请参考以下文章

软件更新后首次启动

应用程序:openURL:选项:从 Firebase 动态链接安装应用程序后首次打开应用程序时未调用

Branch.io 在 Android 上安装后首次运行时检索 BranchUniversalObject

检测启动后首次打开应用程序的时间

VB.Net SQL DataAdapter 首次运行时未更新

Facebook仅适用于安装后首次启动应用程序,而不是重新启动应用程序