I’m encountering a problem with my iOS app with new Live Caller ID extension when uploading to TestFlight. Here’s what's happening:
When I try to upload the app to TestFlight without the NSExtensionPrincipalClass
, I get the following error:
Missing Info.plist values. No values for NSExtensionMainStoryboard or NSExtensionPrincipalClass found in extension Info.plist for foo.app/PlugIns/bar.appex
However, if I include the NSExtensionPrincipalClass
in the Info.plist of my extension, the app fails to launch on both the dev build and through TestFlight. The error message I receive is:
bar.appex with id <bundle_id> defines either an NSExtensionMainStoryboard or NSExtensionPrincipalClass key, which is not allowed for the extension point com.apple.live-lookup
Has anyone experienced a similar issue? How to fix it?
I have resolved the issue, and it all comes down to where the extension is placed within the app bundle. The problem arose when the extension was located in the PlugIns and Foundation extensions directory. If you embed Live Caller ID .appex in ExtensionKit extensions, i.e. /Extensions
directory instead of /PlugIns
in bundle, then the problem goes away - this allows you to remove the NSExtensionPrincipalClass
/NSExtension
entries from the extension's Info.plist file.
But it's unclear whether this behavior is an oversight on Apple's validation side or if it's intentional. The documentation does not provide any clarity on this matter, which makes it somewhat puzzling 😕