ユーザーが20〜30メートルの自宅にいることを知る必要があるiOS用のアプリを構築しています。位置情報の更新がバックグラウンドで停止する - iOS
ユーザーが自宅から500m離れたところでイベントをトリガーするユーザージオフェンス、次にCLLocationManagerを使用して実際の場所を追跡し、自宅までの距離をチェックします。
私の問題は、アプリケーションがバックグラウンドになっている間にジオフェンスイベントから「startUpdatingLocation」を呼び出すと、20秒間だけ実行され、コールバックを停止することです。 私は、20秒後にアプリを開いてバックグラウンドに戻した後、私はそれを止めるまでコールバックを与え続けます。 アプリが実行されている間に「startUpdatingLocation」を呼び出してバックグラウンドに置くと、それは実行されたままになります。
初期化のための私のコードは次のようになります。私は場所のためのバックグラウンドモードを有効にし、含まれている
func startFetchingUserLocation() {
if (!isFetchingLocation) {
isFetchingLocation = true
DanaDebugger.presentDebugPushMessage(message: "fetching new location")
locationManager.startUpdatingLocation()
}
}
:
init(config: AutounlockConfiguration) {
super.init()
self.config = config
self.locationManager = CLLocationManager()
self.locationManager.requestAlwaysAuthorization()
self.locationManager.requestWhenInUseAuthorization()
self.locationManager.delegate = self
self.locationManager.pausesLocationUpdatesAutomatically = false
self.locationManager.allowsBackgroundLocationUpdates = true
self.locationManager.activityType = .automotiveNavigation
self.locationManager.distanceFilter = kCLDistanceFilterNone
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
}
と私は場所の更新を開始するとき、私はこのようにそれを行いますinfo.plistファイルのNSLocationAlwaysUsageDescription 私は本当にここからどこに行くのか分からない、誰かが助けてくれることを願っている。
を解決またはその両方を使用します。フォアグラウンドで重要な場所の変更を有効にすることができます。これにより、ジオフェンス内にいるときにバックグラウンドで 'startUpdatingLocation'を呼び出して継続的な更新を得ることができます。 – Paulw11
ありがとう!これはまさに私が必要としていた答えでした!今すぐ完璧に走ります。 –