0

我有以下要求,我需要您的宝贵建议和解决方案。

要求 :

每当我接到一个特定号码的呼叫时,我需要进行 API 调用并获取一些信息,并且需要将其与呼叫者 ID 一起显示为标签文本。

请建议是否可以满足要求,如果可以,请指导我解决方案。

我按照以下步骤操作:

  1. 创建 CallDirectoryExtension 并添加带有一些标签的特定号码。
  2. 打开呼叫识别和阻止
  3. 每当我打电话时 [App Name] 被叫 ID:[Label] 被显示而不是 Unknown。
  4. 为了识别来电,我使用了 CXCallObserver 和 public func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) 方法。
  5. 调用所需的 API 并将数据保存在应用组下的 Userdefaults 中。
  6. 调用 CXCallDirectoryManager.sharedInstance .reloadExtension(withIdentifier: "com.example.Sample.SampleDirectory") 重新执行 CXCallDirectoryProvider 的方法覆盖 func beginRequest(with context: CXCallDirectoryExtensionContext) context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label) 正在执行通过从应用组使用默认值获取新更改的标签。
  7. 但是在呼叫者屏幕中,标签没有得到更新。

当有来电时,请建议我如何更改标签(调用 API 并获取一些详细信息,我将其设置为更新的标签)。

4

1 回答 1

0

CallDirectory Extension 不支持您的请求。相反,必须事先提供您要识别/阻止的所有电话号码,以便操作系统匹配和识别。

这意味着当电话响起时,如果号码与用户的联系人不匹配,则操作系统会查询 CallDirectory 分机。如果phone 已添加,则匹配。

根据我对您的理解,您将获得更新的标签,但对于随后的来电(可能),但绝对不是当前的。

于 2019-01-10T14:09:17.677 回答