私は地域監視を備えたアプリを持っていますが、ユーザーが指定された地域に入ったときにGPSを使用するために「startUpdatingLocation」を呼び出します。
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
[manager startUpdatingLocation];
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
locationManager =manager;
CLLocation *location1 = locationManager.location;
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:obj.latitude longitude:obj.longitude];
float betweenDistance=[location1 distanceFromLocation:location2];
if((betweenDistance/1000)<=0.350000){
// Fires an UIAlert
}
}
ほとんどの場合、これは正常に機能します。たとえば、ユーザーが地域の外にいて「ホームボタン」を押し、地域に入った後に機能「didEnterRegion」を起動すると、GPS が数分間動作し始めて表示されます。アラート、それが正しい方法です。
ただし、アプリが開いているときにユーザーが地域に入ると、関数「didEnterRegion」が起動され、GPS が開始されますが、ユーザーがその瞬間に「ホームボタン」を押すと、GPS が停止し、アラートは表示されません。
ユーザーがホームボタンを押してから数分間だけ GPS を使用し、過剰なモードで使用したくないため、info.plist で「必要なバックグラウンド モード」のオプションを有効にしたくありません。
何か案は?