当前位置更新在 iphone 设备中不起作用

Posted

技术标签:

【中文标题】当前位置更新在 iphone 设备中不起作用【英文标题】:Current Location updating not working in iphone Device 【发布时间】:2012-12-16 03:25:05 【问题描述】:

正在处理需要每秒更新当前位置的应用程序。

为此,我正在使用CoreLocation 框架。

我的代码是这样的

AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>



@property (nonatomic, retain) CLLocationManager *locationManager;

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
   
locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    self.locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
    [locationManager startMonitoringSignificantLocationChanges];
    [locationManager retain];

并实现它的委托方法

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

   CLLocation *locB = [[CLLocation alloc] initWithLatitude:newLocation.coordinate.latitude longitude:newLocation.coordinate.longitude];

    NSLog(@"New location is >>>>>> %@",locB);



-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

    NSLog(@">>>>>>>>>> error :%@", [error description]);


我的问题是,当我在模拟器中运行此代码时,它工作正常并且每秒更新一次位置,但是当我将它运行到设备中时,它只显示位置更新 3 或 4 次。

我需要这段代码在 iphone 4 和 iphone 5 上都能工作。

我还没有找到任何解决方案。

实际上我需要计算距离或计算步数..为此我也可以使用加速度计,但它并没有给出完美的解决方案。

请帮忙...

谢谢!

【问题讨论】:

嘿,为此使用 CLLocationManagerDelegate 协议参考 .. :) 看到这个链接老兄.. ***.com/questions/6516967/… 看到第二个答案.. 你也想在后台模式下获取位置?? @ParasJoshi:抱歉回复晚了..我正在使用 CLLocationManagerDelegate 协议????我想我正在使用那个。 不,我不想在后台使用它。 【参考方案1】:

我的印象是它不会一直更新位置,只会更新 3-5 次,以便提供一些可供您用来找到最佳选择的替代方案。尝试使用 [locationManager startUpdatingLocation] 重新开始位置生成和 [locationManager stopUpdatingLocation];在您的拆解代码中停下来。

【讨论】:

感谢您的快速回复。我正在使用 [locationManager startUpdatingLocation] 但无法正常工作。 在调用 startUpdatingLocation 之前尝试停止它;) 另外,您可以开始更新,创建后台线程,并根据您需要的时间 (1s) 检查 [location_manager location] 属性并忽略发送给委托的任何更新。您还可以保存旧位置以便以后知道它是否已更改。如果更改 - 发送消息选择器,无论主线程(重要)以更新您的 UI。 我能有任何演示吗?b'coz 不明白该怎么做...这是很简单的事情,应该运行但会产生问题... 抱歉没有时间创建演示。在此站点上搜索一些示例。我记得我见过其中一些。【参考方案2】:

您不能在后台运行应用程序。您必须将其注册为在后台运行的应用程序。请参阅此链接中的实现长时间运行的后台任务部分

ManagingYourApplicationsFlow

更新:

看到这个答案

iPhone SDK: Track users location using GPS

【讨论】:

以上是关于当前位置更新在 iphone 设备中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

stopUpdatingLocation 在 iOS 7 中不起作用

CSS 背景位置在 Mobile Safari (iPhone/iPad) 中不起作用

React.js 地理位置在 iPhone/Android 上的浏览​​器中不起作用

推送通知在 iPhone 3GS 中不起作用。它适用于最新的 IOS 设备,如 iPhone 4、4s、5

jQuery 直播活动在 iPhone 4 中不起作用?

Phonegap 事件在 iPhone 中不起作用