How can I access contacts using Mac CLI app (XCode 14)?

I'm having some problems accessing contacts inside of mac cli app. The main issue is that the app is not triggering a dialog requesting access to contacts. Some sources state that NSContactsUsageDescription should be added to info.plist. This info.plist is nowhere to be found inside the project in xcode. Then, some sources are stating that there was a xcode update, and now permissions are added on Targets -> Info tab, but this tab does not exist on mac cli project.

Here is a code snippet:

#import <Contacts/Contacts.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        CNAuthorizationStatus status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];

        if (status == CNAuthorizationStatusNotDetermined) {
            NSLog(@"Contact access not determined.");
            CNContactStore *contactStore = [[CNContactStore alloc] init];
            
            [contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
                NSLog(@"Got response");
            }];
            
        } else if (status == CNAuthorizationStatusAuthorized) {
            NSLog(@"Access granted");
            
        } else {
            NSLog(@"Access to contacts is denied or restricted.");
        }
    }
    return 0;
}

Running this outputs: Contact access not determined. and app exits with code 0.

How would one access contacts inside of mac cli app project? Or setup proper permissions so that dialog would trigger?

PS. I have also tried adding info.plist manually, but there was no difference. Maybe I did something wrong? Is info.plist even used in mac cli project?

Replies

I'm having some problems accessing contacts inside of mac cli app.

How do you plan to deploy this?

This matters because there are at least two ways you can solve this and the best path forward depends on your final destination.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"