2016-03-28 8 views
1

ユーザーがクライアントの店舗に近づいたかどうかを確認するアプリがあり、店舗の近くにいることを知らせる通知がアプリから送信されます。重要な位置の変更監視がバックグラウンド中に停止する

もちろんジオフェンシング(locationManager: didEnterRegion)を使用していますが、20以上の店舗がありますlocationManager: didUpdateLocations私はユーザーに最も近い20の店を並べ替えています。

私もAppDelegateに同じlocationManagerを使用したいので、私は(AppDelegateに私のCLLocationManagerこの方法を設定し、オブジェクトに私のViewControllerlocationManagerプロパティを設定しています:

-(void)configureLocationManager 
{ 
    //Initializing "locationManager"'s(CLLocationManager) 
    self.locationManager=[[CLLocationManager alloc] init]; 
    //Setting "locationManager"'s(CLLocationManager)'s delegate to "monitorLocationVC"(monitorLocationViewController) 
    self.locationManager.delegate=self.monitorLocationVC; 
    //Setting "locationManager"'s(CLLocationManager)'s distance filter to 10 
    self.locationManager.distanceFilter=10; 
    //Setting "locationManager"'s(CLLocationManager)'s activityType to navigation 
    self.locationManager.activityType=CLActivityTypeAutomotiveNavigation; 
    //setting "locationManager"'s(CLLocationManager) desiredAccuracy to "best" 
    self.locationManager.desiredAccuracy=kCLLocationAccuracyBest; 
    //Setting "locationManager"'s(CLLocationManager)'s pausesLocationUpdatesAutomatically to NO 
    self.locationManager.pausesLocationUpdatesAutomatically=NO; 
    //If OS version is 9 or above - setting "allowsBackgroundLocationUpdates" to YES 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9) { 
     self.locationManager.allowsBackgroundLocationUpdates = YES; 
    } 
} 

今ではすべてまでうまくいきましたが、数分後にアプリが実行中であることを知らせるようになりました(約15分後に突然停止する)。

注:アプリを起動するときにそのホーム画面(ちょうど通常の起動)アプリがクラッシュする、それは問題になる可能性がありますか?

ありがとうございました!

+0

チェックこのhttps://github.com/voyage11/Location – kb920

+0

@ kb920アプリがするまで完全に働きました今、コードが正しいので、私はアプリケーションが重要な位置の変化を監視するのを止めるバグを探しています –

+0

クラッシュログは何ですか? – kb920

答えて

0

チェックこの文書をバックグラウンドモードフェッチ追加:documentation apple

をして、このコードを追加します。

if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) 
{ 
    [self.locationManager requestAlwaysAuthorization]; 
} 
if ([self.locationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) { 
    [self.locationManager setAllowsBackgroundLocationUpdates:YES]; 
} 
関連する問題