Функция блокировки звонков в iOS 10
Я пытаюсь интегрировать расширение CallDirectory для блокировки некоторых входящих вызовов. Но приложение даже не распознает номера, предусмотренные для блокировки. Есть кто-нибудь, кто преуспел в этом?? Вы можете увидеть формат, который я использовал..
private func addIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) throws {
let phoneNumbers: [CXCallDirectoryPhoneNumber] = [ 18775555555, 18885555555,+91949520]
let labels = [ "Telemarketer", "Local business","myPhone"]
for (phoneNumber, label) in zip(phoneNumbers, labels) {
context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label)
}
}
И я передал это для развития. http://iphoneramble.blogspot.in/2016/07/ios-10-callkit-directory-extension.html
Устройство для тестирования и версия для iOS - iphone 5s,iOS 10.1
2 ответа
Atlast, у меня есть решение для блокировки вызовов. У меня не было способа проверить, работает ли код блокировки вызовов или нет. Вот некоторые из вещей, которые я сделал, чтобы заставить это работать.
- Проверьте, работает ли ваше приложение на 64-разрядном устройстве iOS (устройства iphone 5s или выше)
- Добавление чисел в порядке возрастания
- Добавить код страны к каждому номеру
Пример кода для добавления мобильных номеров для блокировки приведен ниже
let phoneNumber: CXCallDirectoryPhoneNumber = CXCallDirectoryPhoneNumber("+9194******")! context.addBlockingEntry(withNextSequentialPhoneNumber: phoneNumber)
Убедитесь, что ваше приложение дало разрешение на черные звонки (настройка -> телефон -> Блокировка звонков и идентификация -> Проверьте, разрешено ли вашему приложению блокировать звонки)
- Вы также можете проверить enabledStatus, поместив этот код ниже в ваш viewController
CXCallDirectoryManager.sharedInstance.getEnabledStatusForExtension (withIdentifier: "bundleIdentifierOfYourExtension", завершение Handler: {(status, error) -> аннулировать, если let error = error {print (error.localizedDescription)}}})
- Также добавьте следующий код в viewController
CXCallDirectoryManager.sharedInstance.reloadExtension (withIdentifier: "bundleIdentifierOfYourExtension", completeHandler: {(error) -> Отменить, если let error = error { print(error.localizedDescription) } })
Вы найдете эти URL полезными для развития. http://iphoneramble.blogspot.in/2016/07/ios-10-callkit-directory-extension.html
http://colin1994.github.io/2016/06/17/Call-Directory-Extension-Study/
Пожалуйста, дайте мне знать, если у вас есть улучшенные методы и исправления. Спасибо и счастливого кодирования.
Приятно видеть, что Apple прислушивается к запросам на улучшение с помощью CX. В iOS 13.4 Apple добавила возможность открывать настройки блокировки и идентификации вызовов прямо из приложения.
func openSettings(completionHandler completion: ((Error?) -> Void)? = nil)
https://developer.apple.com/documentation/callkit/cxcalldirectorymanager/3521394-opensettings
Массив телефонных номеров должен быть отсортированным списком int64. От самого маленького до самого большого. В противном случае список будет отклонен с ошибкой "записи не в порядке".