Я разрабатываю приложение с базой заблокированных номеров.
Ниже приведен код, где я получаю числа, сортирую их и вызываю метод 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) им разрешено проходить.