Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在应用程序初始化之前获取GPS位置?_Iphone_Ios_Objective C_Gps - Fatal编程技术网

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

Iphone 如何在应用程序初始化之前获取GPS位置?,iphone,ios,objective-c,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 spac

有一个简单的应用程序,可以获取
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]; }
你真的只需要让你的应用程序启动并运行

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

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

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


我认为,如果你在等待位置更新时什么也不做,那么这种人为的延迟将是一种更糟糕的用户体验,而不是接受这将需要很短的时间,并在这段时间内尽可能多地做这些事情。

在应用程序首次加载之前以及在用户允许你的应用程序使用他们的位置之前,你需要这样做吗?你到底为什么需要这个(只是好奇)?我需要在屏幕加载之前完成,因为我使用的是sencha touch,而应用程序严重依赖于地图,所以当应用程序在后台加载时,问题首先出现。如果用户等待超过2秒,应用程序将崩溃:(这有意义吗?嗯,这听起来像是一个糟糕的设计。首先,你为什么要强迫你的应用程序崩溃?还要记住,如果用户没有明确允许你的应用程序使用他们的位置,iOS不会提供你的应用程序位置信息。你还需要处理用户拒绝位置访问的可能性。但是,iOS确实允许您获取用户的位置,即使您的应用程序不在前台(如果用户允许)。 - (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