これは私がiOS 9で使ってきたものです。正しく覚えていれば、appsUsingLocationWithDetails
は位置情報サービスに登録されているすべてのアプリの辞書を返します。 LocationTechnologiesInUse
には、アプリが位置情報を更新するために使用する一連の技術が含まれていますが、その値はわかりません。おそらく、GPS、WiFiホットスポット、セルタワー、または何か他のものが使用されていることを示す値を持つ列挙型です。現時点でアプリが位置情報サービスを使用している場合にのみ、配列に何かが含まれているため、実際には問題になりません。ここに例があります:
for (NSDictionary* app in [[CLLocationManager sharedManager] appsUsingLocationWithDetails].allValues)
{
if ([app[@"LocationTechnologiesInUse"] count] > 0)
{
//the app uses location services
}
}
この情報にアクセスする必要があるかもしれません。私のデーモンはブール値がtrueに設定されたこれらのエンタイトルメントで署名されています。
com.apple.locationd.authorizeapplications
com.apple.locationd.preauthorized
com.apple.locationd.effective_bundle
com.apple.locationd.status
com.apple.CoreLocation.PrivateMode
私のコード例があなたのために機能しない場合は、それらを使用してみてください。そのコードを書いてから残念なことに私はすべての権利を文書化していないので、長い時間が経ちました。私のデーモンはすでにこれらのコードで署名されており、上のコードはちょうどうまくいったので、多分何かが必要であるかそうでないかもしれません。
'CLLocationManager'の' appsUsingLocation'と 'appsUsingLocationWithDetails'メソッドをチェックしてください – creker
私は試しました。しかし、私は彼らの戻り値が何であるか分からない。私はid appUsingLocation = [[objc_getClass( "CLLocationManager")sharedManager] appsUsingLocation]; 'と' [appsUsingLocation count] 'を使ってアプリケーションを使用しているかどうかを調べましたが、その値は常にゼロです。どのように行うのかに関するコード例を教えてください。 – Clawish