开启定位有两个方法,startMonitoringSignificantLocationChanges和startUpdatingLocation这两个方法有什么区别吗?
1. バックグラウンド測位を実現するには 2 つの方法があります: 標準位置情報サービス (CLLocationManager の startUpdatingLocation を呼び出します) 大幅な変更位置情報サービス (CLLocationManager の startMonitoringSignificantLocationChanges を呼び出します) 2 両方の違い: 前者 (startUpdatingLocation) は標準の配置です。バックグラウンドで使用する場合は、info.plist ファイルに [必須のバックグラウンド モード] 属性を追加し、[アプリが位置情報の更新に登録する] 値を選択する必要があります。 前者 (startUpdatingLocation) は、バックグラウンドで実行しているときにリソースの問題によりシステムによって一時停止または終了される可能性がありますが、更新が行われると再開されますが、更新中にシステムがまだリソースを大量に消費している場合には再開されます。デリゲートは遅延的に呼び出されます。高いリアルタイム要件がある場合、これは適切ではない可能性があり、ユーザーのマシンのパフォーマンスを制御するのが困難です。 前者 (startUpdatingLocation) は、ユーザーが手動で閉じた場合、再度起動されません。 前者の測位は、GPS/基地局/Wi-Fi 測位に基づいており、どの CoreLocation フレームワークが使用されるかには独自のルールがあります。 後者 (startMonitoringSignificantLocationChanges) は基地局測位を使用するため、デバイスには電話モジュールが必要であり、ダウンロードしてインストールできるデバイスを制限するために plist に xx 属性を設定できます。 後者 (startMonitoringSignificantLocationChanges) は、バックグラウンドにあるか、ユーザーによって手動で閉じられているかに関係なく、デリゲートを呼び出すために起動されます。更新を防ぐ方法は 3 つだけです。 (1) ユーザーが測位サービスをオフにする (2) ユーザーがアプリの測位サービスをオフにする (3) デバイスが機内モードであるか、必要なハードウェア (測位モジュールのハードウェアであると推測) をオンにできない。 後者 (startMonitoringSignificantLocationChanges) はいつ更新されますか?基地局が交換されると更新されます。したがって、更新頻度は基地局の密度に関係します。都市部は郊外部よりも頻繁に更新されます。したがって、多くの学生は、依然として同じ基地局グループ内にいたために更新がなかったと述べました。 前者は後者よりも消費電力が高く、精度が高くなります。 3. 2 つの共通機能: どちらも位置情報を更新するときに同じデリゲート メソッドをコールバックします: -(void)locationManager:(CLLocationManager )manager DidUpdateLocations:(NSArray )locations;4. アップロード情報: バックグラウンドタスクには必要な操作を実行するために限られた時間しか割り当てられないため、タイムアウト前にタスクが完了しない場合(ネットワークリクエストなど)、アプリは終了します。希望の操作を実行し、バックグラウンド タスクを適用するために 10 分間の追加時間を適用する方法は次のとおりです: beginBackgroundTaskWithExpirationHandler (詳細は説明しません。使用方法については情報を確認してください)。 5. 概要: 2 つの方法にはそれぞれ長所と短所があり、フォアグラウンドで実行されるアプリには通常、正確なリアルタイムの位置情報と限られた実行時間が必要です。ナビゲーションなどの最初の標準測位アプリケーション。タクシー配車アプリなど、移動速度が速く(明らかに距離が変化する)、長時間の測位(監視)が必要な場合は後者が考えられます。 ここから引用
1. バックグラウンド測位を実現するには 2 つの方法があります:
標準位置情報サービス (CLLocationManager の startUpdatingLocation を呼び出します)
大幅な変更位置情報サービス (CLLocationManager の startMonitoringSignificantLocationChanges を呼び出します)
2 両方の違い:
前者 (startUpdatingLocation) は標準の配置です。バックグラウンドで使用する場合は、info.plist ファイルに [必須のバックグラウンド モード] 属性を追加し、[アプリが位置情報の更新に登録する] 値を選択する必要があります。
前者 (startUpdatingLocation) は、バックグラウンドで実行しているときにリソースの問題によりシステムによって一時停止または終了される可能性がありますが、更新が行われると再開されますが、更新中にシステムがまだリソースを大量に消費している場合には再開されます。デリゲートは遅延的に呼び出されます。高いリアルタイム要件がある場合、これは適切ではない可能性があり、ユーザーのマシンのパフォーマンスを制御するのが困難です。
前者 (startUpdatingLocation) は、ユーザーが手動で閉じた場合、再度起動されません。
前者の測位は、GPS/基地局/Wi-Fi 測位に基づいており、どの CoreLocation フレームワークが使用されるかには独自のルールがあります。
後者 (startMonitoringSignificantLocationChanges) は基地局測位を使用するため、デバイスには電話モジュールが必要であり、ダウンロードしてインストールできるデバイスを制限するために plist に xx 属性を設定できます。
後者 (startMonitoringSignificantLocationChanges) は、バックグラウンドにあるか、ユーザーによって手動で閉じられているかに関係なく、デリゲートを呼び出すために起動されます。更新を防ぐ方法は 3 つだけです。 (1) ユーザーが測位サービスをオフにする (2) ユーザーがアプリの測位サービスをオフにする (3) デバイスが機内モードであるか、必要なハードウェア (測位モジュールのハードウェアであると推測) をオンにできない。
後者 (startMonitoringSignificantLocationChanges) はいつ更新されますか?基地局が交換されると更新されます。したがって、更新頻度は基地局の密度に関係します。都市部は郊外部よりも頻繁に更新されます。したがって、多くの学生は、依然として同じ基地局グループ内にいたために更新がなかったと述べました。
前者は後者よりも消費電力が高く、精度が高くなります。
3. 2 つの共通機能:
どちらも位置情報を更新するときに同じデリゲート メソッドをコールバックします: -(void)locationManager:(CLLocationManager )manager DidUpdateLocations:(NSArray )locations;
4. アップロード情報:
バックグラウンドタスクには必要な操作を実行するために限られた時間しか割り当てられないため、タイムアウト前にタスクが完了しない場合(ネットワークリクエストなど)、アプリは終了します。希望の操作を実行し、バックグラウンド タスクを適用するために 10 分間の追加時間を適用する方法は次のとおりです: beginBackgroundTaskWithExpirationHandler (詳細は説明しません。使用方法については情報を確認してください)。
5. 概要:
2 つの方法にはそれぞれ長所と短所があり、フォアグラウンドで実行されるアプリには通常、正確なリアルタイムの位置情報と限られた実行時間が必要です。ナビゲーションなどの最初の標準測位アプリケーション。タクシー配車アプリなど、移動速度が速く(明らかに距離が変化する)、長時間の測位(監視)が必要な場合は後者が考えられます。
ここから引用