Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
minLevel1
maxLevel2
outlinefalse
typelist
printablefalse

...

Open images and PDF files from other apps

In order to enable your app to open any kind of files that are identified by the OS as images or PDF files, follow these steps:

1. Register image and PDF file types

Add the following to your Info.plist:

...

In order to initiate Open with from your app’s Documents folder, add UISupportsDocumentBrowser to your Info.plist.

Documentation

2. Enable it inside Gini Capture SDK

To enable Gini Capture SDK to handle files imported from other apps and to show the Open with tutorial in the Help menu, it is necessary to indicate it in the GiniConfiguration.

Code Block
languageswift
        let giniConfiguration = GiniConfiguration.shared
        ...
        ...
        giniConfiguration.openWithEnabled = true

3. Handle incoming images and PDF files

When your app is requested to handle an image or a PDF file your AppDelegate’s application(_:open:options:) (Swift) method is called. You can then use the supplied URL to create a document as shown later.

...

In order to determine that the file opened is valid (correct size, correct type, and number of pages below the threshold on PDF files), it is necessary to validate it before using it.

Gini Capture

Code Block
languageswift
func application(_ app: UIApplication,
                 open url: URL,
                 options: [UIApplicationOpenURLOptionsKey: Any] = [:]) -> Bool {            

        // 1. Build the document
        let documentBuilder = GiniCaptureDocumentBuilder(documentSource: .appName(name: sourceApplication))
        documentBuilder.importMethod = .openWith

        documentBuilder.build(with: url) { [weak self] (document) in

            guard let self = self else { return }

            // 2. Validate the document
            if let document = document {
                do {
                    try GiniCapture.validate(document,
                                             withConfig: giniConfiguration.captureConfiguration())
                    // Load the GiniCapture with the validated document
                } catch {
                    // Show an error pointing out that the document is invalid
                }
            }
        }

        return true
}

Documentation

...

Open images from Photos app

In order to enable your app to open images from Photos, implement a shared extension. Share extensions, in particular, let you share content with your application.

1. Add a share extension to your project

Go to File -> New -> Target and select Share Extension. Make sure you link it to the main app. When the system asks if you want to activate the Share scheme, select Activate.

2. Set the extension activation rule

Change the NSExtensionActivationRule in the Info.plist in your extension target. Check the example here.

3. Handle the URL

Find the example implementation here.

4. Pass the data from the extension to the main app

Here we connect the share extension directly to the main app using AppGroups and UserDefaults. Add AppGroups to the capabilities of both the extension and main app using the same app group. Check the example here.

5. Open the main app and retrieve the shared data

  • Register your app extension scheme in the URL types for the main app.

  • Open the main app from the extension.

  • Handle the incoming URL from the app extension in AppDelegate and retrieve data from the shared UserDefaults. The system delivers the URL to your app by calling your app delegate’s application(_:open:options:) method. You can check our example implementation here.

...