iOS detect mock locations

前端 未结 4 2139
悲哀的现实
悲哀的现实 2021-01-02 08:22

Currently I\'m working on an App which geolocation capabilities are its most important feature. Actually we\'re very concerned about getting GPS values mocked up. I\'ve read

4条回答
  •  醉话见心
    2021-01-02 09:10

    Question: Is there any way to detect this behaviour and prevent it?

    There actually are 2 separate questions: (1) how to detect, and (2) how to prevent it?

    Answer for (1): The simulated location behaviour is quite different from the real one at call back locationManager:didUpdateLocations:

    [simulated locations] callback returns almost immediately after calling startUpdatingLocation, and then repeatedly called every exactly one second. Also the locations are all the same if we choose a fixed location. Here is an example:

    location: <+51.50998000,-0.13370000> +/- 5.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:12:48 Час: Індокитай
    location: <+51.50998000,-0.13370000> +/- 5.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:12:49 Час: Індокитай
    location: <+51.50998000,-0.13370000> +/- 5.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:12:50 Час: Індокитай
    location: <+51.50998000,-0.13370000> +/- 5.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:12:51 Час: Індокитай
    location: <+51.50998000,-0.13370000> +/- 5.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:12:52 Час: Індокитай
    location: <+51.50998000,-0.13370000> +/- 5.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:12:53 Час: Індокитай
    location: <+51.50998000,-0.13370000> +/- 5.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:12:54 Час: Індокитай
    

    [real locations] It takes a few seconds (if first run) to call back and then randomly re-call. Also you can see the when significant changes among those locations even if you don't move at all. Here is an example:

    location: <+10.77219361,+106.70597441> +/- 67.39m (speed -1.00 mps / course -1.00) @ 30.03.15 14:16:26 Час: Індокитай
    location: <+10.77213011,+106.70591088> +/- 65.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:16:31 Час: Індокитай
    location: <+10.77219507,+106.70587790> +/- 65.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:16:38 Час: Індокитай
    location: <+10.77214753,+106.70587741> +/- 65.00m (speed -1.00 mps / course -1.00) @ 30.03.15 14:16:49 Час: Індокитай
    

    Answer for (2): To prevent, I just work around for now, we need to look up at least 3 locations to decide it's simulated or real location.

    Remind, it's just temporary solution to detect simulated locations. In the future, Apple may change the behaviour.

    By the way, I've also tried to disallow simulate location on xCode at scheme: enter image description here Unfortunately, it still allows simulated locations.

    Some more issues you may know here. Hope it help.

提交回复
热议问题