【问题标题】:How to get GPS location before app initialisation?如何在应用程序初始化之前获取 GPS 位置?
【发布时间】:2013-06-28 02:11:32
【问题描述】:

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

好吧,我怎样才能进行回调(对不起,来自 Ruby / JS 后台)等到我得到当前位置。

代码:

- (void)viewWillAppear:(BOOL)动画 { // 设置主视图以利用设备的整个应用程序框架空间。 // 更改此项以适应应用程序中视图的 UI 占用空间需求。 CLController = [[CoreLocationController alloc] init]; CLController.delegate = self; [CLController.locMgr startUpdatingLocation]; self.view.frame = [[UIScreen mainScreen] applicationFrame]; [超级viewWillAppear:动画]; }

CoreLocationController.m

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"更新位置"); if([self.delegate 符合ToProtocol:@protocol(CoreLocationControllerDelegate)]) { [self.delegate locationUpdate:newLocation]; [self.locMgr stopUpdatingLocation]; # => 等待初始化直到这一点,然后继续

【问题讨论】:

  • 您是否需要在应用首次加载之前以及用户允许您的应用使用他们的位置之前执行此操作?为什么你需要这个(只是好奇)?
  • 我需要在屏幕加载之前完成它,因为我使用的是sencha touch,并且应用程序严重依赖地图,所以问题首先出现在应用程序在后台加载时。如果用户等待超过 2 秒,应用就会崩溃 :( 这有意义吗?
  • 嗯,这听起来像是一个糟糕的设计。首先,你为什么要强迫你的应用程序崩溃?另请注意,如果用户未明确允许您的应用使用其位置,iOS 将向您的应用提供位置信息。您还需要处理用户拒绝位置访问的可能性。但是,即使您的应用不在前台(如果用户允许),iOS 也允许您获取用户的位置。

标签: iphone ios objective-c gps


【解决方案1】:

您真的只需要启动并运行您的应用程序。

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

  • 方向错误!从打开另一个屏幕开始。让用户对其他事物感兴趣。一次点击的延迟可能是您获得修复所需的全部,特别是如果这不是第一次运行。在第一次运行时,当您知道这需要一点时间时,运行一个会占用时间的小教程。

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

我认为人为的延迟,即您在等待位置更新时什么都不做,这将比接受这将花费很短的时间并尝试在那段时间内尽可能多地做更糟糕的用户体验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多