Tag: 核心位置

获取用户的经度/纬度当viewDidLoad

我的目的是在加载视图时获取用户的经度/纬度,并将这些值存储在两个variables中供以后计算。 我不需要跟踪用户位置并更新它,我只需要获取他/她的坐标一次 。 我的代码如下所示: – (void)viewDidLoad { [super viewDidLoad]; // locationManager update as location locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; locationManager.distanceFilter = kCLDistanceFilterNone; [locationManager startUpdatingLocation]; CLLocation *location = [locationManager location]; // Configure the new event with information from the location CLLocationCoordinate2D coordinate = [location coordinate]; float longitude=coordinate.longitude; float latitude=coordinate.latitude; NSLog(@"dLongitude […]

在Swift中每30分钟发送一次位置更新

我有位置服务的背景模式,并且每30分钟发送一次位置(经度和纬度)到服务器。 现在我在控制台上打印相同的内容。 它似乎工作了一段时间,但我想知道如何在这种情况下与NSTimer工作。 我应该从哪里调用它? import UIKit import CoreLocation @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate { var window: UIWindow? var locationManager = CLLocationManager() func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. return true } func applicationWillResignActive(application: UIApplication) { // Sent when the application is about to […]

CLLocationManager geo-fencing / startMonitoringForRegion:vs. startMonitoringForSignificantLocationChanges:与10分钟的startUpdating调用

我试图设置一个应用程序,可以在后台检查人员的位置,看他们是否在一个给定的位置,并发送ping一个服务器,如果他们是。 我们不想浪费用户的精力,所以我们试图找出最好的解决scheme。 我已经做了大量的阅读,我还没有find关于这些方法的很多信息。 我现在要理解他们的优点和缺点 startMonitoringForSignificantChanges 说明:基于wi-fi和手机信号塔的变化,系统唤醒应用程序。 文件 : 一旦设备从先前的通知移动500米或更远,应用程序就可以预期发出通知。 它不应该比每五分钟一次更频繁地发出通知。 如果设备能够从networking中检索数据,则位置pipe理者更可能及时地发送通知。 优点: 电池效率最高 缺点: 取决于Wi-Fi /蜂窝塔的变化 只能假定这将被称为每200米至2公里(如果不是在某些地区更多) 更多的准确性 因此,不一致和不精确 10分钟的开始更新或“n分钟更新”: 说明:这基本上要求应用程序更多的时间,当额外的时间即将到期,它调用[self.locationManager startUpdating],抓住位置,并延伸了10多分钟的后台线程。 优点: 一贯 可以像你想要的一样准确,一如你所愿 缺点: 必须每隔十分钟或更短时间进行一次通话,以保持应用程序在后台运行(即n不能超过10次) 问题:这对电池有什么影响? 唤醒GPS并closures它会伤害电池吗? 我无法想象在后台运行一个简单的位置检查会消耗很多的电池…但是,我不知道什么是开动GPS和获得一个有用的信号。 startMonitoringForRegion(地理围栏): 简而言之,当你进入一个预定义的区域时,你的应用程序会被唤醒。 这是他们的古怪,这是更新的,它有更less的文件。 我无法很好地描述“系统监控”界限。 对于我所知道的,这是一个非常聪明的algorithm,或者他们经常ping GPS,这样做比其他方法效率低。 优点: 简单的实现 由系统pipe理,所以你不必发明自己的临时地理围栏只有触发边界过境…没有不必要的数据,只是抛出换取电池命中 因此,对于这类事情应该是最好的,准确的,由系统来pipe理 缺点: 人们质疑其有效性 巨大的矛盾是否对电池寿命有好处,或者是否会耗尽电池寿命。 系统如何监控这个! 基本上,不确定的行为。 我想我的问题归结为startMonitoringForRegion如何:与电池寿命,一致性和精确度的背景testing用户位置的这些其他方法相比。 有没有人彻底testing过这个? 或者在他们的应用程序中使用它,并至less得到一些反馈? 对我而言,可能的select是在地理围栏和10分钟的更新方法之间进行权衡。 (另外,苹果已经公开表示,iOS7将会有一些后台任务…这是否会改变这两种方法之间的权衡微积分?)有谁知道这两个比较? 非常感谢! 期待看到我们是否能够深入到如何比较这些方法。

核心位置的准确性

我目前正在使用位置跟踪应用程序,而且我的CLLocationManager的位置更新不准确。 这导致我的应用程序跟踪距离,这实际上只是由不准确的GPS读数造成的。 我甚至可以将我的iPhone放在桌子上,开启我的应用程序,几分钟后,我的应用程序就会因为这个缺陷跟踪数百米的距离。 这是我的初始化代码: – (void)initializeTracking { self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; self.locationManager.distanceFilter = 5; [self.locationManager startUpdatingLocation]; } 提前致谢! 🙂

iOS中的背景GPS。 这可能吗?

我想知道是否有可能得到iPhone的位置与未运行的应用程序,或至less在后台运行。 我想要做的是当iPhone到达某个坐标时,iPhone会发送一个推送通知。 这可能吗? 如果是这样,有人可以把我放在正确的方向吗? 谢谢,本

在后台Swift中发送用户的位置

我正在构build一个应用程序,用户点击一个button,并在60分钟(或任何时间),我们跟踪他们的位置上传到服务器。 目前我们正在使用“更新位置”function将用户位置实时发送到Firebase。 func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { } 这个系统可以工作,但是它会把服务器的位置每隔一秒发送到服务器。 这是太多的数据,我们只需要每10-30秒发送一次用户位置到服务器。 我们可以做什么每10-30秒发送一次用户位置?

重大的位置变化不会在设备上触发

我正在使用重要的位置更改监控。 当我在模拟器中运行代码并检查Freeway选项时,我会定期更新位置。 我抓住这些更新,并将其保存在NSUserDefaults,并比每10秒更新tableview,所以我可以看到,如果我有任何更新。 如果我在真实的设备上运行应用程序,我得到零更新。 我把电话放在口袋里,走了80多公里,在两个城市。 零更新。 不知道我是否搞砸了。 我附上了代码。 代码是复制粘贴,随时testing。 只要确保在故事板中使用TableViewController并将单元ID设置为ID即可。 我错过了什么? 我正在testingiPhone 5。 info.plist中: 编辑:在苹果文档中find这个。 我的locationManager应该创build不同? 当由于位置更新而重新启动应用程序时,将启动选项字典传递给您的应用程序:willFinishLaunchingWithOptions:或application:didFinishLaunchingWithOptions:方法包含UIApplicationLaunchOptionsLocationKey项。 该键的存在表示新的位置数据正在等待传送到您的应用程序。 要获取这些数据,您必须创build一个新的CLLocationManager对象,并重新启动您的应用程序终止之前运行的位置服务。 当您重新启动这些服务时,位置pipe理器会将所有待处理的位置更新传递给其代理。 EDIT2: 基于此,位置应至less每15分钟更新一次。 我的代码中的错误确认。 如果GPS级精度对您的应用程序不是至关重要的,并且您不需要连续跟踪,则可以使用重大更改位置服务。 正确使用重大更改位置服务至关重要,因为它至less每隔15分钟就会唤醒系统和应用程序,即使没有发生位置更改,也会持续运行,直到您停止。 edit3:将此代码添加到AppDelegate didFinishLaunchingWithOptions:查看应用程序是否被唤醒。 它不会被唤醒 – 我在表格视图中看不到200 200条目。 有什么可疑的事情正在发生。 if let options = launchOptions { print("options") if (launchOptions![UIApplicationLaunchOptionsLocationKey] != nil){ locationManager.startUpdatingLocation() self.lat.append(Double(200)) self.lon.append(Double(200)) self.times.append(NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .NoStyle, timeStyle: .ShortStyle)) NSUserDefaults.standardUserDefaults().setObject(lat, forKey: "lat") NSUserDefaults.standardUserDefaults().setObject(lon, […]

iPhone模拟器3.2中的核心位置(iPad)

所以, 我试图将我的应用程序移植到iPad。 我正在使用CoreLocation。 苹果说,iPad确实有 Location: Wi-Fi Digital compass Assisted GPS (Wi-Fi + 3G model) Cellular (Wi-Fi + 3G model) 所以应该有可能得到我的ipad(至less有3g型号)在3公里范围内的位置就足够了。 但它不工作在模拟器(3.2 ipad)(在模拟器中运行3.1.3模拟我cupertino)。 有没有办法获得在模拟器(3.2 ipad)的位置? 我住在德国,这里的ipad尚未发布,所以我不能在我的设备上testing它。 谢谢! 编辑 多数民众赞成我是如何试图让我的连接 locationManager = [[CLLocationManager alloc] init]; locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers; locationManager.delegate = self; [locationManager startUpdatingLocation]; 并始终在3.2 locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error被调用。 不在3.1.3上 错误对象如下所示: Error Domain=kCLErrorDomain Code=0 "Operation could not be […]

iOS不是典型的后台位置跟踪计时器问题

我正在开发一个示例应用程序,跟踪用户在后台的位置,但我不想离开位置服务始终启用,但在我的计时器中的某些行为不正确。 我的想法是,每x分钟,服务继续,当它有一个正确的新位置,它被释放,现在被设置为10秒,只是为了testing。 (显着位置变化没有窍门,没有足够的指责) 我search了很多(iOS开发人员中心+ StackOverflow),并find了“新的”后台位置function,它允许您在使用beginBackgroundTaskWithExpirationHandler,几个模块和一个计时器后,在运行后10分钟后运行代码。 我将背景模式设置为“位置”,现在我认为我不需要处理背景时间的结束(首先,我想每15-20秒获取一个位置) 代码工作“很好”,但是: 定时器有时会发生,有时不会。 计时器启动时,至less需要10分钟才能完成。 在操作系统中的一些随机操作(如进入search桌面)似乎估计计时器开火(不知道这一点,我不知道如何可能,但它是…) 通过代码将是另一个问题。 应用程序的方法: // applicationDidEnterBackground – (void)applicationDidEnterBackground:(UIApplication *)application{ NSLog(@"to background"); UIApplication* app = [UIApplication sharedApplication]; bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; }]; // Start the long-running task and return immediately. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // Do the work associated with the task. _triggertimer = […]

在Swift中查找经纬度的城市名称和国家

我在Swift3上的应用程序工作,我有信函问题,我找不到答案。 如何根据经纬度知道城市名称和国家短名称? import UIKit import CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate{ let locationManager = CLLocationManager() var latitude: Double = 0 var longitude: Double = 0 override func viewDidLoad() { super.viewDidLoad() // For use when the app is open & in the background locationManager.requestAlwaysAuthorization() // For use when the app is open //locationManager.requestWhenInUseAuthorization() locationManager.delegate = self locationManager.startUpdatingLocation() […]