UserDefaults в идентификаторе вызывающего абонента в каталоге вызовов - PullRequest
0 голосов
/ 23 мая 2018

Это история:

В основном приложении: - Некоторые номера взяты из моего веб-сервиса.Эти числа добавляются к 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.А также, номера телефонов сортируются по возрастанию.

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

У меня была такая же проблема.Вы должны проверить это в режиме Ad-Hoc или Release!Кажется, что в режиме отладки это иногда не работает!

0 голосов
/ 24 мая 2018

Убедитесь, что вы случайно не испортили данные.Совместное использование файлов данных означает, что может быть несколько процессов, пытающихся использовать файл одновременно.Песочница на iOS означает, что это довольно редкая ситуация, но это не значит, что можно игнорировать ее.Возможно, вам придется использовать «NSFileCoordinator»

, более подробную информацию вы можете найти по этому адресу: введите описание ссылки здесь

...