iphone - 如何在应用程序初始化之前获取 GPS 位置?

标签 iphone ios objective-c gps

有一个简单的应用程序可以获取gps 位置。我想在应用程序初始化之前获取 GPS 位置。在我看来,GPS 位置是异步更新的,当弹出问题时,我确实在后台加载应用程序屏幕:“允许应用程序使用您当前的位置?”

那么,我怎样才能进行回调(抱歉,来自 Ruby/JS 背景)来等待我获取当前位置。

代码:

- (void)viewWillAppear:(BOOL)animated
{
    // Set the main view to utilize the entire application frame space of the device.
    // Change this to suit your view's UI footprint needs in your application.
    CLController = [[CoreLocationController alloc] init];
    CLController.delegate = self;
    [CLController.locMgr startUpdatingLocation];

    self.view.frame = [[UIScreen mainScreen] applicationFrame];
    [super viewWillAppear:animated];
}

CoreLocationController.m

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    NSLog(@"Update location");
    if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) {
        [self.delegate locationUpdate:newLocation];
        [self.locMgr stopUpdatingLocation];
    # => wait initialisation until this point and than continue

最佳答案

您实际上只需要启动并运行您的应用程序即可。

我会尝试(同时)做两件事来处理延迟:

  • 误导!从打开另一个屏幕开始。让用户对其他事物感兴趣。一次点击的延迟可能就足以解决问题,特别是如果这不是第一次运行。第一次运行时,当您知道需要一点时间时,运行一个会占用时间的小教程。

  • 从最后一个位置开始 - 如果不准确的位置信息可能有害,这可能不适合您,但您可以存储应用程序退出时收到的最后一个位置,并在启动应用程序时将其用作当前位置再次。当然,您希望表明该位置最多只是一个猜测,因此您可能需要用不确定圆圈绘制自己的位置点,表明整个 map 都是不确定区域 - 直到您获得第一个 GPS 定位,然后您就可以开始绘制真实位置更新。

我认为,在等待位置更新时不执行任何操作的人为延迟,会比接受需要很短的时间并尝试在这段时间内做尽可能多的事情带来更糟糕的用户体验。

关于iphone - 如何在应用程序初始化之前获取 GPS 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396291/

相关文章:

iPhone - 全屏和状态栏的典型问题

iPad 书籍框架/平台/模式可用?

c# - Xamarin 表单 - 网页 View

objective-c - 如何使用 Objective C 返回 CGPoints 数组

ios - 如何在现有图像上添加水印

ios - indexPath.row 返回最后一个可见单元格,并且没有调用 didSelectRowAtIndexPath

iphone - UITableView滚动性能悖论: Make subviews or use -drawRect:?

iphone - iPhone 版 Interface Builder 教程

iphone - [NSDictionary valueForKey :] 内无法识别的选择器崩溃

iphone - 更改 iPhone 上的国家/地区以进行本地化测试