我正在开发一个带位置的应用程序并成功获取坐标然后我调用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中更新,所以请任何人知道问题出在哪里?或者是他们使用的任何不同方法。
提前完成。
答案 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;开启。
解决您的问题