1

アプリのリマインダーのようなジオロケーション通知を実装したい。これは私がすでに行ったことです:

アプリデリゲート:

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

今、私はこの情報でローカル通知を発行するために何をしなければならないのか分かりません。

4

2 に答える 2

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。お役に立てれば。

于 2012-01-30T15:00:30.910 に答える
2

を使用してみてください

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

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

デリゲート メソッド。

于 2012-01-30T12:34:12.333 に答える