如何使用呼叫目录分机在我的应用程序中识别来电?

我正在致力于callKit框架,我发现通过使用call directory扩展,我们可以识别传入的电话号码。 我的问题是如何在iOS应用中实现呼叫目录扩展以识别来电详细信息。 我在Objective C中工作

让一个数字“+ 919876xxxxx”使用此方法添加到呼叫目录扩展中:

- (BOOL)addIdentificationPhoneNumbersToContext:(CXCallDirectoryExtensionContext *)context { // Numbers must be provided in numerically ascending order. CXCallDirectoryPhoneNumber phoneNumbers[] = {+919876xxxxx}; NSArray<NSString *> *labels = @[ @"Telemarketer"]; NSUInteger count = (sizeof(phoneNumbers) / sizeof(CXCallDirectoryPhoneNumber)); for (NSUInteger i = 0; i < count; i += 1) { CXCallDirectoryPhoneNumber phoneNumber = phoneNumbers[i]; NSString *label = labels[i]; [context addIdentificationEntryWithNextSequentialPhoneNumber:phoneNumber label:label]; } return YES; } 

而我在电话设置中的呼叫阻止和识别function。 当我从这个号码呼叫时,显示[应用名称]来电显示:电话推销员。

我的问题是我怎样才能知道这个数字在我的应用程序,所以我在表中显示这个数字。

提前致谢。

如果这个问题不是如何写一个呼叫目录扩展名,而是如何获得一个来电号码,我认为这是什么问题,那么它是不可能的。

有来电时不涉及通话目录分机。 它所做的只是将注册号存储在手机应用专用的内部SQL数据库中。 当有来电时,呼叫目录扩展程序不会运行,因此它和您的应用程序无法识别来电号码,这与以往一样,它在iOS 10中没有更改。

在iOS 10中添加了Voip应用程序的呼叫检测function,但如果您不是voip应用程序,则仍然无法获得呼入(或呼出)呼叫的号码。

首先,您需要在应用设置中启用您的CallBlocker应用程序,

进入设置 – >手机 – >呼叫阻止和识别 – >启用您的应用程序。

之后使用addIdentificationEntry添加条目

  private func addIdentificationPhoneNumbers(to context: CXCallDirectoryExtensionContext) throws { let phoneNumbers: [CXCallDirectoryPhoneNumber] = [ 18775555555, +919899999999 ] let labels = [ "Telemarketer", "Local business" ] for (phoneNumber, label) in zip(phoneNumbers, labels) { context.addIdentificationEntry(withNextSequentialPhoneNumber: phoneNumber, label: label) } } 

哪个在Xcode 8.x swift 3.x中工作正常