Не удается запросить доступ к событиям календаря (через EKEventStore) в приложении Swift для MacOS - PullRequest
0 голосов
/ 07 октября 2019

(я никогда раньше не использовал Swift или Xcode, так что это, вероятно, глупый вопрос)

Чтобы изолировать проблему, я создал полностью пустое «Приложение» в Xcode 11 и поместил его в AppDelegate.swift:

import Cocoa
import EventKit

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    private let eventStore = EKEventStore()

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        eventStore.requestAccess(to: .event) { granted, error in
            if granted {
                print("GOOD: Access granted")
            } else {
                print("BAD: Access denied")
            }
        }
    }
}

Когда я запускаю приложение (через cmd + R), я сразу же вижу, что оно отказало в доступе, не дав мне возможности утвердить доступ:

Metal API Validation Enabled
BAD: Access denied

Что я делаю неправильно? Как я могу получить его, чтобы разрешить мне доступ к событиям календаря?

Обратите внимание, что я заметил, что документы говорят:

Для доступа к календарю пользователяданные, все изолированные приложения MacOS должны содержать ключ com.apple.security.personal-information.

Поэтому я сделал это изменение так же, как и в App_Name.entitlements, но это не помогло:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.personal-information</key>
    <true/>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.files.user-selected.read-only</key>
    <true/>
</dict>
</plist>

1 Ответ

0 голосов
/ 07 октября 2019

Fixed. 2 вещи, которые я ошибся:

  1. com.apple.security.personal-information в файле прав был неверным. Просто введите «Календарь» для автоматического заполнения до правильного.
  2. В файле Info.plist мне нужно было «Конфиденциальность - описание использования календарей», чтобы иметь значение. Я нашел это здесь: https://forums.developer.apple.com/thread/110825
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...