Как обновляется расширение каталога вызовов в iOS

У меня есть приложение, которое я разрабатываю, и я хочу сохранить несколько тысяч телефонных номеров, используя расширение каталога вызовов CallKit.

Что меня смущает, так это то, как и когда вызывается расширение? Не похоже, что это происходит с каждым телефонным звонком. Это происходит при каждом запуске приложения?

Причина, по которой я спрашиваю, заключается в том, что я не хочу хранить тысячи телефонных номеров в своем приложении. Я не хочу, чтобы пользователь видел эти телефонные номера (если, конечно, им не позвонят с одного из них). Итак, что я хочу сделать, так это сохранить телефонные номера с помощью расширения один раз, с номерами, загружаемыми из веб-службы, но только периодически.

Благодарю вас!


person Danny Ackerman    schedule 22.07.2018    source источник


Ответы (1)


Расширение будет загружаться всякий раз, когда пользователь включает его в настройках идентификатора вызывающего абонента. Вы также можете перезагрузить его вручную, используя метод reloadExtension из CXCallDirectoryManager.

Вам необходимо обмениваться данными между вашим основным приложением и расширением с помощью группы приложений.

Ваше основное приложение отвечает за периодическую выборку данных (используя любой метод, который вам нравится; например, ручной запуск пользователем или фоновую выборку) и обновление общей базы данных. Затем он вызывает CXCallDirectoryManager.sharedInstance.reloadExtension(withIdentifier:completionHandler:) для перезагрузки расширения. identifier – это идентификатор пакета строк вашего расширения CallKit.

Расширению просто нужно получить все данные из общей базы данных и зарегистрировать их в CXCallDirectoryExtensionContext

person Paulw11    schedule 22.07.2018
comment
Спасибо! Так что теоретически я могу загрузить данные, заполнить их с помощью CXCallDirectoryManager, стереть данные из моего локального хранилища данных, и все имена и номера телефонов будут недоступны для любого, кто попытается получить их из внутренней работы iOS. ? Звучит немного безумно, но я собираюсь загрузить 1500 телефонных номеров, которые я не хочу, чтобы люди знали целиком, но если кто-то из списка позвонит им, я хочу, чтобы они не знали, кто это. - person Danny Ackerman; 22.07.2018
comment
Вы должны быть в состоянии сделать это, однако решительный злоумышленник, вероятно, просто перехватит сетевой трафик. Вам понадобится ваше основное приложение, чтобы проверить включенный статус расширения вызова и удалить данные / не загружать его, если оно отключено. - person Paulw11; 22.07.2018
comment
Еще один следующий вопрос: reloadExtension сбрасывает предыдущие данные? - person ofer2980; 16.09.2020
comment
Это зависит от того, что вы реализуете в своем расширении. Вам необходимо явно удалить записи, если вы хотите developer.apple.com/documentation /коллкит/ - person Paulw11; 16.09.2020