Open iOS 11 Files App via Url Scheme or Some Other Way

Cannot Find Private URL For Opening Files App From Within Another App On iOS

According to this thread, you can use shareddocuments:// as the URLScheme to open the Files app. You can read more about how to use URLSchemes in this document in the section called Using URL Schemes to Communicate with Apps.

How to handle a file shared from another app to my own iOS app?

It looks like you followed the approach from this previous question only partially. In that case, the person had successfully implemented 2 of 3 parts of the solution for the custom URL scheme, so the answer only provided the 3rd part.

As https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app says:

To support a custom URL scheme:

  1. Define the format for your app’s URLs.
  2. Register your scheme so that the system directs appropriate URLs to your app.
  3. Handle the URLs that your app receives.

Their question was:

My app is being displayed in the available applications to which I can send the file to. My question is what happens after? When I choose to send it to my app it then switches over to my app and from there, I don't know how to receive the file and read it to extract its content.

So they had already done steps 1 and 2 (so, their app was being displayed properly in the available applications, etc.).

In your case, it sounds like you haven't done steps 1 and 2 yet?

The other possibility is (also from https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app) if you are using Scenes, note that there are additional entry points to your app.

If your app has opted into Scenes, and your app is not running, the system delivers the URL to the scene(:willConnectTo:options:) delegate method after launch, and to scene(:openURLContexts:) when your app opens a URL while running or suspended in memory.

Something like

func scene(_ scene: UIScene, 
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {

// Determine who sent the URL.
if let urlContext = connectionOptions.urlContexts.first {

let sendingAppID = urlContext.options.sourceApplication
let url = urlContext.url
print("source application = \(sendingAppID ?? "Unknown")")
print("url = \(url)")

// Process the URL similarly to the UIApplicationDelegate example.
}

/*
*
*/
}

and as the Apple docs say, for the case the app is in the background, then implement something like

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>){
let url = URLContexts.first?.url
print("url = \(url)")

// Process the URL similarly to the UIApplicationDelegate example.
}

Cannot open file from iOS Files app via the Open In My App share sheet: no file at the provided file URL exists

I fixed this by adjusting some settings in the app's Info.plist.

I switched UISupportsDocumentBrowser to false, and added LSSupportsOpeningDocumentsInPlace, also set to false.

I think these settings were set incorrectly (by me) after I received an email from App Store Connect stating:

Invalid Document Configuration - Document Based Apps should support either the Document Browser (UISupportsDocumentBrowser = YES) or implement Open In Place (LSSupportsOpeningDocumentsInPlace = YES/NO). Visit https://developer.apple.com/document-based-apps/ for more information.

How to share files between 2 local ios apps without url scheme or external server?

Other than URL option, you have an best option to use iOS keychain. See this article.

There are couple of other options mentioned here.

Another option is to use iCloud APIs.

One more, copy-paste data between Apps using UIPasteboard.

BTW what's the problem with URL solution? Apple suggest you to use URL to share data between different Apps.

Open iOS 11 Files app and display my app's Documents folder

you can open the Files app with the scheme shareddocuments

var url = new NSUrl("shareddocuments://" + Uri.EscapeDataString(folderPath));
UIApplication.SharedApplication.OpenUrl(url);


Related Topics



Leave a reply



Submit