如何在 iOS 10 上使用 CallKit 显示来电显示(添加标识条目)

How to display caller id (add identification entry) using CallKit on iOS 10

我在 Xcode 中创建了一个基本的呼叫目录扩展。它附带的示例代码显示了如何阻止 phone 号码或显示有关 phone 号码的信息。这是阻止 phone 号码 22334455 所需的最少代码:

class CallDirectoryHandler: CXCallDirectoryProvider {

    override func beginRequest(with context: CXCallDirectoryExtensionContext) {
        context.delegate = self

        context.addBlockingEntry(withNextSequentialPhoneNumber: 22334455)
        //context.addIdentificationEntry(withNextSequentialPhoneNumber: 22334455, label: "Telemarketer")

        context.completeRequest()
    }
}

extension CallDirectoryHandler: CXCallDirectoryExtensionContextDelegate {
    func requestFailed(for extensionContext: CXCallDirectoryExtensionContext, withError error: Error) { }
}

根据 Xcode 中的示例,使用方法 addIdentificationEntry 而不是 addBlockingEntry 应该同样容易显示呼叫者 ID,但我无法让它工作。

阻止工作正常,但如果我尝试改为显示来电显示,phone 只会显示 phone 号码。它没有显示我尝试添加的文本 "Telemarketer"。

我错过了什么?

答案简单得令人沮丧。

addIdentificationEntry() 需要国家代码,addBlockingEntry() 不需要。

当我在 phone 号码的开头添加 47(挪威的国家/地区代码)时,它起作用了。这是显示挪威 phone 号码 22334455 (+4722334455) 来电显示的工作代码:

class CallDirectoryHandler: CXCallDirectoryProvider {

  override func beginRequest(with context: CXCallDirectoryExtensionContext) {
    context.delegate = self

    context.addIdentificationEntry(withNextSequentialPhoneNumber: 4722334455, label: "Telemarketer")

    context.completeRequest()
  }
}

addBlockingEntry() 使用 22334455 和 4722334455 作为输入。