单击“确定”后首次运行 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