我想要实施地理定位通知,例如应用提醒。 这就是我已经做过的事情:
App代理中的:
self.locationManager = [[[CLLocationManager alloc] init] autorelease]; /* don't leak memeory! */
[self.locationManager setDelegate:self];
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
}
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
}
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
}
视图控制器中的这个开始监控:
CLLocationCoordinate2D location2D = mapView.region.center;
CLRegion *regionForMonitoring = [[CLRegion alloc] initCircularRegionWithCenter:location2D radius:1 identifier:@"RegionIdentifier"];
[[Utils getLocationManager] startMonitoringForRegion:regionForMonitoring];
现在我不知道如何使用此信息触发本地通知。
答案 0 :(得分:5)
我可以告诉你,你的半径很可能太小而无法实际触发更新。您将半径设置为1米。这将使位置更新几乎过于精确,无法在测试您传入的坐标上进行注册。
假设您收到了地区活动,我会将您的本地通知放在-didEnterRegion
或-didExitRegion
方法中。您可以像@Missaq一样创建通知。
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate date];
NSTimeZone* timezone = [NSTimeZone defaultTimeZone];
notification.timeZone = timezone;
notification.alertBody = @"Notification message";
notification.alertAction = @"Show";
notification.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
[notification release]; // release if not using ARC
请注意,如果您的申请处于有效状态,您将不会收到通知。如果您想要查看通知,则必须处于后台模式。如果您的申请处于有效状态,则需要提供UIAlertView
而不是UILocalNotification
。希望这会有所帮助。
答案 1 :(得分:2)
尝试使用
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region;
和
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region;
委托方法。