【发布时间】:2018-07-22 01:49:20
【问题描述】:
我有一个正在开发的应用程序,我想使用 CallKit 的呼叫目录扩展来存储几千个电话号码。
我感到困惑的是,扩展程序是如何以及何时被调用的?似乎不是每个电话都会发生这种情况。每次启动应用都会发生这种情况吗?
我问的原因是,我不想在我的应用中保留数千个电话号码。我不希望用户看到这些电话号码(当然,除非他们接到其中一个电话)。所以,我想做的是使用分机保存电话号码一次,从网络服务加载号码,但只是定期。
谢谢!
【问题讨论】:
我有一个正在开发的应用程序,我想使用 CallKit 的呼叫目录扩展来存储几千个电话号码。
我感到困惑的是,扩展程序是如何以及何时被调用的?似乎不是每个电话都会发生这种情况。每次启动应用都会发生这种情况吗?
我问的原因是,我不想在我的应用中保留数千个电话号码。我不希望用户看到这些电话号码(当然,除非他们接到其中一个电话)。所以,我想做的是使用分机保存电话号码一次,从网络服务加载号码,但只是定期。
谢谢!
【问题讨论】:
只要用户从来电显示设置打开扩展程序,就会加载该扩展程序。您也可以使用CXCallDirectoryManager 的reloadExtension 方法手动重新加载它。
您需要使用应用组在主应用和扩展程序之间共享数据。
您的主应用负责定期获取数据(使用您喜欢的任何方法;例如由用户手动触发或后台获取)并更新共享数据库。然后它调用CXCallDirectoryManager.sharedInstance.reloadExtension(withIdentifier:completionHandler:) 重新加载扩展。 identifier 是您的 CallKit 扩展的字符串捆绑 ID。
扩展只需要从共享数据库中检索所有数据并将其注册到CXCallDirectoryExtensionContext
【讨论】: