私は地域監視を備えたアプリを持っていますが、ユーザーが指定された地域に入ったときに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 で「必要なバックグラウンド モード」のオプションを有効にしたくありません。
何か案は?