Adding Contacts Without Entitlements
For one-off contact additions, there’s a simpler way that requires none of that. The idea is basic: you create a contact, save it in vCard format, and then ask the operating system to open the vCard file in the Contacts app. When the Contacts app opens, it will ask the user if they really want to add the contact. This requires no entitlements (even if you’re using the
note
field), no authorization, and even works in a sandboxed app.[…]
It works, but you might say, what about that
note
field? If you add anote
property to yourCNMutableContact
you will notice it is silently dropped when the contact is added to the address book. This has nothing to do with thenote
special entitlement. It turns outCNContactVCardSerialization
does not have support for either images or the note field. You can easily add both of these back. A Stack Overflow post provides some code showing how to do so.[…]
When working on a new version of my macOS app Restaurants, I came across the
note
field entitlement requirement. I submitted a request to Apple using their online form to have access to the entitlement and a week later I was rejected for my request being too vague. Fair enough, it’s their sandbox, and they have the right to reject me for being too vague. But waiting so long to get an answer was frustrating and adding contacts requires a lot of ceremony.
Previously: