Full File System Access For The iOS App (Open Existing Vault/Folder)

I’m not sure I understand this. Apps such as Textastic can open an external folder from the Files app and do read / write operations on the contents of said folder.

7 Likes

Hello,

I would like an explanation as well regarding it not being possible for the iOS application to access other directories.

I do not have any experience with iOS development, however, I had found the following in Apple’s documentation:

  • In iOS 12 and earlier, users can open and interact with files outside the app’s container.” [1]

  • iOS 13, users can select a directory from any of the available file providers using a UIDocumentPickerViewController.” [1]

Looks like there is an example on the webpage as well for the second option:

Based on this Apple documentation the technical feasibility of applications accessing third party folders and storage locations is there.

Are there any design decisions that impact Obsedian’s ability to implement one of the above options of accessing other folders on iOS filesystem?

[1] Apple Developer Documentation

2 Likes

Have you searched the forum? This has been explained, altho rarely in much detail. I think there was a recent more-detailed explanation in Discord; I’ll try to find that to copy over.

1 Like

Hello,

I may have missed the detailed answer on the forum, and I was unaware the project had a Discord.

The answers I keep seeing are in the realm of “Apple locks down everything, nothing we can do”.

Yet the Apple documentation seems to contradict this (unless there are some caveats I am unaware of, which is probably the case).

1 Like

I’ve set a reminder to look it up later. I had the same problem as you, and I still can’t help but think, “are you sure?”, but I suppose the devs know what they’re talking about.

The extended explanation was something like, they need to work with lots of files at once and that’s not practical with the folder API, or maybe the parts of the folder API that can do that are difficult to implement.

Again, Obsidian needs direct filesystem-level access to the Vault, not access mediated through iOS’s sandboxing API.

The only direct filesystem level access locations on iOS are Obsidian’s Private folder and Obsidian’s iCloud folder.

6 Likes

How about techs like webdev, ftp, onedrive API access etc?
For example, for watching videos (especially for large files), we should support steaming playing (with cache techs) for better experiences, rather than provide “sync” feature to do the “copy/paste whole files” task then finally to play.
For private purpose, I don’t want to use any online service (even just cloud storage) to do the sync tasks for my notes, so that Obsidian account sync feature is not an good option for me.

1 Like

Why cant obsidian iOS app access file folders like in the android app? This would be helpful to use the Reslio sync to synchronize my obsidian desktop with other devices.

It’s explained in the second post above yours.

I use 1Writer on iOS which lets you import any folder from the Files app and any operation (creation/deletion/modification) performed in 1Writer is saved properly in those files. The folder I imported is provided by the Nextcloud app, which will in turn automatically sync my changes with my cloud storage. If 1Writer can do this, I don’t really see why Obsidian can’t.

1 Like

My understanding is that Obsidian needs access for all the indexing it does, which is only provided in an app’s own folder.

Despite you can’t do it directly, you can use an intermediary computer (Mac or Windows) do do it. You can also use a virtual machine.

Do do it you’ll need a to install in the intermediary computer (IC) and sync App (I recommend Resilio Sync or Syncthing).

If the IC is a Mac, you just need to configure the Sync App with your vault folder and configure it in your other devices.

If you’re a Windows user, you’ll need to install iCloud before configure before the Sync App configuration/step.

For Linux, this solution also works, however to use it as IC you need additional steps and knowledge (i.e. Docker, etc) and maintain the stuff working properly may be more “hardcore”.

Limitations: It requires the IC always ON so the cross device sync work in realtime on all your devices. If realtime remote sync is not mandatory, just turn ON the IC when desired.

It’s not a beautiful solution, however it works. :wink:

I use Code App (AppStore Link).

Github Link.

It has access to the ‘.obsidian’ folder and can use git, node.js, etc.

And Working Copy. As you say, some apps have found a way to work around those iOS restrictions.

2 Likes

Hello,

Are they any news on that ? I will move from Android to iOS and it’s an issue that we can’t choose folder. I can deals with livesync plugin but with that I lost share folder and share note… I understand that iOS issue but maybe there is a way in degraded mode to use api instead of low level filesystem access.

Why does it need direct filesystem-level access to the Vault?

If there is another API that gives you access to the folder in a less direct way, you can simply build an abstraction on top of that.

because obsidian needs to monitor your vault (all files and directories) for changes so it keeps everything consistent/updated. We either can’t build an abstraction layer for some features that are missing or the performance penalty is astronomical. Obsidian is not simply a markdown editor, obsidian manages your vault.

1 Like

But with an abstraction you could cache the performance-critical changes in-memory and do updates of the filesystem async? Shouldn’t that alleviate any performance issues?

You can alleviate same but not all performance issues. You also introduce the problem of your notes not being the source of truth anymore and data losses if for whatever reasons you data isn’t written on disk.

Anybody wants full file system access, get a jailbreak.
Then you can move whole vaults around in a second or symlink folders (without using a terminal command even) to wherever.
This would also open whole new opportunities toward automation, sync, etc.