Hier ist, was ich in iOS 9 verwendet habe. Wenn ich mich richtig erinnere, gibt appsUsingLocationWithDetails
ein Wörterbuch aller Apps, die für Standortdienste registriert sind. LocationTechnologiesInUse
enthält eine Reihe von Technologien, die von der App zum Aktualisieren von Standortdaten verwendet werden, deren Werte mir jedoch unbekannt sind. Wahrscheinlich einige enum mit Werten, die darauf hinweisen, dass GPS, WiFi-Hotspots, Mobilfunkmasten oder etwas anderes verwendet wurde. Es ist nicht wirklich wichtig, da das Array nur etwas enthält, wenn die App im Moment Ortungsdienste verwendet. Hier ist ein Beispiel:
for (NSDictionary* app in [[CLLocationManager sharedManager] appsUsingLocationWithDetails].allValues)
{
if ([app[@"LocationTechnologiesInUse"] count] > 0)
{
//the app uses location services
}
}
Es gibt vielleicht einige Berechtigungen, die Sie benötigen, um auf diese Informationen zuzugreifen. Mein Daemon ist mit diesen Berechtigungen signiert, wobei der boolesche Wert auf "true" gesetzt ist.
com.apple.locationd.authorizeapplications
com.apple.locationd.preauthorized
com.apple.locationd.effective_bundle
com.apple.locationd.status
com.apple.CoreLocation.PrivateMode
Versuchen Sie, sie zu verwenden, wenn mein Codebeispiel für Sie nicht funktioniert. Es ist lange her, seit ich diesen Code geschrieben habe und leider habe ich nicht alle Berechtigungen dokumentiert. Mein Daemon war bereits mit diesen signiert und der obige Code funktionierte einfach, also wird vielleicht etwas benötigt oder auch nicht.
Check out 'appsUsingLocation' und' appsUsingLocationWithDetails' Methoden in 'CLLocationManager' – creker
ich versucht habe. Ich weiß jedoch nicht, was ihre Rückgabewerte sind. Ich versuchte 'id appsUsingLocation = [[objc_getClass (" CLLocationManager ") sharedManager] appsUsingLocation];' und '[appsUsingLocation count]', um zu sehen, ob irgendwelche apps es verwenden, aber dieser Wert ist immer Null. Können Sie ein Codebeispiel angeben, wie Sie es tun würden? – Clawish