在ios 7.1中没有重复调用didupdatelocations

时间:2014-04-10 12:09:56

标签: ios cllocationmanager

我正在开发一个带位置的应用程序并成功获取坐标然后我调用webservice来存储坐标,但是当我使用ios 7.1设备时,didupdatelocation方法不会被重复调用。这是我的代码

if ([CLLocationManager locationServicesEnabled])
    {
        self.locationManager = [[CLLocationManager alloc] init];
        self.locationManager.pausesLocationUpdatesAutomatically=NO;

        self.locationManager.delegate = self;
        self.locationManager.desiredAccuracy=kCLLocationAccuracyBest;
        [self.locationManager startUpdatingLocation];
    }

和这个

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    if (UIApplication.sharedApplication.applicationState == UIApplicationStateActive)
    {
        CLLocationCoordinate2D center;

        center.latitude = [[locations objectAtIndex:([locations count]-1)] coordinate].latitude;
        center.longitude = [[locations objectAtIndex:([locations count]-1)] coordinate].longitude;

        _point = [[MKPointAnnotation alloc] init];
        _point.coordinate = center;

        if(appDelegate.strVehicleType!=nil)
        {
            [self checkInternet];
        }

        NSLog(@"Changed");

        [_locationManager stopUpdatingLocation];
    }
    else
    {
        CLLocationCoordinate2D center;

        center.latitude = [[locations objectAtIndex:([locations     count]-1)] coordinate].latitude;
        center.longitude = [[locations objectAtIndex:([locations     count]-1)] coordinate].longitude;

        _point = [[MKPointAnnotation alloc] init];

        _point.coordinate = center;

        if(appDelegate.strVehicleType!=nil)
        {
            [self checkInternet];
        }

        NSLog(@"Location Changed in Background")
        ;
        [_locationManager stopUpdatingLocation];
    }
}

我已尝试在ios 6和ios 7中重复上述代码位置更新,但未在7.1中更新,所以请任何人知道问题出在哪里?或者是他们使用的任何不同方法。

提前完成。

2 个答案:

答案 0 :(得分:1)

如果您使用模拟器进行测试,请重置模拟器。 如果您正在使用设备,请从中删除应用程序。

在.h文件中添加#import <CoreLocation/CoreLocation.h>框架

在.h文件中添加委托CLLocationManagerDelegate

在viewDidload中放置代码

if ([CLLocationManager locationServicesEnabled])
{
    locationManager = [[CLLocationManager alloc] init];
    locationManager.pausesLocationUpdatesAutomatically=YES;

    locationManager.delegate = self;
    locationManager.desiredAccuracy=kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
}

====== 然后

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    if (UIApplication.sharedApplication.applicationState == UIApplicationStateActive)
    {

        NSLog(@"Active");

    }
    else
    {
        NSLog(@"Non Active");
    }
}

运行应用,它会给你提醒&#39; Appname&#39;想要使用您当前的位置&#34;,按&#34;确定&#34;

如果您使用模拟器进行测试,请采取以下步骤:

来自Simulator的toolBar 调试&gt;位置&gt;苹果

采取这些步骤后,模拟器更改位置和方法将调用。

答案 1 :(得分:1)

是的,因为您的设备中的后台应用刷新是关闭的......

转到常规&gt; &#34;后台应用刷新&#34; &GT;开启。

一般&gt; &#34;后台应用刷新&#34; &GT;你的应用&gt;开启。

解决您的问题