【问题标题】:How does the Call Directory Extension in iOS get updatediOS 中的呼叫目录扩展如何更新
【发布时间】:2018-07-22 01:49:20
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: ios directory callkit


    【解决方案1】:

    只要用户从来电显示设置打开扩展程序,就会加载该扩展程序。您也可以使用CXCallDirectoryManagerreloadExtension 方法手动重新加载它。

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

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

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

    【讨论】:

    • 谢谢!所以理论上,我可以下载数据,使用 CXCallDirectoryManager 填充它,从我的本地数据存储中删除数据,所有的名字和电话号码对于任何可能试图从内部工作中获取它们的人来说都是“遥不可及”的iOS的?听起来有点疯狂,但我要下载 1,500 个电话号码,我不希望人们全部拥有这些电话号码,但如果列表中有人打电话给他们,我希望他们不知道是谁。
    • 您应该能够做到这一点,但是一个坚定的攻击者可能只会拦截网络流量。您将需要您的主应用程序检查附加电话信息的启用状态并删除数据/如果禁用则不下载它
    • 下面还有一个问题:reloadExtension 会重置之前的数据吗?
    • 这取决于您在扩展中实现的内容。如果要developer.apple.com/documentation/callkit/…,则需要显式删除条目
    猜你喜欢
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多