Это история:
В основном приложении: - Некоторые номера взяты из моего веб-сервиса.Эти числа добавляются к NSUserDefaults.
В Расширении каталога вызовов:
Получение из UserDefaults:
private func retrievePhoneNumbersToIdentifyAndLabels() -> (phoneNumbers: [CXCallDirectoryPhoneNumber], labels: [String]) {
let defaults = UserDefaults.init(suiteName: GROUP_NAME)
let phones = defaults?.array(forKey: "phoneArray") as! [CXCallDirectoryPhoneNumber]
let names = defaults?.array(forKey: "nameArray") as! [String]
return (phones,names)
} }
А вот и функция расширения каталога вызовов:
private func addAllIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) {
let (phoneNumbers, labels) = retrievePhoneNumbersToIdentifyAndLabels()
print(phoneNumbers)
print(labels)
for (phoneNumber, label) in zip(phoneNumbers, labels) {
context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label)
}
}
Проблема: Когда я пытаюсь включить блокировку вызовов и идентификацию в настройках на моем устройстве, выдается ошибка «Ошибка включения расширения».А также, в отладчике XCode,
[User Defaults] Не удалось прочитать значения в CFPrefsPlistSource <0x10fe251d0> (Домен: GROUP_NAME, Пользователь: kCFPreferencesAnyUser, ByHost: Да, Контейнер: (ноль),Необходимо обновить содержимое: Да): Использование kCFPreferencesAnyUser с контейнером разрешено только для системных контейнеров, отсоединение от cfprefsd
Но вот некоторые интересные моменты истории:
После этих проблемТак или иначе, функции печати, которые в вышеупомянутой функции работают правильно. Я имею в виду, что он может сохранять номера телефонов и метки в UserDefaults, а также он может читать из UserDefaults.Чтобы уточнить, я могу связаться с UserDefaults в своем добавочном номере. Нет проблем.
Примечание: Конечно, группы приложений как основного приложения, так и расширения каталога вызовов установлены и номера телефонов имеют правильные typealias, который является Int64.А также, номера телефонов сортируются по возрастанию.