このクラスを使用するには多くの方法があります。基本的なアプローチは、アプリのデリゲートで次のように初期化することです。
locmgrというアプリデリゲートで呼び出されるプロパティを設定します-
@property (nonatomic,strong) CLLocationManager *locmgr;
アプリ デリゲートのインターフェイス セクションの CLLocationManagerDelegate にも準拠します。
次に、applicationDidFinish ....で初期化します。
self.locmgr = [[CLLocationManager alloc] init];
self.locmgr.delegate = self;
self.locmgr.distanceFilter = 1500.0f; //only update when location changes this much
self.locmgr.desiredAccuracy = kCLLocationAccuracyThreeKilometers; //change for better accuracy
[self.locmgr setPurpose:@"this app needs location services"];
[self.locmgr startUpdatingLocation];
次に、デリゲート コールバックを追加します
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"location updated to new location:%@",newLocation);
//put your logic - maybe save it to a property and reference it when needed
}
バックグラウンド時にオフにします
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self.locmgr stopUpdatingLocation];
}
アプリのデリゲートのフォアグラウンド/バックグラウンドでサービスのオンとオフを切り替えるのが好きです。位置情報サービスが必要になる頻度が減ったようです。おそらく、それを開始および停止するためのアプリ デリゲートのメソッドです。ただし、位置情報サービスの更新を開始してから正確な値が得られるまでに 1 ~ 2 秒かかることがあります。フィルタを正しく設定すれば、余分な電力消費はほとんど発生しません。
それが役に立ち、プロジェクトで使用できるものになることを願っています。