17

startMonitoringForRegion:との組み合わせを使用してstartMonitoringSignificantLocationChanges、アプリがバックグラウンドにあるときにユーザーがどこにいるかを認識し続けるアプリがあります。これは、キーのlocation値を?に含める必要があることを意味しますか?UIBackgroundModesInfo.plist

これはドキュメントからの引用です:

高精度の位置データを必要としないアプリには、大幅変更位置情報サービスを強くお勧めします。このサービスでは、ユーザーの場所が大幅に変更された場合にのみ、場所の更新が生成されます。したがって、ソーシャルアプリや、重要ではない場所に関連する情報をユーザーに提供するアプリに最適です。更新が発生したときにアプリが一時停止された場合、システムは更新を処理するためにアプリをバックグラウンドでウェイクアップします。アプリがこのサービスを開始して終了した場合、新しい場所が利用可能になると、システムはアプリを自動的に再起動します。このサービスはiOS4以降で利用でき、セルラー無線を搭載したデバイスでのみ利用できます。

..。

ユーザーに継続的な位置情報の更新を提供するアプリ(バックグラウンドにある場合でも)は、Info.plistファイルにUIBackgroundModesキー(位置情報を含む)を含めることで、バックグラウンドの位置情報サービスを有効にできます。UIBackgroundModesキーにこの値を含めても、システムがアプリを一時停止することを妨げることはありませんが、配信する新しい位置データがあるたびにアプリをウェイクアップする必要があることをシステムに通知します。したがって、このキーを使用すると、アプリをバックグラウンドで効果的に実行して、場所の更新が発生するたびに処理できます。

私の解釈ではlocation、キーの値は、UIBackgroundModes衛星測位アプリのように、アプリが継続的な位置情報の更新を必要とする場合にのみ必要です。

locationまた、キーの値を指定せずにデバイスでアプリを実行しようとしましたがUIBackgroundModes、重要な場所の変更と、リージョンが開始または終了したときのレポートが引き続き表示されます。

また、 CLLocationManagerクラスリファレンスUIBackgroundModesで言及されている唯一の場所は、私が使用していないディスカッションです。startUpdatingLocation

4

2 に答える 2

18

キーについては正しいですlocation。バックグラウンドでも、アプリで高精度の位置情報の更新が必要な場合にのみ必要です。Runkeeperのようなものは、マルチタスクで別のアプリを使用している場合でも、これを使用して現在地を追跡し続けることができます。iOSキーのドキュメントから:UIBackgroundModes

「位置情報」:アプリは位置情報ベースの情報をユーザーに提供し、この機能を実装するには、標準の位置情報サービス(大幅な位置情報サービスではなく)を使用する必要があります。

バックグラウンドで実行するための代替手段が存在する場合は、代わりにそれらの代替手段を使用する必要があります。たとえば、アプリは、バックグラウンドの位置情報アプリとして登録する代わりに、重要な位置変更インターフェイスを使用して位置情報イベントを受信できます。

リージョンの監視は、locationキーがなくても機能します。実際、リージョンモニタリングは、特別なiOSキーを有効にしなくても機能します。

を使用していないと言いますがCLLocationManager、リージョンモニタリングを使用している場合は、そのクラスを使用する必要があります。地域の通知を実際に受け取るには、アプリのロケーションマネージャーデリゲートを設定する必要があります。

于 2012-11-22T12:25:52.150 に答える
-1

はい。重要な位置情報サービスの変更(startMonitoringSignificantLocationChanges)を使用してバックグラウンドおよびアプリの強制終了状態でユーザーの位置情報を監視している場合は、Info.plistのバックラウンドモードで「位置情報」キーを追加する必要があります。

于 2018-01-11T10:28:29.010 に答える