iOS app which handles URLs is not showing up in "Open in..." menu (eg. in Safari)
Asked Answered
A

0

8

When clicking the 'share' button in iOS Safari (either from the toolbar, or by long-pressing a link), I would like my app to be visible as an "Open in..." option (eg. "Open in News"), so that my app – which is another type of web browser – can open whatever http:// or https:// URL is shared by Safari.

I've registered the document type 'URL' (which I believe is the correct type – please correct me if this assumption is wrong!) in my info.plist file's CFBundleDocumentTypes as best as I can guess from Apple's 'Registering the File Types Your App Supports' documentation, their Technical Q&A, and these related StackOverflow posts 1 2 3:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>appIcon320</string>
            <string>appIcon64</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>URL</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>   <!-- Note: I have also tried 'Viewer' -->
        <key>LSHandlerRank</key>
        <string>Owner</string>    <!-- Note: I have also tried 'Default' -->
        <key>LSItemContentTypes</key>
        <array>
            <string>public.url</string>
        </array>
    </dict>
</array>

I have also written this stub method in AppDelegate.swift (although I think it is in fact irrelevant to the success of this first stage of getting my app to appear as an "Open in..." option):

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {opening-in-app-getting-uiapplicationlaunchoptionsurlkey-from-launchoptions?rq=1
    print("Received URL: \(url); from source: \(options[.sourceApplication] ?? "nil"); with annotation: \(options[.annotation] ?? "nil")")
    return true
}

... However, my app is still not appearing as an "Open in..." option. I must add that the app icons are correctly bundled with the app, and that the info.plist file opens fine in Xcode, so I can confirm that is not corrupt.

So I have three questions:

  1. Having long-pressed on a link and tapped the 'Share...' button, is the document type shared by Safari indeed 'URL'?

  2. Having pressed on the graphical button in Safari's toolbar which looks like πŸ“€ (confusingly also called a 'share' button), is the document type shared by Safari, as before, 'URL'?

  3. Have I written the CFBundleDocumentTypes correctly for a document of URL type? Or if Safari shares something else, what is it (and how should I write it)?

Aesthetically answered 12/7, 2017 at 20:44 Comment(2)
Have you figured this out? – Caudillo
@MihaiFratu Nope! It eventually ended up working one way or another, so all I can suggest is the usual cleaning your build and attempting a rebuild. – Aesthetically

© 2022 - 2024 β€” McMap. All rights reserved.