CallKit Расширение CallDirectory не может блокировать вызовы - PullRequest
1 голос
/ 18 октября 2019

Я разрабатываю приложение с базой заблокированных номеров.

Ниже приведен код, где я получаю числа, сортирую их и вызываю метод addBlockingEntry(withNextSequentialPhoneNumber:) из CXCallDirectoryExtensionContext:

private func addAllBlockingPhoneNumbers(to context: CXCallDirectoryExtensionContext) {
    // Retrieve all phone numbers to block from data store. For optimal performance and memory usage when there are many phone numbers,
    // consider only loading a subset of numbers at a given time and using autorelease pool(s) to release objects allocated during each batch of numbers which are loaded.

    var allPhoneNumbers: [Int64] = []
    if let numbers = PhoneNumber.fetchAll(context: ctx){
        for number in numbers {
            if allPhoneNumbers.contains(number.number) == false {
                allPhoneNumbers.append(number.number)
            }
        }
    }

    for phoneNumber in allPhoneNumbers.sorted(by: <) {
        context.addBlockingEntry(withNextSequentialPhoneNumber: phoneNumber)
    }
}

Содержание ошибки составляет nil при перезагрузке расширения, поэтому оно должно работать.

Входящие вызовы на iPhone SE (iOS 12.2), iPhone 7 (iOS 12.4.1 и iOS 13.1. 3) и iPhone 8 (iOS 13.1.2 и 13.1.3) заблокированы, как и ожидалось, но на iPhone XS / XS Max (iOS 13.1.2 и iOS 13.1.3) им разрешено проходить.

...