LocationSimulator
MacOS application to spoof / fake / mock your iOS / iPadOS or iPhoneSimulator device location. WatchOS and TvOS are partially supported.
LocationSimulator
LocationSimulator is a macOS app that allows spoofing the location of an Apple device (iOS, iPadOS, tvOS). The target audience for this project is developers who want to test their location-service-based application(s). I do not encourage using this application to cheat in iOS games, and I do not provide support for these games. If you use this application outside of the intended purposes, you are on your own.
๐ Table of Contents
- Background
- Features
- Install
- Build
- Requirements
- Build the app
- Usage
- Start spoofing
- Moving
- Stop spoofing
- License
- Contribute
- Donate
- Enhancements
- Acknowledgements
Background
While I originally planned to build on the fantastic work of Watanabe Toshinori's LocationSimulator, I decided to recreate the whole project because the original lacked a license at the time (August 2019). I created all necessary images and source code files and removed all third-party binary dependencies except for libimobiledevice. The project uses several Swift packages (listed under Build) but no longer requires Xcode to be installed at runtime. You need the DeveloperDiskImage.dmg and DeveloperDiskImage.dmg.signature files for your iOS version.
Features
- Spoof the iOS device location without a jailbreak or installing an app on the device.
- Spoof the iPhoneSimulator device location.
- Automatically try to download the DeveloperDiskImage files for your iOS version.
- Set the device location with a long-click on the map.
- Support custom and predefined (Walk/Cycle/Drive) movement speeds.
- Control the movement using the arrow keys.
- Navigate from the current location to a new location.
- Support network devices.
- Search for locations.
- Support dark mode.
[!NOTE]
LocationSimulator will try to download the correspondingDeveloperDiskImage.dmgandDeveloperDiskImage.dmg.signaturefor your iOS version from GitHub, since I cannot legally distribute these files. If the download does not work, get the files by installing Xcode and copying or linking them to:~/Library/Application Support/LocationSimulator/{YOUR_PLATFORM}/{MAJOR_YOUR_IOS_VERSION}.{MINOR_YOUR_IOS_VERSION}/
YOUR_PLATFORMmight beiOS(iPhone and iPad),watchOS(Apple Watch), ortvOS(Apple TV).MAJOR_YOUR_IOS_VERSIONmight be14andMINOR_YOUR_IOS_VERSIONmight be3for a device running iOS 14.3.As of v0.1.8, this folder has moved to:
~/Library/Containers/com.schlaubi.LocationSimulator/Data/Library/Application Support/LocationSimulator/As of v0.1.9, you can manage these files using the
DeveloperDiskpreferences tab.
Install
Download the latest release build from GitHub to get the latest changes, or install via Homebrew:
- Install Homebrew by entering the following command in your terminal:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Install LocationSimulator with Homebrew using:
brew install --cask locationsimulator
Build
Since this project has grown quite large over time, I have exported some of the code to other packages. The list below contains all additional projects I created to make this project possible. They should all be downloaded automatically by Swift:
- LocationSimulator-Localization: The LocationSimulator localization files.
- LocationSimulator-Help: The LocationSimulator helpbook you see when you click on
Help->LocationSimulator Help. - LocationSpoofer: The backend code used to spoof the location of iOS or iPhoneSimulator devices.
- XCF: The low-level frameworks used by LocationSpoofer.
- CLogger: A C / Objective-C / Swift logging library used by LocationSpoofer and LocationSimulator.
- SuggestionPopup: A simple Apple Maps-like popup list UI written for AppKit to search for locations.
- Downloader: A simple Swift library to download files from the internet more easily.
- GPXParser: A simple Swift library to parse GPX files.
Requirements
- macOS 10.15+
- macOS 11.x+ SDK
- Swift 5.0+
- Swift Tools 5.2+
- jekyll (required to build the helpbook; a symlink of jekyll to
/usr/local/bin/jekyllis expected)
Build the app
Install the latest Xcode from Apple. (Using the App Store is the easiest way)
Clone this repository:
git clone --recurse-submodules https://github.com/Schlaubischlump/LocationSimulator
- Open
LocationSimulator.xcodeprojin Xcode. - Let Xcode resolve all dependencies.
- Tap
Runto build and execute the app.
Usage
[!TIP]
If you use iOS 16 or later, you need to enable Developer Mode first. The Developer Mode option should appear in Settings the first time you try to use your device with LocationSimulator, after you receive a warning that you must enable Developer Mode. You can read the following issue for more information.
๐ Start Spoofing
Connect the iOS device to your computer via USB or Wi-Fi.
Select the device in the sidebar.
Long-click the point you want to set as the current location on the map.
๐ Moving
Click the walk button at the bottom left corner of the map. Drag the blue triangle to change the direction of movement.
Long-press the walk button to enable auto move. Click again to turn off auto move.
Long-click on a new point on the map while you are spoofing the location to show the navigation prompt, or select the menu item to set the coordinates manually.
Use the left and right arrow keys to change the direction of movement. Use up and down to move. Press space to stop the navigation.
๐ Stop Spoofing
- Click the reset button.
[!TIP]
Follow the provided steps to enable spoofing over Wi-Fi.
๐ถ Network Access
After you set up syncing with the Finder over USB, you can configure the Finder to sync to your device over Wi-Fi instead of USB.
- Connect your device to your computer with a USB cable, then open a Finder window and select your device.
- Select "Show this [device] when on Wi-Fi."
- Click Apply.
When the computer and the device are on the same Wi-Fi network, the device appears in the Finder. The device syncs automatically whenever it's plugged in to power.