0

Mein Ziel ist es, wenn ein jailbroken iPhone zu überprüfen derzeit alle Hintergrund-Navigation-Service.
Ich habe in erster Linie durch die CLLocationManager.h Header gegangen, aber nach geeigneten Methoden in allen anderen CoreLocation Header gesucht. Nichts von Nutzen gefunden. Auch nach Methoden im privaten Rahmen gesucht GeoServices. Aber dieser ist so umfangreich, ich bin mir nicht sicher, wo ich suchen soll.
Allerdings denke ich jetzt zu prüfen, ob das Telefon Standort im Hintergrund verwendet, indem Sie überprüfen, ob die location arrow zeigt.Überprüfen Sie, ob die Ortungsdienste zur Zeit verwendet werden

Wie würde ich gehen und das überprüfen?

+1

Check out 'appsUsingLocation' und' appsUsingLocationWithDetails' Methoden in 'CLLocationManager' – creker

+0

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

Antwort

1

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.

+0

Heilige !!!!! Das funktioniert; ich danke dir sehr! Nur geändert in 'für (NSDictionary * app in [[[% c (CLLocationManager) sharedManager] appsUsingLocationWithDetails] allValues])'. Und ja, Sie brauchen zumindest eine dieser Berechtigungen! Ohne, es funktioniert nicht. Alle hinzugefügt. Mad Requisiten – Clawish

Verwandte Themen