I added a extension called Call Directory to an IOS app as we want to call blocking and caller id. I was able to add App Groups to both runner and CallDirectory. I cannot see of add Call Directory capability. Am I missing something. I added the extension through the Call Directory Target template. If I try to add this to CallDirectory.enitlements manually <key>com.apple.developer.callkit.call-directory</key> <array> <string>call-blocking</string> <string>caller-identification</string> </array> i recieve this signing error. Provisioning profile "iOS Team Provisioning Profile: "" doesn't include the com.apple.developer.callkit.call-directory entitlement. I cannot add Call Directory to an identifier in Apple Developer either.
So, let me start by going back to here:
(1)
If I try to add this to CallDirectory.entitlements manually <key>com.apple.developer.callkit.call-directory</key>
That entitlement does not exist and never has.
(2)
<array> <string>call-blocking</string> <string>caller-identification</string> </array>
More broadly, the vast majority of our entitlements use simple boolean values, not arrays or other complex data structures. The two exceptions I'm aware of are DriverKit and the Network Extensions, both of which require specialized support on the portal. If we did have this entitlement (which we don't), it wouldn't work like this.
On our paid Apple Developer Program account (role: Account Holder/Admin), the Call Directory capability toggle does not appear on any iOS App Extension Identifier we create.
Yes. You're looking for something that does not exist.
As Quinn said:
My best guess is that these entitlements are being ‘hallucinated’ by an LLM.
This isn't really a guess. We've been seeing more examples of this happening.
Similarly:
My specific advice is that you not add entries to your .entitlements file by hand, but instead use Xcode’s Signing & Capabilities editor for that work.
Xcode's entitlement support is sufficiently complete that, in practical terms, it's "aware" of all entitlements. If an entitlement is not showing up in Xcode, that's because either:
-
It's a managed entitlement which you would need to apply for and be granted (NOT what's happening).
-
You're trying to apply it to the wrong "kind" of target, for example, trying to apply a DriverKit entitlement to an app (NOT what's happening here).
-
The entitlement does exist at all (what's happening here).
Which leads to here:
Calling the API at runtime fails with com.apple.CallKit.error.calldirectorymanager error 1.
That error is CXErrorCodeCallDirectoryManagerError.Code.noExtensionFound, which is only returned when CXCallDirectory is unable to find a call directory extension inside your app bundle. I suspect that the real issue here is that your call directory extensions is either misconfigured (so the system doesn't recognize it's a call directory extension) or isn't being embedded in your app at all (due to project configuration or the signing issue created by trying to force this entitlement).
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware