Ich versuche das Ortsupdate in Find My Friends
mit Theos zu spoofen.
Was ich bisher habe:
Wenn die App im Vordergrund ist, konnte ich die Update-Nachricht fälschen (mit Theos/Logos
an hook FMFLocation
class).
Was fehlt:
Wenn sich die App im Hintergrund oder getötet befindet, sendet sie meinen Standort immer noch an den Server, wenn mein Freund meinen Standort anfordert. Dieses Hintergrundupdate ruft die reguläre Update-Methode NICHT auf, daher funktioniert mein Hook nicht. Außerdem kann es auf eine Standortanfrage vom Netzwerk antworten, selbst wenn die App beendet wird. Ich denke nicht, dass Apple dieses Verhalten in normalen Apps erlaubt.
Ich denke, das kann nur mit einer privaten API gemacht werden. Könnte mir jemand in die richtige Richtung zeigen, um herauszufinden, welche API / Methode es im Hintergrund verwendet?
Sie können die Methode -startMonitoringSignificantLocationChanges
in CLLocationMananger
überprüfen ( Dokumente ).
Wie die Dokumentation sagt:
Diese Methode initiiert die asynchrone Zustellung von Standortereignissen. kurz nachdem du es angerufen hast. Veranstaltungsorte werden an geliefert Der locationManager Ihres Delegierten: didUpdateLocations: method. Der Erste Das zu übergebende Ereignis ist normalerweise der zuletzt zwischengespeicherte Speicherort Ereignis (falls vorhanden), kann jedoch unter Umständen ein neueres Ereignis sein. Das Erhalten eines aktuellen Standortfixes kann einige zusätzliche Sekunden dauern. Achten Sie also darauf, die Zeitstempel der Standortereignisse in Ihrem Browser zu überprüfen Delegate-Methode.
Nach der Rückgabe eines aktuellen Standortfixes generiert der Empfänger ein Update Ereignisse nur, wenn sich der Standort des Benutzers erheblich ändert erkannt. Zum Beispiel könnte es ein neues Ereignis beim Gerät generieren wird mit einem anderen Zellenturm assoziiert. Es verlässt sich nicht auf der Wert in der Eigenschaft distanceFilter, um Ereignisse zu generieren. Berufung Diese Methode ergibt sich mehrmals hintereinander nicht automatisch in neuen Ereignissen erzeugt werden. Berufung stopMonitoringSignificantLocationChanges dazwischen tut jedoch Wenn beim nächsten Aufruf ein neues initiales Ereignis gesendet wird Methode.
Wenn Sie diesen Service starten und Ihre Anwendung anschließend ist beendet, startet das System die Anwendung automatisch neu der Hintergrund, wenn ein neues Ereignis eintrifft. In einem solchen Fall die Optionen Wörterbuch an den locationManager übergeben: didUpdateLocations: Methode von Ihr Anwendungsdelegat enthält den Schlüssel UIApplicationLaunchOptionsLocationKey um anzuzeigen, dass Ihre Anwendung wurde aufgrund eines Location-Ereignisses gestartet. Nach dem Relaunch Sie müssen weiterhin ein Standortmanagerobjekt konfigurieren und dieses aufrufen Methode, um weiterhin Standortereignisse zu empfangen. Wenn Sie neu starten Ortungsdienste wird das aktuelle Ereignis an Ihren Delegierten übermittelt sofort. Außerdem die Standorteigenschaft Ihres Standorts Das Manager-Objekt wird sogar mit dem neuesten Standortobjekt gefüllt bevor Sie Standortdienste starten.
Zusätzlich zu Ihrem delegierten Objekt, das den locationManager: didUpdateLocations: Methode sollte es auch implementieren Der locationManager: didFailWithError: Methode, um auf das Potenzial zu reagieren Fehler.
Also im Grunde müssen Sie:
location
-Schlüssel als Hintergrundmodus in Ihrer Info.plist
-Datei CLLocationMananger
startMonitoringSignificantLocationChanges
AppDelegate
erhalten Sie einen Ort im Info-Wörterbuch, der mit UIApplicationLaunchOptionsLocationKey
versehen ist, wenn sich die Benutzer etwa 500 Meter bewegen. Tags und Links iphone ios core-location