6#include <Contacts/Contacts.h>
8@interface QDarwinContactsPermissionHandler ()
9@property (nonatomic, retain) CNContactStore *contactStore;
12@implementation QDarwinContactsPermissionHandler
13- (Qt::PermissionStatus)checkPermission:(QPermission)permission
16 return [self currentStatus];
19- (Qt::PermissionStatus)currentStatus
21 const auto status = [CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts];
23 case CNAuthorizationStatusAuthorized:
24#if (defined(Q_OS_IOS) && QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(180000
)) || defined(Q_OS_VISIONOS)
25 case CNAuthorizationStatusLimited:
27 return Qt::PermissionStatus::Granted;
28 case CNAuthorizationStatusDenied:
29 case CNAuthorizationStatusRestricted:
30 return Qt::PermissionStatus::Denied;
31 case CNAuthorizationStatusNotDetermined:
32 return Qt::PermissionStatus::Undetermined;
34 qCWarning(lcPermissions) <<
"Unknown permission status" << status <<
"detected in"
35 << QT_STRINGIFY(QT_DARWIN_PERMISSION_PLUGIN);
36 return Qt::PermissionStatus::Denied;
39- (
QStringList)usageDescriptionsFor:(QPermission)permission
42 return {
"NSContactsUsageDescription" };
45- (
void)requestPermission:(QPermission)permission withCallback:(PermissionCallback)callback
47 if (!self.contactStore) {
52 self.contactStore = [[CNContactStore
new] autorelease];
55 [self.contactStore requestAccessForEntityType:CNEntityTypeContacts
56 completionHandler:^(BOOL granted, NSError *
_Nullable error) {
63 callback([self currentStatus]);
70#include "moc_qdarwinpermissionplugin_p_p.cpp"
QList< QString > QStringList
Constructs a string list that contains the given string, str.