私のアプリ (Deployment Target 5.1) では、CoreLocation を使用してリマインダー機能をセットアップしています。デバイスが現在の場所を更新すると、基本的に近くのアイテム (場所が添付されている) が検索されます。
この機能は、この段階ではあまり安定して動作していません。デバイスがアクティブ、一時停止、および終了状態にあるかどうかに関係なく、まったく動作しない場合があります。デリゲート メソッドlocationManager:didUpdateToLocation:fromLocation:
が呼び出されないことに気付きました。
このことを適切に機能させるための方向性を教えてくれる人はいますか?
これがCLLocationManagerのセットアップです
sharedLocationManager = [[CLLocationManager alloc]init];
[ESLocationManager defaultManager].delegate = someDelegateClassInstance;
[[ESLocationManager defaultManager] setDesiredAccuracy:kCLLocationAccuracyHundredMeters];
[[ESLocationManager defaultManager] startMonitoringSignificantLocationChanges];
そして、デリゲート コールバックの実装
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
// If it's a relatively recent event, turn off updates to save power
NSDate* eventDate = newLocation.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
if (abs(howRecent) < 20.0) {
// If the event is recent,find nearby items.
NSLog(@"latitude %+.6f, longitude %+.6f\n",
newLocation.coordinate.latitude,
newLocation.coordinate.longitude);
//reload nearby list
NSArray *nearbyItems = [self nearbyItemsForLocation:newLocation];
if (nearbyItems && nearbyItems.count ) {
UIApplicationState appState = [[UIApplication sharedApplication] applicationState];
if (appState != UIApplicationStateActive) {
[[UIApplication sharedApplication] presentLocalNotificationNow:[self localNotificationForItems:nearbyItems]];
}
}
}
}