iOS 中的 Call Directory Extension 如何更新

How does the Call Directory Extension in iOS get updated

我有一个正在开发的应用程序,我想使用 CallKit 的呼叫目录扩展存储几千个 phone 号码。

我感到困惑的是,扩展程序是如何以及何时被调用的?似乎并不是每次 phone 调用都会发生这种情况。每当应用程序启动时都会发生吗?

我问的原因是,我不想在我的应用程序中保留数以千计的 phone 号码。我不希望用户看到这些 phone 号码(当然,除非他们接到其中一个号码的电话)。所以,我想做的是使用扩展保存 phone 号码一次,号码从网络服务加载,但只是定期。

谢谢!

只要用户从来电显示设置中打开分机,就会加载该分机。您也可以使用 CXCallDirectoryManager.

reloadExtension 方法手动重新加载它

您需要使用应用组在主应用和扩展程序之间共享数据。

您的主应用负责定期获取数据(使用您喜欢的任何方法;例如由用户手动触发或后台获取)并更新共享数据库。然后调用 CXCallDirectoryManager.sharedInstance.reloadExtension(withIdentifier:completionHandler:) 重新加载扩展。 identifier 是您的 CallKit 扩展的字符串包 ID。

扩展只需要从共享数据库中检索所有数据并将其注册到 CXCallDirectoryExtensionContext