2016-09-20 38 views
1

我已经在Xcode中创建了一个基本的呼叫目录扩展。随附的示例代码显示了如何阻止电话号码或显示有关电话号码的信息。这里是阻止电话号码22334455代码的最低限度要求:如何使用iOS 10上的CallKit显示呼叫者ID(添加标识条目)

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,手机只显示电话号码。它不显示我尝试添加的文本“电话推销员”。

我缺少什么?

回答

0

答案令人沮丧地简单。

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

当我将47(挪威的国家代码)添加到电话号码的开头时,它就起作用了。这里是工作的代码显示呼叫者ID挪威电话号码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输入工作。

+0

有没有办法获得当前正在呼叫的电话号码,而不是将所有已知的号码和标签放入beginRequest呼叫中? – Steve

+0

我不确定,我想知道我自己。我的计划是有成千上万的号码,所以我希望可以以某种方式按计划填充CallDirectory,而不是在电话铃声响起时。 –

+0

我也是 - 我的计划是添加大约50,000个数字 - 也许我可以简单地添加一个数据库查询,然后我必须添加'em全部 – Steve