Create a writable folder on iOS device - ios

How does one create a read/write folder on the same level as the Documents directory? Is there a way to set the directory used in file sharing on iOS between iTunes and an app, or is it hard coded to the Documents directory?

On a non-jailbroken device, you cannot create a read/write folder on the same level as the Documents directory. Additionally, there is not way to change the directory used in file sharing.
If you need to create files and want to keep them away from file sharing, there are other writable directories that can be used. This SO question & answer deals with that quite well.

Related

on iOS, can apps import/export folder structures?

in an iOS app, is it possible to share a whole folder, potentially containing sub folders, with another app? On the receiving side, is there a way to import such folder structure?
Or is file handling restricted to flat lists of files & individual files?
In an app I am working on, I want to process structured folders containing files & subfolders, with the folder tree intact - a user should be able to open a folder in my app. Not sure if that's possible, couldn't find an answer, so I guess not.
clarification:
implementing support for the share sheet, it's trivial to enable an app to open specific file types using UTIs. the app will simply show up in the system Share Sheet if a user in another app shares a supported file, and you just handle URLs in the app delegate. This works for multiple files, but is it possible to do it with entire directory structures? Individual files are copied into the target app's container, should be doable with folders as well, hopefully.

iPhone App - change directory dependencies

I wanted to know, if its possible to change the dependency of some directories.
To be specific:
In the app there are several information/pictures stored in an own-created (from the app after installing) directory called "Library". I cant access this directory from an unjailbroken device. But there is a directory called "Documents" which can be accessed from iTunes.
I want to change the dependency or whatever, so that I can grap or put on files in the "Documents" folder and the app will take them as well from there.
I tried to unzip the file and I had a look into some files but none of them contained a path to those directories. The only file remained was (I guess) the executable compiled file, which I could not encrypt/open/change.
Sorry for bad description - Im not sure how to depict it better.

How can I access my app's temp files with Xcode?

On iOS, I save a file in /tmp, using NSTemporaryDirectory(). Can I access it with Xcode to see what was there ?
Note: Im not looking for NSLog for various reasons, I want to save to a file and retrieve this file with Xcode or some other tool, for debug. I don't care so much if the file is in /tmp or in another directory.

ObjC - Write To MyApp.app folder (iOS 7)?

For some reason, my reading of text files doesn't work unless I go in the MyApp.app directory, but then it works.
All the tutorials I find only cover writing to the documents folder, how can I write to the 'MyApp.app' folder?
You cannot write directly to the app bundle directory from your app. It is read-only by design.
You are also highly constrained as to where else you can read and write from/to.
The following document provides more information about how the file system works in iOS, including read/write permissions and the conventions that you should follow:
https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

Where does iOS keep its data folder

In Android, if you have root, you can access a folder /data/data/<package name>
In this folder you can find databases or other files for your project.
Is this folder available on iOS if you have Jailbreak?
I did find some root explorers for iOS but I was not able to find that folder.
Android and iOS are completely different operating systems, so you shouldn't expect them to have the same file system layout.
In iOS, typically, apps store their data in a folder named Documents, that is saved in a location next to where the app itself is installed (†).
For example, for 3rd-party (App Store) apps, the app is installed under /var/mobile/Applications/ (†) and then a folder that's named with a unique identifier string. Under that folder, you will find the app at MyAppName.app. On the same level, you'll see a Documents folder, that is automatically created for you. So, a complete folder hierarchy might look like this:
iPhone5:/var/mobile/Applications root# find . -name Netflix.app
./882F75CD-F42D-4532-8C77-D0992192606B/Netflix.app
iPhone5:/var/mobile/Applications root# cd ./882F75CD-F42D-4532-8C77-D0992192606B/
iPhone5:/var/mobile/Applications/882F75CD-F42D-4532-8C77-D0992192606B root# ls
Documents/ Library/ Netflix.app/ StoreKit/ iTunesArtwork iTunesMetadata.plist tmp/
It is important to note that you do not need a jailbroken phone to access this folder. You can install a tool like iBrowse on your computer, and use that to browse the Documents folder of your 3rd-party apps.
However, if you want to be able to browse any folder on the filesystem, you would have to jailbreak the phone, and then could use iBrowse, or just ssh, to get into wherever you like.
Another note is that if you are building a "system" application for a jailbroken device, that will be installed under /Applications/, instead of /var/mobile/Applications/ (†), then you actually do need to manually create a documents folder for your app. See this tutorial for more about that (see bottom of page), or read this answer.
Update (†)
In recent versions of iOS (8+, I believe), the 3rd-party data folders have moved. What was in /var/mobile/Applications/ is now under /var/mobile/Containers/Data/Application/. App bundles and their data/documents folders have been separated on the filesystem.
iOS apps store data locally in different ways like plist(similar to shared_pref in android), NSUserDefaults, Core data(sqlite), Keychain.
Theses files can be found using any file explorer utility under the application folder.
Is this folder available on iOS if you have Jailbreak?
yes. Actually:
if no jailbreak: you could still check it using some file browser tool, like iBrowse
if jailbreak: you can find the app folder more easily
using many tools
eg
ls after ssh
GUI file manage tool
Chinese 爱思助手
Filza
iFile
eg:
Chinese app 抖音 (package id: com.ss.iphone.ugc.Aweme)'s data folder
/private/var/mobile/Containers/Data/Application
6A9AE298-87E8-4C94-8F85-863CA0904022
screenshot
folder structure
Documents/
screenshot
folder structure
Aweme.db
AwemeIM.db
Library/
StoreKit/
SystemData/
tmp/
/private/var/containers/Bundle/Application/F4E9C01C-9B7F-492F-A024-5045F5C26D4C
screenshot
folder structure
Aweme.app
Aweme
BundleMetadata.plist
No, that folder doesn't exist by default under iOS unless you (or somebody else) created it.

Resources