I'm trying to register my app for all possible file types. I added the following to my info.plist:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>public.data</string>
<key>LSItemContentTypes</key>
<array>
<string>public.data</string>
<string>public.content</string>
</array>
</dict>
</array>
If I now open a PDF in Safari and tap Safari's "Share" button, my app is not offered. However if I tap the PDF itself, a button "Open In" appears on top and there my app is listed.
This is not a real problem but it prevents users to import photos into my app, because there is no "Open In" menu in the Photos app.
Can I register for the "Share" menu too somehow?
Unfortunately this is not possible, because:
The share screen in Safari is using
UIActivityViewController
to display a number of activities that can be performed with the page. Those activities are defined inUIActivity.h
and are usually the system-defined activities such as Post to Facebook, Post to Twitter, Message, Print, etc.For an non-system defined activity to appear in that screen, one has to create a custom
UIActivity
subclass and then initialize theUIActivityViewController
with an array of these.The "Open In..." screen on the other hand looks similar but is using a
UIDocumentInteractionController
which displays apps that can open the given URL/UTI (don't Google UTI...)