Share extension

Apologies if this topic is posted elsewhere. What I want to do is clip copied text from web pages and other apps to a iOScrivener project. I’d expect to use the iOS sharing extension: click on the share arrow symbol in Safari or whatever and have Scrivener pop up in the list of apps I could send the text to. But it doesn’t appear. Is this something that will change? Is it up to the developers of other apps to provide those hooks to Scrivener?

That is something wittingly left out. That doesn’t mean it will never surface, but it’s not straightforward how this would work given the way it works. These share panels are more like stand-alone programs, so unlike “Open in”, which switches you to Scrivener so that it can take the PDF (or whatever) and do the right things to get it imported into the current project (updating the search index, building the binder listing, etc.), this feature would run without opening Scrivener, meaning direct storage access, i.e. editing projects while they are closed, meaning it would have to have a pretty huge chunk of “Scrivener” to it, to know how to manipulate projects safely.

Or maybe some other idea—like I say, it might happen, but it needs a good solution before it does. Meanwhile Cmd-C,Cmd-Tab,Cmd-V works about as well as on a Mac. :wink:

Ah, I figured there was some iOS limitation (rather than developer oversight) happening here. MacOS definitely still has some advantages, like the Services menu, over iOS at this point. Maybe a future evolution will make something like this possible someday. until then, I’m using the workaround you suggest.

Seems like the app would need a kind of Inbox at top level to receive such things – and which was not associated with any project. And then some means from within an open project to say, I want to fetch this item from the Inbox into my open project.

gr

I just discovered that there is a “Copy to Scrivener” option in the share menu of Readdle Documents. It actually appears when you select “Open in…” When I select it, the entire document appears as a new file at the bottom of the binder in my currently open Scrivener project. I haven’t seen that in Safari or other apps. When I try to just clip a portion of text from that document, though, no Scrivener option is offered in the share menu. I guess I just don’t understand how sharing works between other apps and Scrivener. When is the “Copy to Scrivener” or “Open in Scrivener” option available?

It is a little confusing, but basically it works like this:

  1. An app registers all the file types it can import or read.

  2. When an creates data for sharing with other apps, it can use a “Share” sheet or an “Open In” sheet. It tells these what sort of data it is exporting/sharing. The sheets will then show any app that has registered for this sort of data. So, for instance, one of the types of data Scrivener registers to receive is .docx, so when you “Open In” from Pages after choosing Word format, Scrivener will appear.

  3. “Open In” data is sent to the receiving application as a file, which the app can then immediately process.

  4. For an app to appear in the “Share” sheet, however, it has to provide a system extension. Unlike “Open In”, data from a “Share” sheet is not sent directly to the app; instead, the developer has to write an extension to process the data. The problem is that the way Apple has implemented this, the extension is completely separate from the app - it’s an app unto itself and cannot communicate with the app in any way. That is, any extension I write for Scrivener cannot actually communicate with Scrivener - this is entirely disallowed by the system. The extension has to process all of the data itself, and it has to work even when Scrivener is closed. This is the problem. I’d need the extension to allow users to choose which project to send that data to, and then the extension would need to replicate the complex code for creating a document inside the app - creating the folders and documents inside the .scriv package, modifying the binder XML file and so on. This is complex and a lot of code, but not particularly problematic if a project is closed. But if a project is open, it would be modifying the data behind Scrivener’s back - Scrivener would have no way of knowing about the changes going on inside the project package.

So, those are the reasons for the differences and the technical challenges involved. I don’t think they are insurmountable technical challenges, and this is all my list to work on more, but they are not trivial.

Hope that helps explain things.

All the best,
Keith

For Share functionality, I commend to you this Inbox idea – a mere way-station for incoming documents – and an expanded Move function:

Just a note for your list.

Gr - something like that might work, but it’s not great. If I add a visible “Inbox” in the projects list, then users are going to expec to be able to open and view the documents inside it, and to edit them. That adds a whole layer of complication and confusion, as it would almost seem like a project in itself, with its own drill-down list etc. I really don’t want to add something like that. It could be hidden, but then users will wonder where their imported items are. And either way, users are going to wonder why the imported items haven’t ended up in their project, and how to get it into their project.

Once an item is in the inbox, then a user would have to go into a project, tap on the import button and choose to import inbox documents, then there would be the question of whether it’s all inbox documents or whether you get to choose (more complexity), and then whether the inbox documents get deleted or not. So although it’s a possible solution, it’s still not pretty nor exactly user friendly.

All the best,
Keith

I am, of course, counting on your genius to make it amazing. :slight_smile:

A Scratchpad-like entity seems like a natural answer to this problem.

Katherine

I don’t mean to sound like an unappreciative SOB, but a scratchpad solution is not going to really address the way so many people already use mobile solutions within their workflow or the ever growing number of those who are shifting how they use mobile solutions to be included into their writing workflow. Because of this, the iOS Share Sheet and a more thorough way of collecting notes/research/one-off edits into a single location within Scrivener are both important.

The ability to access the iOS Share Sheet API, for basic tasks like sending composition ideas, character thoughts, in just plain text format from other note apps at the most elemental level should be routine now. I would believe that this sort stuff would and should be on your radar. Now if you believe that intensive writing sessions are only being done when one sits at their computer/desktop, that’s one thing, but it would be a little delusional in this day and age; just a hard fact.

Honestly, I don’t think that having some sort of an INBOX or catch-all folder/binder is a bad idea OR a confusing concept. I personally don’t see the iOS version of Scrivener ever being relevant for serious use without something like this as well as accessibility to keywords/tags. So I do think that an INBOX and Keywords/Tags should seriously be considered at some point as these two things address possibility of increased productivity in this ever shifting mobile approach. Scrivener users are certainly capable of being able to process/redirect/incorporate the items of their INBOX to the appropriate writing project. I would also note that the ability to handle all such things within a single application SYNCED through the cloud across multiple devices and platforms will win out every single time over a fragmented approach where things are being done in separate apps (i.e. quick notes in Simplenote, etc.) regardless of where they all sync. And the importance of this is only becoming more and more relevant as multi device/platform by individuals increases over time.

Just food for future thought, I still love Scrivener.

Found a kludgy workaround in a couple of articles online. This works for pdf attachments and web pages, but not, alas, emails, at least not from the apps (Mail, Spark, Gmail) I’ve tried it with.

  1. From the page/site you want to copy, hit the share button in the upper right hand corner
  2. Select “Print”
  3. (here’s the weird part) On the page image that pops up, use the two finger (or thumb-index finger) “expand” gesture. It’s the opposite of the pinch move, so you start your fingers together and widen them, like making the type bigger on a page. This will expand the page, and then give you ANOTHER share button in the upper right hand corner.
  4. Tap that share button. (Like I said: kludgy and inefficient.) Another share menu will pop up.
  5. Select “import with Scrivener.” (Important: a Scriv project must be open for this to work, preferably the one you want this pdf (that’s what you’re creating) to land in.
  6. Voila! You now have a pdf at the root of the Binder in that project, which you have to then
  7. Rename, and
  8. Move to the proper folder and possibly project if you had the wrong one open.

So, 8 steps when it should be about two, but that’s the best I can find at the moment to clip a whole web page or pdf (not a selection, unfortunately) to Scrivener. Maybe copy and paste isn’t so bad after all… I’m hoping Apple will get around to making this stuff easier in future iOS updates.

The big problem is that because all versions of Scrivener use the same project files, any solution would have to work ewually well on iOS, OS X, and Windows. If you have an inbox on iOS it would have to be present in OS X as well.

A suggestion: maybe a simple solution would be to make the Scratch pad available from within a project on iOS? It would require that users actively make the Scratch pad folder accessible to the iOS version, but that’s not too difficukt. An advantage is that the Scratch pad is easily available to other iOS apps, like Drafts.

I would certainly appreciate this. I’d use it, like lunk does, to send text to from the “Drafts” app – either directly to the Scratch Pad Notes folder in my dropbox, or via a share sheet. I’d also love a button on the main screen of Scrivener for iOS to create a new document in the Scratch Pad from the main screen – quickly, without first opening a project.

I understand that Keith has probably already thought about this and that the situation is way more complicated than I realize. I just find myself wishing for a quick way to get text down. Scrivener for macOS has so many options for this, and I wish that the iOS version did too.

:slight_smile:

I’m not sure I understand the complexity of sending a file (or text) to “Scrivener” simply by writing files to storage space available to iOScriv. If it’s configured for Dropbox, then it would write to Apps/Scrivener/Inbox*, if not, then to whatever internal storage space that can be accessed by iOScriv. The Scrivener app icon would gain a red badge with the number of items in its Inbox to remind the user that there are items ready to import.

Then the user would open a project and go through an interface similar to the one for importing a file from an external source (such as the existing one that lets you import from anywhere in their Dropbox storage space), but simpler, or just have that same interface default to offering that folder as a top-level item to select. Once again, if Dropbox is set up on iOS, then a folder under Apps/Scrivener would be the source for such imports, and it would also give Mac and Windows users an easy location to import from as well.

Is there really all that much more to this concept, or do other users expect more from such a feature?

  • Or Scratchpad, or whatever you want to call it.

The file you send text to must be accessible for Mac and Windows Scrivener as well. That’s why I suggested using the ScratchPad. It already exist.

The ScratchPad is simply a folder. If you put it in Dropbox, iOS apps like Drafts 4 can send text files into it. So all that is needed is a way for iOS Scrivener to be able to show the content in the ScratchPad folder. The only problem is that people will have at least as much trouble handling a ScratchPad folder (moving it to Dropbox and telling the different versions of Scrivener where it is) as they have with syncing via Dropbox.