タグ付けされた質問 「core-location」

14
iOSアプリケーションでn分ごとにバックグラウンドで位置情報を更新するにはどうすればよいですか?
iOSアプリケーションでバックグラウンドで位置情報をn分ごとに更新する方法を探しています。私はiOS 4.3を使用していますが、このソリューションはジェイルブレイクされていないiPhoneでも機能するはずです。 私は次のオプションを試しました/検討しました: CLLocationManager startUpdatingLocation/startMonitoringSignificantLocationChanges:これは、構成されたプロパティに基づいて、期待どおりにバックグラウンドで機能しますが、n分ごとに場所を強制的に更新することはできないようです NSTimer:アプリがフォアグラウンドで実行されているときに機能しますが、バックグラウンドタスク用に設計されていないようです ローカル通知:ローカル通知はn分ごとにスケジュールできますが、現在の場所を取得するためにコードを実行することはできません(ユーザーが通知を介してアプリを起動する必要がない場合)。これは通知を使用する必要がある方法ではないため、この方法もクリーンな方法ではないようです。 UIApplication:beginBackgroundTaskWithExpirationHandler:私が理解している限り、これは、「長時間」バックグラウンドプロセスを実装するのではなく、アプリがバックグラウンドに移動したときに、バックグラウンド(時間も限られています)で一部の作業を完了するために使用する必要があります。 これらの定期的なバックグラウンドの場所の更新を実装するにはどうすればよいですか?

11
現在地の許可ダイアログがすぐに消える
私のアプリはユーザーの現在地を取得し、座標を取得して、目的地や出発地までの距離を提供します。これらすべての可能な宛先はテーブルビューに表示されるため、テーブルにデータを入力すると同時にユーザーの座標を取得しています。唯一のことは、ユーザーの場所を尋ねるアラートビューが表示された後、すぐに消えてクリックできないことです。 アプリが最初に読み込まれたときにこのアラートを手動で表示する方法はありますか?アプリが読み込まれたときにユーザーの現在地を取得して、アラートを強制的に表示させようとしましたが、うまくいきませんでした。


3
終了/中断されたときの重要な変更場所APIの動作?
これは、startMonitoringSignificantLocationChangesを使用したアプリの動作を説明するCLLocationManagerドキュメントのセクションです。 このサービスを開始した後でアプリケーションが終了した場合、新しいイベントが到着すると、システムは自動的にアプリケーションをバックグラウンドで再起動します。このような場合、アプリケーションデリゲートのapplication:didFinishLaunchingWithOptions:メソッドに渡されるオプションディクショナリには、場所イベントのためにアプリケーションが起動されたことを示すキーUIApplicationLaunchOptionsLocationKeyが含まれています。再起動しても、ロケーションマネージャオブジェクトを設定し、このメソッドを呼び出してロケーションイベントの受信を継続する必要があります。位置情報サービスを再起動すると、現在のイベントがすぐにデリゲートに配信されます。さらに、ロケーションサービスを開始する前でも、ロケーションマネージャーオブジェクトのロケーションプロパティには最新のロケーションオブジェクトが入力されています。 私の理解では、アプリの終了は、(あなたが呼び出していない場合、私が想定した場合ということですので、stopMonitoringSignificantLocationChangesをからapplicationWillTerminate)あなたが覚めてしまいますUIApplicationLaunchOptionsLocationKeyのにパラメータdidFinishLaunchingWithOptions:アプリケーション。その時点でCLLocationManagerを作成し、startMonitoringSignificantLocationChangesを呼び出して、バックグラウンドでの位置処理を限られた時間実行します。だから私はこのビットで大丈夫です。 前の段落では、アプリが終了したときに何が起こるかについてのみ述べており、アプリケーションが一時停止したときに何をするかを示唆していません。didFinishLaunchingWithOptionsのドキュメントには次のように書かれています。 アプリケーションは、バックグラウンドで位置の更新を追跡し、パージされ、現在は再起動されています。この場合、ディクショナリには、新しい場所イベントのためにアプリケーションが再起動されたことを示すキーが含まれています。 終了後、(場所の変更により)アプリが起動された場合にのみこの通話を受信することを提案します。 しかし、上の段落の大幅な変更サービスにおける位置認識プログラミングガイドが言うには、以下のい: このサービスを実行したままアプリケーションを一時停止または終了した場合、新しい位置データが到着すると、サービスによってアプリケーションが自動的に起動します。ウェイクアップ時に、アプリケーションはバックグラウンドに置かれ、位置データを処理するために少し時間が与えられます。アプリケーションはバックグラウンドにあるため、最小限の作業を行い、割り当てられた時間が経過する前にアプリケーションが戻るのを妨げる可能性のあるタスク(ネットワークのクエリなど)を回避する必要があります。そうでない場合、アプリケーションが終了する可能性があります。 これは、アプリが一時停止されている場合は位置データで目覚めていることを示していますが、どのように起きているかについては言及していません。 んUIApplicationDelegateは、私がバックグラウンド状態にサスペンド状態から再開していますことを私に言って、コールバックを取得しますか? (アプリが中断されたときにフリーズドライされた)ロケーションマネージャーは、locationManager :didUpdateToLocation:fromLocationコールバックの受信を開始しますか? アプリケーションの状態をチェックし、バックグラウンドモードの場合に最小限の処理を行うコードをdidUpdateToLocationメッセージに実装するだけでよいですか? これを書いている最中、私は自分の質問に答えたばかりかもしれないと思いますが、これについての私の理解をより知識のある誰かに確認してもらうと素晴らしいでしょう。

9
定期的なiOSバックグラウンドの場所の更新
高精度かつ低頻度でバックグラウンドでの位置情報の更新を必要とするアプリケーションを書いています。解決策は、Location Managerの更新を開始してすぐにシャットダウンするバックグラウンドNSTimerタスクのようです。この質問は以前に尋ねられています: iOSアプリケーションでn分ごとにバックグラウンドで位置情報を更新するにはどうすればよいですか? アプリがバックグラウンドに移行した後、n分ごとにユーザーの場所を取得する iOS典型的なバックグラウンド位置追跡タイマーの問題ではない 「場所」バックグラウンドモードを備えたiOS長時間実行バックグラウンドタイマー 位置追跡に基づくiOSフルタイムバックグラウンドサービス しかし、私はまだ最低限の例を機能させる必要があります。上記の受け入れられた答えのすべての順列を試した後、私は出発点をまとめました。背景に入る: - (void)applicationDidEnterBackground:(UIApplication *)application { self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"ending background task"); [[UIApplication sharedApplication] endBackgroundTask:self.bgTask]; self.bgTask = UIBackgroundTaskInvalid; }]; self.timer = [NSTimer scheduledTimerWithTimeInterval:60 target:self.locationManager selector:@selector(startUpdatingLocation) userInfo:nil repeats:YES]; } デリゲートメソッド: - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"%@", newLocation); NSLog(@"background time: %f", …


19
didFailWithError:Error Domain = kCLErrorDomain Code = 0「操作を完了できませんでした。(kCLErrorDomainエラー0。)」
現在地を取得したいのですが、エラーが発生します。 これは私のViewControllerのスニペットです。 - (void)viewDidLoad { self.locationManager = [[CLLocationManager alloc] init]; [locationManager setDelegate:self]; [locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters]; [locationManager startUpdatingLocation]; } - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations { // I would get the latest location here // but this method never gets called } - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { NSLog(@"didFailWithError: %@", error); } …

4
コンパイラエラー:無効なライブラリファイル-CoreLocation
Xcode 8で作成したアプリケーションの1つがあります。そのアプリケーションでCoreLocationとMapKitを使用しました。 iOS今までに最新のアップデートアプリを持っています。そしてそれはうまくいきました。現在、アプリケーションをで更新していますiOS 1。そのXcode 11.0ため、アプリを開いて必要なコードをすべて更新しました。Xcodeの「Perform Changes」などで提案されている設定も更新されました。 今、私はアプリケーションを実行しますが、次のようなエラーが発生します: Compiler error: Invalid library file。 たくさん検索しましたが、解決策が見つかりません。これは新しいバグですか、Xcodeそれとも新しいバグiOSですか? 追加の変更や設定を行う必要があることはありますか?案内してください。これはAppleの既知のバグですか? 編集: 2019-10-18 10:34:39.899827 + 0530 MapLocation [1697:57778]コンパイラエラー:無効なライブラリファイル2019-10-18 10:34:39.900098 + 0530 MapLocation [1697:57778]コンパイラエラー:無効なライブラリファイル2019- 10-18 10:34:39.915973 + 0530 MapLocation [1697:57778]コンパイラエラー:無効なライブラリファイル2019-10-18 10:34:39.916228 + 0530 MapLocation [1697:57778]コンパイラエラー:無効なライブラリファイル 2019-10-18 10:34:39.920608 + 0530 MapLocation [1697:57778]更新された座標は<+ 23.02055700、+ 72.50524900> +/- 5.00m(速度-1.00 mps /コース-1.00)@ 10/18/19 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.