I support an app that has used the document picker interface since iOS 8. It has worked fine without mods up through iOS 12. We did not elect the richer Files app integration APIs that were implemented in iOS 11 for a few reasons. Starting with iOS13/iPadOS13, interactions between the provider and consumer apps broke (albeit somewhat inconsistently across beta releases). The steps below show that toggling the value of NSExtensionFileProviderSupportsEnumeration in the Info.plist for the file provider across releases enables existing code to work, but this is not a viable solution. Simply setting the value to NO from the outset does not work. Steps to reproduce are these:
- Clone https://github.com/Purebred/KeyShareConsumer and https://github.com/Purebred/SampleKeyProvider projects from GitHub (fixing up bundle identifiers and team identifiers as needed)
- Edit the Info.plist in the SampleKeyProvider project's SampleKeyProviderFileProvider target to include NSExtensionFileProviderSupportsEnumeration with BOOLEAN value NO in the NSExtension dictionary
- Build and run both projects
- Import Sample PKCS #12 Files in SampleKeyProvider
- Try to import key into KeyShareConsumer by clicking Import Key in top left corner and following usual document picker flow
- This does not work because it never invokes the file provide (trying without step 2 yields the same result too)
- Edit NSExtensionFileProviderSupportsEnumeration to be set to YES
- Build and run both projects trying to import key into KeyShareConsumer
- Does not work but does so in a different way (because SampleKeyProvider does not support enumeration)
- Edit NSExtensionFileProviderSupportsEnumeration to be set to NO
- Build and run both projects trying to import key into KeyShareConsumer
- Works fine (and with no changes to existing consumer code)
This seems like a bug registering the file provider when NSExtensionFileProviderSupportsEnumeration is either absent or NO.