How to set fake GPS location on IOS real device
Of course ios7 prohibits creating fake locations on real device.
For testing purpose there are two approches:
1) while device is connected to xcode, use the simulator and let it play a gpx track.
2) for real world testing, not connected to simu, one possibility is that your app, has a special modus built in, where you set it to "playback" mode. In that mode the app has to create the locations itself, using a timer of 1s, and creating a new CLLocation object.
3) A third possibility is described here:
https://blackpixel.com/writing/2013/05/simulating-locations-with-xcode.html
How to fake location iOS
As @paulw11 says, you have to run your app from Xcode with the device tethered to a USB cable.
Create one or more GPX files and add them to the project. Then in the Xcode debug menu there is an option to simulate location. If you pick one of your GPX locations the device's GPS shows that location.
There is also a option in the scheme editor that lets you pick a default location to use on launch.
how to prevent mock GPS location (spoofing) from fake GPS app in Swift?]
You can check if the app is jailbroken or not. If it already jailbroken, you can prevent the user to use the app with showing permanent dialog or something else.
If you wanna know how to detect the device is jailbroken or not, you can find it by yourself. There is so many literature that will tell you how.
Cheers :)
iOS detect mock locations
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:
Unfortunately, it still allows simulated locations.
Some more issues you may know here.
Hope it help.
Related Topics
Update a Label Through Button from Different View
How to Identify Ekevent Uniquely with Sync Across the Devices
Change Uitextfield and Uitextview Cursor/Caret Color
How to Pop Two Views at Once from a Navigation Controller
Please Clear Some Confusions Regarding Uiviewcontroller
What Is Nsmanagedobjectcontext's Performblock: Used For
Iphone: Can a Dev Other Than Team Agent Build an App for Distribution
How to Analyze Stack Trace Info of a Thread
How to Run Timer Though the App Entered Background or Is Terminated
How to Intercept Push Notifications for Another App
How to Parse This JSON in Swift
Why I Couldn't Assign Fetched Values from Firestore to an Array in Swift
How to Change "Initwithnibname" in Storyboard
How to Get Distance of Object from iPhone Camera Using Image Exif Meta Data
MySQL and Swift - Upload Image and File || Would It Be Better to Use Alamofire
Cannot Assign Value of Type '() -> Void' to Type '(() -> Void)!'