How can I add files to the iOS simulator?

IosIos Simulator

Ios Problem Overview


Can someone tell me how can I add files to be used as test files for uploading from the simulator?

I dragged a PDF to the simulator and this is all I get. Can't really tap the Add button.

screenshot of the

Ios Solutions


Solution 1 - Ios

Since none of the given solution worked for me on Simulator of iOS 13/Xcode 11, (trying to add a file, dragged from the Finder would just give an error), I found a workaround.

This takes a bit of setting up at first, but you get free access to the actual folder right from the Finder.

When I drag a file to the Simulator (providing no other App handles the file), the Files App would open, but when I save, I get "Invalid argument error".

The solution:

The folder named "On my phone" in the Simulator is called "File Provider Storage". The aim is to find it in the Finder.

The full path:

username/Library/Developer/CoreSimulator/Devices/device_hash_folder/data/Containers/Shared/AppGroup/hash_folder/File Provider Storage/

(Note:
Up until to current version (13.1), the Simulator does not work for picking files. You can see the files, but nothing happens on click.)

Here are the steps:

  1. Open the Files app on the Simulator and navigate to "On my phone" folder.
  2. (Still in the Simulator) Create a folder with a unique name.
    2a. You need to drag the screen down to reveal a '...' button. Pressing that will give you an option to create a new folder.

From here there are two ways

The short:

(In the Finder)
3a. Navigate to: username/Library/Developer/Core Simulator/Devices.
3b. Search for the folder you created. It should be in "File Provider Storage". That is the "On my phone" folder.

If the search does not find for any reason:

3a. Run an App and print (from Xcode) the path to documentDirectory (using FileManager).
3b. Open it in Finder and navigate back to "Containers folder".
3c. Navigate to Shared/AppGroup.
3d. You're looking for Shared/AppGroup/some_hashFolder/File Provider Storage/your_folder.
3e. Either look for modified date (folder created) of search for the folder name.

Solution 2 - Ios

updated answer:
since xcode11/sdk13 dragging files over the simulator does not work for whatever reason. you can send media files (jpg, png, mov, etc) via terminal with xcrun simctl addmedia <device> <path>.

therefore, this command will add an image right into Photos app with no questions asked:

xcrun simctl addmedia booted pic.001.jpg <== booted is the current running simulator. 

in my case, i wanted to send root certificates to allow connecting to local servers, which doesnt work with addmedia. the solution was to force the simulator to navigate to the full macOS local path to the .cer file with safari

xcrun simctl openurl booted 'file:///Users/my.user/Desktop/my.cer'

as it turns out, launching safari and typing file:///Users/my.user/Desktop/my.cer in the address bar will also work. use this for pdfs and other types.

original answer:
On XCode 9 simulator, if it's an image/video, simply drag it over the simulator. It adds it to the Photos app. Other types of files seem to randomly open the file browser and generally fail. :P

Solution 3 - Ios

The easiest solution can be found here: https://apple.stackexchange.com/a/299565/140768

Short summary: You need an application which is able to handle/store "documents". As suggested in the linked post just create an empty "Document based" app and run it once.

enter image description here

Solution 4 - Ios

You can upload files to iCloud Drive of the account you are logged in with on the simulator, and access them by navigating to Browse/iCloud Drive inside the Files app or a file upload dialog.

Solution 5 - Ios

Multiple steps but works

  1. Create a new project Document Based app and run it on the same simulator.

enter image description here

  1. Now open safari in simulator and google for pdf. Select save to files option from action sheet and then select you newly created app folder.

enter image description here

enter image description here

Solution 6 - Ios

  1. Use safari on your simulator

  2. Vist https://en.unesco.org/inclusivepolicylab/sites/default/files/dummy-pdf_2.pdf for a dummy pdf

  3. Click the middle icon as shown below enter image description here

  4. Click on save to files and you are done enter image description here

Solution 7 - Ios

Dragging and dropping a file from Filer onto the simulator has an issue with macOS Catalina (I am currently on 10.15.5 and seeing it). Apparently, if the source file is in a "restricted" directory (such as Downloads), it won't transfer.

Put the file in your $HOME directory and then drag it (or use Share button to share to simulator). See thread: https://forums.developer.apple.com/thread/126307

Solution 8 - Ios

Just open Safari and download something.

Solution 9 - Ios

Just drag and drop on the simulator window. That's it.

Solution 10 - Ios

Maybe I am a bit late but after reading all complex answers, here's the simple and quick solution. Since you are using simulator and you want to access some of the files/images via simulator, follow these steps,

  1. Minimize your current applications and search for photos app,

enter image description here

  1. Open photos app in simulator, it will just look like real iPhone

enter image description here

  1. Now, just drag and drop an Image or File of any type. If it is an image it will appear in Photos else it will open the Files app it self and will ask you the permission to save file on device. Something like this, ]enter image description here

Simple, now use it just like it acts on real device.

Solution 11 - Ios

Simple answer:

  1. Put the simulator into home screen
  2. Drag and drop a file onto the simulator home screen
  3. If the file is associated with an app, it will open that app and you can save the file using that app. If not associated with any app, then the Files app will open and you can choose to save "On My iPhone" or elsewhere.

Side note: I was working on an app that had the file association, but did not save the file. So I deleted my app from the simulator, copied the file into the Files app, then restored my app to the simulator. Mention in case it helps others.

@Palli Kominak gave this answer but left it in a comment under one of the other answers.

Solution 12 - Ios

I found one easy way to do it with a little help from Python3 (I suppose all Macs should have it installed by default.

Here are the steps.

  1. Open your terminal app
  2. Go to the directory which contains your file(s), e.g.

enter image description here

(I need to transfer a self-signed certificate to the simulator)

  1. Run python3 -m http.server to launch an HTTP server
  2. Open Safari in your similator, and open http://localhost:8000, you should see a list of file(s), e.g.

enter image description here

  1. Download the file(s) you need from Safari

Solution 13 - Ios

You can put files in your APP's local /documents folder. To get the directory name in your APP do

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *fileNam = [NSString stringWithFormat:@"myImage.JPG"]; NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent: fileNam];

you will also need to enable file sharing by putting

UIFileSharingEnabled

in info.plist

You can copy any file you like into the simulator's local documents directory.

Solution 14 - Ios

In my case I wanted to upload the proxy certificate with shell without any confirmation dialog, so I came up with this:

SIM_UDID=$(xcrun simctl list devices | grep Booted | awk -F'[\(\)]' '{print $2}')
find ~/Library/Developer/CoreSimulator/Devices/$SIM_UDID/data/Containers/Shared/AppGroup/ -name "File\ Provider\ Storage" -exec cp path_to_some_file {} \;

First line is simply getting the UDID of a booted simulator and the second one is finding all File Provider Storage directories inside booted simulator and then copies the file to them.

Copied file should appear inside Files app.

Of course if one wants to specify the simulator or multiple simulators are booted, grep Booted can be changed to grep <name_of_the_device>


UPDATE

this lines can copy the file directly just to LocalStorage, no other directories in the contrary to the previous solution.

SIM_UDID=$(xcrun simctl list devices | grep Booted | awk -F'[\(\)]' '{print $2}')
FILES_PATH=$(xcrun simctl listapps $SIM_UDID | grep LocalStorage | awk -F'"' '{print $4}' | sed -e "s/^file:\/\///")
cp path_to_some_file $FILES_PATH/File\ Provider\ Storage

This approach makes use of xcrun simctl listapps command which return the AppGroup id of FileProvider.LocalStorage

Solution 15 - Ios

You can browse to Library/Developer/CoreSimulator/Devices/Your App ID/data

This is basically your phone's storage. You can copy the files to any of the location you like and it will appear in your simulator.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAtif ImranView Question on Stackoverflow
Solution 1 - IosbauerMusicView Answer on Stackoverflow
Solution 2 - IosjoeView Answer on Stackoverflow
Solution 3 - IosGamadrilView Answer on Stackoverflow
Solution 4 - IosTamás SengelView Answer on Stackoverflow
Solution 5 - IosAnoop RawatView Answer on Stackoverflow
Solution 6 - IosChinedu OforView Answer on Stackoverflow
Solution 7 - IosanorskdevView Answer on Stackoverflow
Solution 8 - IosstkvtflwView Answer on Stackoverflow
Solution 9 - IosstkvtflwView Answer on Stackoverflow
Solution 10 - IosNajamView Answer on Stackoverflow
Solution 11 - IosChuck KrutsingerView Answer on Stackoverflow
Solution 12 - IoslovelywibView Answer on Stackoverflow
Solution 13 - IosHammockView Answer on Stackoverflow
Solution 14 - IosCiszkoView Answer on Stackoverflow
Solution 15 - IosSWATView Answer on Stackoverflow