【问题标题】:how to get the incoming call number by using callkit如何使用callkit获取来电号码
【发布时间】:2016-11-01 01:39:51
【问题描述】:

如何使用呼叫套件框架以编程方式获取来电电话号码。我尝试使用 cxcallobserver 类但没有用。

任何最有帮助的建议...

【问题讨论】:

  • callKit 仍处于测试阶段,没有可用的最终概述,因此请等待最终版本。
  • 嗨 Nitin 使用 callkit 可以吗?如果可能的话,我会等待最终版本。

标签: ios ios10 callkit


【解决方案1】:

使用 CallKit 的呼叫阻止和识别功能(iOS 10 中的新功能)时,要阻止或识别的电话号码会在来电之前由应用的呼叫目录扩展程序加载,并且电话号码由系统存储。然后,当来电到达时,系统会查询此存储的数据,并且可以在来电 UI 中使用提供的标签阻止或识别来电。

出于隐私和性能原因,来电时不会启动 Call Directory 应用扩展程序,并且应用程序扩展程序无法检索来电的电话号码。

【讨论】:

【解决方案2】:

iOS 10 中引入的呼叫目录扩展类似于 iOS 9 中引入的 Safari 内容拦截器扩展。您的扩展必须提供电话号码列表(在 safari 的扩展中,它是一个 json 文件),这些号码将由 iOS 存储,并且在有来电时,系统会检查您的扩展程序提供的列表(就像 safari 在加载网站之前会检查 json 文件指定的规则一样),前提是您的扩展程序在那个时候。

因此,无法使用此功能创建类似应用程序的来电显示,因为事情不是动态的。 此外,您可以在列表中提供的电话号码数量可能有所限制,希望在 iOS 10 版本中公布。

【讨论】:

  • 是否有我可以使用的代码.. 或任何我可以在此找到一些代码的参考!
  • 关于数字限制的任何消息?另外,您是否知道您的扩展程序何时以及多久运行一次以添加新号码?删除之前添加的数字怎么样?
  • @ChrisWagner 到目前为止,开发者网站上没有任何关于限制的说明。为了删除数字,我检索了数据结构中的所有数字,删除了数字,然后再次保存了所有数字。更新的频率也取决于 iOS,但是,您可以使用以下命令强制更新: [[CXCallDirectoryManager sharedInstance] reloadExtensionWithIdentifier:EXTENSION_IDENTIFIER completionHandler:^(NSError * _Nullable error) { //your completetion }];
  • 感谢@ShaggyD,我能够毫无问题地索引超过 6,700 条记录。我还可以确认重新加载有效并且是批发操作,任何以前的索引项目都将在重新加载时被删除。这是有道理的,因为您需要按顺序提供数字。
  • 经过一些实验,我发现被阻止的呼叫条目的最大数量在 2,000,000 左右。很难说这是每个应用程序,还是手机上加载的所有呼叫阻止应用程序的总数。
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
相关资源
最近更新 更多