地理位置,带有类似本地通知的提醒



我想像应用程序提醒一样实现地理位置通知。这就是我已经做的:

在应用程序代理中:

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];

现在我不知道该怎么做才能用这些信息触发本地通知。

我可以告诉您,您的半径很可能太小,无法实际触发更新。您已将半径设置为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。希望这能有所帮助。

尝试使用

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region;

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region;

委托方法。

相关内容

  • 没有找到相关文章

最新更新