Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Call Directory Extensions: Your call is very im...

Call Directory Extensions: Your call is very important to us...

MBLTdev'16 session about CallKit

Avatar for Anton Grachev

Anton Grachev

November 17, 2016

More Decks by Anton Grachev

Other Decks in Programming

Transcript

  1. Call Directory Extensions: Ваш звонок очень важен для нас… Антон

    Грачёв Старший разработчик #MBLTdev’16
  2. CallKit • iOS 10+ • Интеграция VoIP приложений с нативным

    UI • Блокировка и идентификация входящих вызовов
  3. Информация про CallKit: • Краткое руководство на портале разработчиков: https://developer.apple.com/reference/callkit

    • Сессия на WWDC 2016 про интеграцию VoIP приложений: https://developer.apple.com/videos/play/wwdc2016/230/ • Отдельные комментарии в коде при создании проекта в Xcode
  4. Spam Extension База телефонных номеров Перезагрузка extension-а Чтение данных Чтение

    / Запись данных iOS Guess Who App Передача данных в систему
  5. Особенность 1 • Получение статуса extension-а происходит асинхронно • Получение

    статуса может занимать до 20 секунд (первый запуск на iPhone 5S, в extension передано более 1 000 000 номеров)
  6. Особенность 2 Система игнорирует информацию от вашего приложения о номерах,

    которые уже присутствуют в списке контактов пользователя.
  7. (lldb) po error Error Domain = com.apple.CallKit.error.calldirectorymanager Code=4 "(null)" iPhone

    com.apple.CallKit.CallDirectory[1108] <Error>: Cannot add identification phone number 18775555555 since it is equal to the last phone number 18775555555, returning error
  8. (lldb) po error Error Domain = com.apple.CallKit.error.calldirectorymanager Code=5 "(null)" iPhone

    com.apple.CallKit.CallDirectory[1209] <Error>: Cannot add entries since it would exceed maximum allowed entries (2000000), returning error
  9. Правило 4 Количество номеров, которое может быть передано системе в

    рамках одного Call Directory Extension, не должно превышать 2 000 000.
  10. Особенность 4 • Система руководствуется порядком extension- ов в Настройках

    при выводе дополнительной информации при входящем вызове • Если хотя бы один extension блокирует номер, то порядок игнорируется и вызов отклоняется
  11. Особенность 6 Переданные в систему правила работы с номерами применяются

    с задержкой Количество номеров Среднее время на обработку 100 000 3 сек 500 000 15 сек 1 000 000 32 сек 1 500 000 58 сек iPhone 6 Plus iOS 10.1.1 Release build Foreground
  12. Про что нужно знать: 1. При передачи в систему номера

    должны быть отсортированы по возрастанию 2. Номера должны быть представлены в международном формате (E.164) 3. В процессе передачи номера не должны дублироваться 4. Максимальное количество номеров, принимаемое системой от одного Call Directory Extension, - 2 000 000 5. Объем потребляемой памяти одного Call Directory Extension не должен превышать 6 Mb
  13. К чему нужно быть готовым: 1. Система игнорирует информацию от

    Вашего приложения если номер уже есть среди контактов пользователя 2. Время, которое необходимо на получение статуса включения Call Directory Extension, может занимать до 20 сек 3. Поле для вывода дополнительной информации во время вызова ограничено одной строкой. 4. Приоритет выбора дополнительной информации по номеру определяется порядком списка Call Directory Extension в настройках. Блокировка происходит независимо от этого порядка. 5. Неясный порядком отображения нескольких Call Directory Extension для одного приложения 6. Правила работы с номерами применяются системой с задержкой